Interface NodeName
- All Superinterfaces:
IdentityComparable
- All Known Implementing Classes:
CodedName
,FingerprintedQName
,NameOfNode
,NoNamespaceName
An important requirement of an implementation of this interface is that the hashCode() and
equals() methods are implemented correctly, so that any two node names compare equal if and only
if the local name and namespace URI parts are equal under Unicode codepoint comparison. To ensure this,
the hashCode must be computed using an algorithm equivalent to that used by the implementation class
FingerprintedQName
This class is used to carry name information for elements and attributes on the Receiver pipeline. An advantage of this is that NodeName can include a fingerprint where this is available, but the fingerprint does not need to be computed if it is not needed. For example, names of nodes constructed by an XSLT stylesheet and sent down an output pipeline to a Serializer will generally not have fingerprints.
Equality comparisons between NodeNames work reasonably well: the comparison can use the fingerprints if available, or the QNames otherwise. However, computing hashCodes is inefficient; it is not possible to take advantage of the fingerprints, because they are not always there. Therefore, using NodeName objects in structures such as maps and sets is generally a bad idea: it's better to use either the StructuredQName or the fingerprint as the key.
-
Method Summary
Modifier and TypeMethodDescriptionGet the display name, that is the lexical QName in the form [prefix:]local-partint
Get the fingerprint of this name if known.Get the local part of the QNameGet aNamespaceBinding
whose (prefix, uri) pair are the prefix and URI of this node nameGet the namespace URI of the node name.Get the prefix of the QName.Get the name in the form of a StructuredQNamedefault String
getURI()
Get the namespace URI of the QName, as a string.boolean
Ask whether this node name representation has a known fingerprintboolean
hasURI
(NamespaceUri ns) Test whether this name is in a given namespaceint
obtainFingerprint
(NamePool namePool) Get the fingerprint of this name, allocating a new code from the namepool if necessaryMethods inherited from interface net.sf.saxon.om.IdentityComparable
identityHashCode, isIdentical
-
Method Details
-
getPrefix
String getPrefix()Get the prefix of the QName.- Returns:
- the prefix. Returns the empty string if the name is unprefixed.
-
getNamespaceUri
NamespaceUri getNamespaceUri()Get the namespace URI of the node name.- Returns:
- the URI. Returns
NamespaceUri.NULL
for nodes that are not in any namespace
-
getURI
Get the namespace URI of the QName, as a string.This method is retained for backwards compatibility, but
getNamespaceUri()
is preferred.- Returns:
- the namespace URI. Returns the zero-length string for nodes that are not in any namespace
-
getLocalPart
String getLocalPart()Get the local part of the QName- Returns:
- the local part of the QName
-
getDisplayName
String getDisplayName()Get the display name, that is the lexical QName in the form [prefix:]local-part- Returns:
- the lexical QName
-
getStructuredQName
StructuredQName getStructuredQName()Get the name in the form of a StructuredQName- Returns:
- the name in the form of a StructuredQName
-
hasURI
Test whether this name is in a given namespace- Parameters:
ns
- the namespace to be tested against- Returns:
- true if the name is in the specified namespace
-
getNamespaceBinding
NamespaceBinding getNamespaceBinding()Get aNamespaceBinding
whose (prefix, uri) pair are the prefix and URI of this node name- Returns:
- the corresponding NamespaceBinding
-
hasFingerprint
boolean hasFingerprint()Ask whether this node name representation has a known fingerprint- Returns:
- true if the method getFingerprint() will return a result other than -1
-
getFingerprint
int getFingerprint()Get the fingerprint of this name if known. This method should not do any work to allocate a fingerprint if none is already available- Returns:
- the fingerprint if known; otherwise -1
-
obtainFingerprint
Get the fingerprint of this name, allocating a new code from the namepool if necessary- Parameters:
namePool
- the NamePool used to allocate the name- Returns:
- a fingerprint for this name, newly allocated if necessary
-