Book HomeSAX2

B.7. Unexpanded Entity Reference Information Items

For any nonvalidating XML parser that doesn't read all external entities -- possibly because it was configured not to do so or because it didn't choose to implement that feature -- the XML specification says you need to be able to indicate when an entity that would normally be parsed wasn't actually processed. These unexpanded entities are not the same as "unparsed" entities, although neither kind of entity gets parsed.

The XML Infoset describes some information that can be made available in one of those cases: when the entity was an external general entity. For external parameter entities, the Infoset is silent beyond defining a document information item property to expose whether all declarations have been processed; no declarations are exposed.

Property

Callbacks

Explanation

[name]

Content.skippedEntity(), name parameter

SAX2 makes this callback for all entities that have been skipped, including parameter and internal entities.

[system identifier]

DeclHandler.externalEntityDecl(), systemId parameter

If [all declarations processed] is false, this information may be unavailable. Otherwise, the application must have recorded this information for later use. Note that SAX parsers absolutize this property against the appropriate base URI before reporting it. However, some parsers have a bug here, and don't absolutize this URI.

[public identifier]

DeclHandler.externalEntityDecl(), publicId parameter

If [all declarations processed] is false, this information may be unavailable. Otherwise, the application must have recorded this information for later use.

[declaration base URI]

Locator.getSystemId()

If [all declarations processed] is false, this information may be unavailable. Otherwise, the application must have recorded this information for later use, when this entity was reported through a DeclHandler.externalEntityDecl() callback. (xml:base does not apply.)

[parent]

Applications must keep track of this information item if it is needed.

SAX2 effectively defines new types of information items for internal and external entities. (So does DOM Level 1.) The XML Infoset doesn't expose such entities except for this one case (for external entities), but applications may use those extension information items for other purposes if appropriate.



Library Navigation Links

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