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
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php