public class DocumentWrapper extends DOMNodeWrapper implements DocumentInfo
Because the DOM is not thread-safe even when reading, and because Saxon-EE can spawn multiple threads that access the same input tree, all methods that invoke DOM methods are synchronized on the DocumentWrapper object. (This still relies on the user not allocating two DocumentWrappers around the same DOM).
Modifier and Type | Field and Description |
---|---|
protected String |
baseURI |
protected Configuration |
config |
protected long |
documentNumber |
protected boolean |
domLevel3 |
docWrapper, index, node, nodeKind, span
ALL_NAMESPACES, IS_DTD_TYPE, IS_NILLED, LOCAL_NAMESPACES, NO_NAMESPACES
Constructor and Description |
---|
DocumentWrapper(Node doc,
String baseURI,
Configuration config)
Wrap a DOM Document or DocumentFragment node
|
Modifier and Type | Method and Description |
---|---|
String |
getBaseURI()
Get the Base URI for the node, that is, the URI used for resolving a relative URI contained
in the node.
|
Configuration |
getConfiguration()
Get the configuration previously set using setConfiguration
|
long |
getDocumentNumber()
Get the unique document number
|
int |
getDOMLevel()
Get the level of DOM interface to be used
|
NamePool |
getNamePool()
Get the name pool used for the names in this document
|
SchemaType |
getSchemaType()
Get the type annotation of this node, if any.
|
String |
getSystemId()
Get the System ID for the node.
|
int |
getTypeAnnotation()
Get the type annotation.
|
String[] |
getUnparsedEntity(String name)
Get the unparsed entity with a given name
|
Iterator<String> |
getUnparsedEntityNames()
Get the list of unparsed entities defined in this document
|
Object |
getUserData(String key)
Get user data held in the document node.
|
boolean |
isSameNodeInfo(NodeInfo other)
Determine whether this is the same node as another node.
|
boolean |
isTyped()
Ask whether the document contains any nodes whose type annotation is anything other than
UNTYPED
|
NodeInfo |
selectID(String id,
boolean getParent)
Get the element with a given ID, if any
|
void |
setConfiguration(Configuration config)
Set the Configuration that contains this document
|
void |
setDOMLevel(int level)
Set the level of DOM interface to be used
|
void |
setSystemId(String uri)
Set the system ID.
|
void |
setUserData(String key,
Object value)
Set user data on the document node.
|
DOMNodeWrapper |
wrap(Node node)
Create a wrapper for a node in this document
|
compareOrder, comparePosition, copy, generateId, getAttributeValue, getDeclaredNamespaces, getDisplayName, getDocumentRoot, getFirstChild, getLocalName, getLocalPart, getNameCode, getNextSibling, getNodeKind, getParent, getPrefix, getPreviousSibling, getRoot, getSiblingPosition, getStringValueCS, getSuccessorElement, getUnderlyingNode, getURI, hasChildNodes, isId, iterateAttributes, iterateChildren, iterateDescendants, iterateSiblings, makeWrapper, makeWrapper
atomize, equals, getColumnNumber, getFingerprint, getLineNumber, getRealNode, getStringValue, hashCode, head, isIdref, isNilled, iterate, iterateAxis, iterateAxis
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
atomize, compareOrder, comparePosition, copy, equals, generateId, getAttributeValue, getColumnNumber, getDeclaredNamespaces, getDisplayName, getDocumentRoot, getFingerprint, getLineNumber, getLocalPart, getNameCode, getNodeKind, getParent, getPrefix, getRoot, getStringValue, getURI, hasChildNodes, hashCode, isId, isIdref, isNilled, iterateAxis, iterateAxis
getStringValueCS, head
protected Configuration config
protected String baseURI
protected long documentNumber
protected boolean domLevel3
public DocumentWrapper(Node doc, String baseURI, Configuration config)
doc
- a DOM Document or DocumentFragment nodebaseURI
- the base URI of the documentconfig
- the Saxon configurationpublic DOMNodeWrapper wrap(Node node)
node
- the DOM node to be wrapped. This must be a node within the document wrapped by this
DocumentWrapperIllegalArgumentException
- if the node is not a descendant of the Document node wrapped by
this DocumentWrapperpublic String getBaseURI()
AbstractNodeWrapper
getBaseURI
in interface NodeInfo
getBaseURI
in class AbstractNodeWrapper
public String getSystemId()
getSystemId
in interface Source
getSystemId
in interface NodeInfo
getSystemId
in class AbstractNodeWrapper
public void setSystemId(String uri)
setSystemId
in interface Source
setSystemId
in class AbstractNodeWrapper
uri
- the system ID.public void setConfiguration(Configuration config)
config
- the Saxon configurationpublic Configuration getConfiguration()
getConfiguration
in interface NodeInfo
getConfiguration
in class AbstractNodeWrapper
public NamePool getNamePool()
getNamePool
in interface NodeInfo
getNamePool
in class AbstractNodeWrapper
public void setDOMLevel(int level)
level
- the DOM level. Must be 2 or 3. By default Saxon assumes that DOM level 3 is available;
this parameter can be set to the value 2 to indicate that Saxon should not use methods unless they
are available in DOM level 2. From Saxon 9.2, this switch remains available, but the use of
DOM level 2 is untested and unsupported.public int getDOMLevel()
public boolean isTyped()
isTyped
in interface DocumentInfo
public long getDocumentNumber()
getDocumentNumber
in interface NodeInfo
getDocumentNumber
in class DOMNodeWrapper
public NodeInfo selectID(String id, boolean getParent)
selectID
in interface DocumentInfo
id
- the required ID valuegetParent
- true if the parent of the element having the given ID value is requiredpublic boolean isSameNodeInfo(NodeInfo other)
isSameNodeInfo
in interface NodeInfo
isSameNodeInfo
in class DOMNodeWrapper
other
- the node to be compared with this nodepublic Iterator<String> getUnparsedEntityNames()
getUnparsedEntityNames
in interface DocumentInfo
public String[] getUnparsedEntity(String name)
getUnparsedEntity
in interface DocumentInfo
name
- the name of the entitypublic int getTypeAnnotation()
getTypeAnnotation
in interface NodeInfo
getTypeAnnotation
in class AbstractNodeWrapper
For elements and attributes, this is the type annotation as defined in XDM. For document nodes, it should be one of XS_UNTYPED if the document has not been validated, or XS_ANY_TYPE if validation has taken place (that is, if any node in the document has an annotation other than Untyped or UntypedAtomic).
public SchemaType getSchemaType()
Types derived from a DTD are not reflected in the result of this method.
getSchemaType
in interface NodeInfo
getSchemaType
in class AbstractNodeWrapper
public void setUserData(String key, Object value)
getUserData(java.lang.String)
setUserData
in interface DocumentInfo
key
- A string giving the name of the property to be set. Clients are responsible
for choosing a key that is likely to be unique. Must not be null. Keys used internally
by Saxon are prefixed "saxon:".value
- The value to be set for the property. May be null, which effectively
removes the existing value for the property.public Object getUserData(String key)
setUserData(java.lang.String, java.lang.Object)
getUserData
in interface DocumentInfo
key
- A string giving the name of the property to be retrieved.Copyright (c) 2004-2014 Saxonica Limited. All rights reserved.