[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: [Q] How should SAX support Namespaces?
Toby Speight scripsit: > David> How should SAX support namespaces? I can think of three > David> options: > > I'd like to add a fourth: define namespace support as a layer above > SAX, which can interface with any SAX parser, and produce output > similar to that of SAX with additional information. Then this > "namespace library" can do one of your proposed actions: I absolutely agree with this. In fact, I think that this simple species of namespace support should be provided as part of the SAX helper library, so that everyone has it readily available. That way, SAX-compliant XML parsers can just do XML and leave namespaces up to common code. > David> 1. Simply ignore them, and require the XML application to do > David> the work (all of the necessary information is passed on by > David> SAX). This corresponds to not using a helper class at all. > David> 2. Use the current interface, but allow namespace-aware SAX > David> processors to prepend namespace URIs to element type and > David> attribute names, as in > David> startElement("urn:www.megginson.com:doc", ...) > David> endElement("urn:www.megginson.com:doc", ...) This corresponds to a helper class that is itself a SAX-compliant parser. Just initialize it with the object representing some other (real) parser, and it decodes namespace PIs and alters the startElement, endElement etc. calls. I must point out, however, that since ":" is valid in URIs it should *not* be used as the separator between URIs and Names, and instead some character not valid in either should be used. Since we are in a Java/Unicode context, I propose '\u2020' DAGGER as the separator: both Arial Sans Unicode and Bitstream Cyberbit have glyphs for it, which assists debugging. > David> 3. Revised org.xml.sax.AttributeList and org.xml.sax.DocumentHandler > David> to include the namespace as a separate (possibly-null) argument: > David> > David> startElement("urn:www.megginson.com", "doc", ...) > David> endElement("urn:www.megginson.com", "doc", ...) And this would be a helper class that exports an interface related to, but different from, the SAX 1.0 interface. > 4. Apply an application-specified re-mapping to the names. So the > above could be initialised with > ns_processor.setPrefix("urn:www.megginson.com", "davids-ns"); > and have its document handler called with > startElement("davids-ns:doc", ...) > endElement("davids-ns:doc", ...) This would be another helper class, also a SAX 1.0 compliant parser. > I don't particularly like (2) above, since it means that different SAX > parsers may return different values for the same document. I don't understand this comment. > I do feel that namespace handling is orthogonal to syntactic parsing > of XML, and that SAX itself should confine itself to the latter. I'm > not sure whether namespace processing should happen between SAX and > the application (layered approach) or separately "at the side" of the > application (application developers' utility class). Layered, layered, says I. Option #2's class would be IMHO the most useful, since you can plug it into an existing SAX-using application with zero changes to the interface, and just start testing for names like "http://purl.oclc.org/NET/xschema\u2020XSchema". -- John Cowan http://www.ccil.org/~cowan cowan@c... You tollerday donsk? N. You tolkatiff scowegian? Nn. You spigotty anglease? Nnn. You phonio saxo? Nnnn. Clear all so! 'Tis a Jute.... (Finnegans Wake 16.5) xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@i... Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ To (un)subscribe, mailto:majordomo@i... the following message; (un)subscribe xml-dev To subscribe to the digests, mailto:majordomo@i... the following message; subscribe xml-dev-digest List coordinator, Henry Rzepa (mailto:rzepa@i...)
|
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
|