According to the Xerces Java API it should be possible to search an entire DOM-Document for an Element with a specific ID using getElementById( String elementId ).
The documentation states that I have to tell the DOM-Implementation what the name of the id-Attribute is. Either by use of a DTD or a XML Schema. If I use a DTD to specify my id-attribute and assign it to my XML file, getElementById() returns an object of type Element. If I use a XML Schema I get 'null' instead. I tried Xerces 2.0.1 and 2.0.2 . The FAQ-Page of the Apache-Group says about Xerces: "According to the XML Schema specification, an instance document might have more than one validation root and ID/IDREFS must be unique only within the context of a particular validation root, meaning that a document may potentially contain multiple identical ids. In this case, the output of getElementById() is unspecified. On the other hand, if the document root is a validation root of the document, getElementById() should work as expected." http://xml.apache.org/xerces2-j/faq-general.html#faq-5 Haeh??? Question: How do I have to change my XML-Schema or Java-code to be able to use getElementById() in combination with a XML-Schema? Here is the XML- and Schema-code which I tried. Any help is welcome. he XML-File: ------------- <?xml version="1.0" encoding="UTF-8"?> <katalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="katalog.xsd"> <book id="abc123"> <author>Steven King</author> </book> <book id="abc124"> <author>Tom Clancy</author> </book> </katalog> The XML Schema: --------------- <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="katalog"> <xs:complexType> <xs:sequence> <xs:element name="book" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="author" type="xs:string"/> </xs:sequence> <xs:attribute name="id" type="xs:ID" use="required"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:key name="schluessel"> <xs:selector xpath=".//book"/> <xs:field xpath="@id"/> </xs:key> </xs:element> </xs:schema> H.-Gerd --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
