• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

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

 
Greenhorn
Posts: 24
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
According to the Xerces Java API (Release 2.0.1)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("123") returns an object of type Element. So far, so good... If I use a XML Schema I get 'null' instead of the expected Element.
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???
How do I have to change my XML-Schema to get an Element instead of 'null' by use of getElementById()?
Here is the XML- and Schema-code which I tried. Any help is welcome!
H.-Gerd Rosarius

The XML file:
-------------

The XML Schema:
---------------

[ August 27, 2002: Message edited by: Gerd Rosarius ]
 
Gerd Rosarius
Greenhorn
Posts: 24
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Well I found the solution by my own. (Ok, ok, with a little help of a nice lady from IBM Toronto ).
Here it is:
You need to turn on both validation and schema validation features on, otherwise the getElementById() would not work correctly.
You can do that by adding the following Java code to your parser before you use the parse() method:
parser.setFeature("http://xml.org/sax/features/validation", true);
parser.setFeature("http://apache.org/xml/features/validation/schema", true);
Voil�
H.-Gerd Rosarius
 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic