Re: Schema-type-aware SAX processing
Christopher R. Maden wrote: > I have data that may be arbitrarily large and may conform to arbitrary > XSDL schemata. Because of the size, I want to process the document as an > event stream (hence SAX), and I want to make different processing > decisions based on the declared types from the schema and based on the > ultimate base types, if there's any type inheritance. > > What's the right tool? Perl is the language of choice, but I'm flexible. > > I've looked at libxml2 (and XML::LibXML), Xerces-C++ (and > Xerces-p/XML::Xerces), and XSV. They are all focused on validation; the > document is checked as to whether it fulfills the schema, but there does > not seem to be a straightforward way to say, "Hi. I'm an element. What > type am I?" > > What am I missing? The problem is that the type of an element may depend on its context, not just on its name, namespace, etc. Because of this ontological component, type and validation are related, and it is not (deterministically) possible to decide the type of an element at the point it is referenced during SAX processing. Consider: type a = element with name "x" type b = element with name "x" type c = element with name "y", with 2 children, types (a, b) type d = element with name "y", with 1 child, type b incoming SAX stream: startElement with name "y", startElement with name "x" What type is the first element? What type is the second element? It may be necessary to wait for some time, possibly until the entire document has been processed, in order to determine the context and therefore the type of any element in the document. -- Chris Burdess
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