DomDocument::GetElementById - a workaround with external DTD

From: Date: Sat, 19 Nov 2005 06:05:37 +0000
Subject: DomDocument::GetElementById - a workaround with external DTD
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-226115@lists.php.net to get a copy of this message
Have tried the following code: <?php // Creates an instance of the DOMImplementation class $oDomImp = new DOMImplementation; // Creates a DOMDocumentType instance $oDomDtd = $oDomImp->createDocumentType('Document', '', 'D:/CMAES/Src/dbtree.dtd'); // Creates a DOMDocument instance $oDom = $oDomImp->createDocument("", "Document", $oDomDtd); // Set other properties $oDom->encoding = 'iso-8859-1'; $oElement = $oDom->createElement('CMAES_Model_DbSection', 'test'); $oElement->setAttribute('S_iSectionId', '123'); // Append the element $oDom->documentElement->appendChild($oElement); // Retrieve and print the document echo $oDom->saveXML() . "\n\n"; // Do validation var_dump($oDom->validate()); // Type node name echo "TagName: " . $oDom->getElementById('123')->tagName; ?> Using the following DTD as an external file: <!ELEMENT Document ANY> <!ELEMENT CMAES_Model_DbSection ANY> <!ATTLIST CMAES_Model_DbEntry E_iEntryId ID #REQUIRED> The result is the following: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE Document SYSTEM "D:/CMAES/Src/dbtree.dtd"> <Document><CMAES_Model_DbSection S_iSectionId="123">test</CMAES_Model_DbSection></Document> Warning: Syntax of value for attribute S_iSectionId of CMAES_Model_DbSection is not valid in <script on line 23 bool(false) TagName: CMAES_Model_DbSection Now I have some (for me) strange DTD failure due to the error "syntax of value for attribute S_iSectionId of CMAES_Model_DbSection is not valid". I cannot understand that error. I have missed something, but what?

« previous php.general (#226115) next »