Re: How to build a XML DTD on "the fly"?

From: Date: Sat, 19 Nov 2005 05:47:25 +0000
Subject: Re: How to build a XML DTD on "the fly"?
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-226113@lists.php.net to get a copy of this message
I saw this example on http://blog.bitflux.ch/wiki/GetElementById_Pitfalls and thought that I could create the DTD in the XML file. $xml ='<?xml version="1.0"?> <!DOCTYPE foo [ <!ATTLIST bar
    id ID #IMPLIED
]> <foo>
    <bar id="myId"/>
</foo>'; $dom = new DomDocument(); $dom->loadXML($xml); print $dom->getElementById('myId')->nodeName; But apparently, that is not the case. /Erik James Benson wrote:
Learn DTD and how it works first then you will know :-) A DTD is contained in an external file and not in XML, so you would create a DTD file then link it from the XML like so, <!DOCTYPE document SYSTEM "document.dtd"> Erik Franzén wrote:
The code below lacks the part where the folling DTD attribute is created: <!ATTLIST document id ID #IMPLIED> How can I create the above DTD attribute in the code below? <?php // Creates an instance of the DOMImplementation class $oDomImp = new DOMImplementation; // Creates a DOMDocumentType instance $oDomDtd = $oDomImp->createDocumentType('document', null, null); // Creates a DOMDocument instance $oDom = $oDomImp->createDocument("", "", $oDomDtd); // Set other properties $oDom->encoding = 'iso-8859-1'; $oDom->standalone = true; // Create an empty element $oElement = $oDom->createElement('document', 'test'); $oElement->setAttribute('id', '123'); // Append the element $oDom->appendChild($oElement); // Retrieve and print the document echo $oDom->saveXML() . "\n"; echo "TagName: " . $oDom->getElementById('123')->tagName; ?> Now the code produces the following result: <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <!DOCTYPE document> <document id="123">test</document> TagName: Thanks /Erik


« previous php.general (#226113) next »