[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] How to implement getElementById() with Xerces using XML Schema?
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. 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??? Heres the XML- and Schema-code which I tried. Any help is welcome. The XML file: ------------- <?xml version="1.0" encoding="UTF-8"?> <katalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="catalog.xsd"> <book id="123"> <author>Steven King</author> </book> <book id="124"> <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:NMTOKEN" 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>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|