Book HomeSAX2Search this book

B.5. Attribute Information Items

The Attribute Information Items are the contents of the [attributes] property in the element information item. Although the attributes are presented in an order through the Attributes class, there is no expectation that this order reflects an order in the document or its DTD.

   

Property

Callbacks

Explanation

[namespace name]

Attributes.getURI()

[local name]

Attributes.getLocalName()

[prefix]

Attributes.getQName() (when available)

The QName (namespace-prefixed name) includes any prefix available; for example, a QName xhtml:href uses the prefix xhtml.

[normalized value]

Attributes.getValue()

If you're generating a stream of Infoset data programmatically, don't forget to normalize these values correctly. The XML specification explains how to normalize this text; it mostly translates whitespace (but not character references) into space characters and eliminates unneeded spaces for values that aren't CDATA.

[specified]

unavailable

SAX2 does not distinguish between attribute values that were specified in document text and those that have been defaulted from a DTD. It's likely that an upcoming extension API will provide this information.

[attribute type]

Attributes.getType(), DeclHandler.attributeDecl()

For most types of attribute, getType() gives all the type data needed, but you may want to distinguish types that are actual CDATA versus (invalid) ones that just look like CDATA because the attribute was not declared.

Attribute values that are constrained to an enumerated set are reported with special syntax in attributeDecl() callbacks. Enumerations use a parenthesized syntax, like (true|false), to enumerate all possibilities. NOTATION enumerations prepend the string "NOTATION " (with a space) to that syntax.

[references]

For NOTATION type values, see the section on Notation Information Items. For ENTITY or ENTITIES type values, see the section on Unparsed Entity Information Items. For IDREF or IDREFS type values, applications must track attributes by using the [attribute type] IDs reported as keys to application-specific representations of elements, and they must be ready to handle forward references. (ENTITIES and IDREFS values must be tokenized by the application.)

[owner element]

Attributes are associated with the element signified by the startElement() call providing the Attributes object.

Note that DOM extends this information item to expose entities (expanded or not) within attribute values. That is not widely believed to be a useful feature. Since SAX doesn't extend the Infoset in that way, you can't implement that part of DOM using pure SAX.



Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.