OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   How to implement getElementById() with Xerces using XML Schema?

[ Lists Home | Date Index | Thread Index ]

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>





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS