DeferredDocumentTypeImplpublic class DeferredDocumentTypeImpl extends DocumentTypeImpl implements DeferredNodeThis class represents a Document Type declaraction in
the document itself, not a Document Type Definition (DTD).
An XML document may (or may not) have such a reference.
DocumentType is an Extended DOM feature, used in XML documents but
not in HTML.
Note that Entities and Notations are no longer children of the
DocumentType, but are parentless nodes hung only in their
appropriate NamedNodeMaps.
This area is UNDERSPECIFIED IN REC-DOM-Level-1-19981001
Most notably, absolutely no provision was made for storing
and using Element and Attribute information. Nor was the linkage
between Entities and Entity References nailed down solidly. |
Fields Summary |
---|
static final long | serialVersionUIDSerialization version. | protected transient int | fNodeIndexNode index. |
Constructors Summary |
---|
DeferredDocumentTypeImpl(DeferredDocumentImpl ownerDocument, int nodeIndex)This is the deferred constructor. Only the fNodeIndex is given here.
All other data, can be requested from the ownerDocument via the index.
//
// Constructors
//
super(ownerDocument, null);
fNodeIndex = nodeIndex;
needsSyncData(true);
needsSyncChildren(true);
|
Methods Summary |
---|
public int | getNodeIndex()Returns the node index.
return fNodeIndex;
| protected void | synchronizeChildren()Synchronizes the entities, notations, and elements.
// we don't want to generate any event for this so turn them off
boolean orig = ownerDocument().getMutationEvents();
ownerDocument().setMutationEvents(false);
// no need to synchronize again
needsSyncChildren(false);
// create new node maps
DeferredDocumentImpl ownerDocument =
(DeferredDocumentImpl)this.ownerDocument;
entities = new NamedNodeMapImpl(this);
notations = new NamedNodeMapImpl(this);
elements = new NamedNodeMapImpl(this);
// fill node maps
DeferredNode last = null;
for (int index = ownerDocument.getLastChild(fNodeIndex);
index != -1;
index = ownerDocument.getPrevSibling(index)) {
DeferredNode node = ownerDocument.getNodeObject(index);
int type = node.getNodeType();
switch (type) {
// internal, external, and unparsed entities
case Node.ENTITY_NODE: {
entities.setNamedItem(node);
break;
}
// notations
case Node.NOTATION_NODE: {
notations.setNamedItem(node);
break;
}
// element definitions
case NodeImpl.ELEMENT_DEFINITION_NODE: {
elements.setNamedItem(node);
break;
}
// elements
case Node.ELEMENT_NODE: {
if (((DocumentImpl)getOwnerDocument()).allowGrammarAccess){
insertBefore(node, last);
last = node;
break;
}
}
// NOTE: Should never get here! -Ac
default: {
System.out.println("DeferredDocumentTypeImpl" +
"#synchronizeInfo: " +
"node.getNodeType() = " +
node.getNodeType() +
", class = " +
node.getClass().getName());
}
}
}
// set mutation events flag back to its original value
ownerDocument().setMutationEvents(orig);
// set entities and notations read_only per DOM spec
setReadOnly(true, false);
| protected void | synchronizeData()Synchronizes the data (name and value) for fast nodes.
// no need to sync in the future
needsSyncData(false);
// fluff data
DeferredDocumentImpl ownerDocument =
(DeferredDocumentImpl)this.ownerDocument;
name = ownerDocument.getNodeName(fNodeIndex);
// public and system ids
publicID = ownerDocument.getNodeValue(fNodeIndex);
systemID = ownerDocument.getNodeURI(fNodeIndex);
int extraDataIndex = ownerDocument.getNodeExtra(fNodeIndex);
internalSubset = ownerDocument.getNodeValue(extraDataIndex);
|
|