net.sf.saxon.value
Class QNameValue

java.lang.Object
  extended bynet.sf.saxon.value.Value
      extended bynet.sf.saxon.value.AtomicValue
          extended bynet.sf.saxon.value.QNameValue
All Implemented Interfaces:
Expression, Item, java.io.Serializable, ValueRepresentation
Direct Known Subclasses:
NotationValue

public class QNameValue
extends AtomicValue

A QName value. This implements the so-called "triples proposal", in which the prefix is retained as part of the value. The prefix is not used in any operation on a QName other than conversion of the QName to a string.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class net.sf.saxon.value.Value
EMPTY_CLASS_ARRAY
 
Fields inherited from interface net.sf.saxon.om.ValueRepresentation
EMPTY_VALUE_ARRAY
 
Fields inherited from interface net.sf.saxon.expr.Expression
EVALUATE_METHOD, ITERATE_METHOD, PROCESS_METHOD
 
Constructor Summary
QNameValue(NamePool namePool, int nameCode)
          Constructor
QNameValue(java.lang.String prefix, java.lang.String uri, java.lang.String localName, NameChecker checker)
          Constructor.
 
Method Summary
 int allocateNameCode(NamePool pool)
          Allocate a nameCode for this QName in the NamePool
static AtomicValue castToQName(StringValue operand, AtomicType targetType, StaticContext env)
          Create a QName value (possibly a DerivedAtomicValue derived from QName) from a string literal, given a namespace context
 AtomicValue convertPrimitive(BuiltInAtomicType requiredType, boolean validate, XPathContext context)
          Convert to target data type
 java.lang.Object convertToJava(java.lang.Class target, XPathContext context)
          Convert to Java object (for passing to external functions)
 boolean equals(java.lang.Object other)
          Determine if two QName values are equal.
 java.lang.String getClarkName()
          Get the name in Clark notation, that is {uri}local
 AtomicValue getComponent(int part)
          Get a component.
 ItemType getItemType(TypeHierarchy th)
          Return the type of the expression
 java.lang.String getLocalName()
          Get the local part
 java.lang.String getNamespaceURI()
          Get the namespace part (null means no namespace)
 java.lang.String getPrefix()
          Get the prefix
 java.lang.String getStringValue()
          Get the string value as a String.
 int hashCode()
          Return a hash code to support the equals() function
 java.lang.Object makeQName(Configuration config)
          Temporary method to construct a javax.xml.namespace.QName without actually mentioning it by name (because the class is not available in JDK 1.4)
 java.lang.String toString()
          The toString() method returns the name in the form QName("uri", "local")
 
Methods inherited from class net.sf.saxon.value.AtomicValue
checkPermittedContents, convert, convert, display, effectiveBooleanValue, evaluateAsString, evaluateItem, getCardinality, getImplementationMethod, getLength, getPrimitiveValue, getStringValueCS, getTypedValue, hasBuiltInType, iterate, process, schemaEquals
 
Methods inherited from class net.sf.saxon.value.Value
asItem, asIterator, asValue, collapseWhitespace, convert, convertJavaObjectToXPath, getDependencies, getIterator, getParentExpression, getSpecialProperties, itemAt, iterateSubExpressions, makeQNameValue, normalizeWhitespace, optimize, promote, reduce, simplify, stringToNumber, trimWhitespace, typeCheck
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

QNameValue

public QNameValue(NamePool namePool,
                  int nameCode)
Constructor

Parameters:
namePool - The name pool containing the specified name code
nameCode - The name code identifying this name in the name pool

QNameValue

public QNameValue(java.lang.String prefix,
                  java.lang.String uri,
                  java.lang.String localName,
                  NameChecker checker)
           throws XPathException
Constructor. This constructor validates that the local part is a valid NCName.

Parameters:
prefix - The prefix part of the QName (not used in comparisons). Use null or "" to represent the default prefix.
uri - The namespace part of the QName. Use null or "" to represent the null namespace.
localName - The local part of the QName
checker - NameChecker used to check the name against XML 1.0 or XML 1.1 rules. Supply null if the name does not need to be checked (the caller asserts that it is known to be valid)
Method Detail

castToQName

public static AtomicValue castToQName(StringValue operand,
                                      AtomicType targetType,
                                      StaticContext env)
                               throws XPathException
Create a QName value (possibly a DerivedAtomicValue derived from QName) from a string literal, given a namespace context

Parameters:
operand - the input string
targetType - the type required: QName, or a type derived from QName or NOTATION
env - the static context, including the namespace context
Returns:
the value after conversion
Throws:
XPathException - if the name is lexically invalid or uses an undeclared prefix

getStringValue

public java.lang.String getStringValue()
Get the string value as a String. Returns the QName as a lexical QName, retaining the original prefix if available.

Specified by:
getStringValue in interface Item
Specified by:
getStringValue in class AtomicValue

getClarkName

public java.lang.String getClarkName()
Get the name in Clark notation, that is {uri}local


getLocalName

public java.lang.String getLocalName()
Get the local part


getNamespaceURI

public java.lang.String getNamespaceURI()
Get the namespace part (null means no namespace)


getPrefix

public java.lang.String getPrefix()
Get the prefix


allocateNameCode

public int allocateNameCode(NamePool pool)
Allocate a nameCode for this QName in the NamePool

Parameters:
pool - the NamePool to be used
Returns:
the allocated nameCode

getComponent

public AtomicValue getComponent(int part)
Get a component. Returns a zero-length string if the namespace-uri component is requested and is not present.

Overrides:
getComponent in class AtomicValue
Parameters:
part - either Component.LOCALNAME or Component.NAMESPACE indicating which component of the value is required
Returns:
either the local name or the namespace URI, in each case as a StringValue

convertPrimitive

public AtomicValue convertPrimitive(BuiltInAtomicType requiredType,
                                    boolean validate,
                                    XPathContext context)
Convert to target data type

Specified by:
convertPrimitive in class AtomicValue
Parameters:
requiredType - an integer identifying the required atomic type
context -
validate - true if validation is required. If set to false, the caller guarantees that the value is valid for the target data type, and that further validation is therefore not required. Note that a validation failure may be reported even if validation was not requested.
Returns:
an AtomicValue, a value of the required type; or an ErrorValue

getItemType

public ItemType getItemType(TypeHierarchy th)
Return the type of the expression

Specified by:
getItemType in interface Expression
Overrides:
getItemType in class Value
Parameters:
th -
Returns:
Type.QNAME (always)

equals

public boolean equals(java.lang.Object other)
Determine if two QName values are equal. This comparison ignores the prefix part of the value.

Overrides:
equals in class Value
Throws:
java.lang.ClassCastException - if they are not comparable
java.lang.IllegalStateException - if the two QNames are in different name pools

hashCode

public int hashCode()
Description copied from class: Value
Return a hash code to support the equals() function

Overrides:
hashCode in class Value

convertToJava

public java.lang.Object convertToJava(java.lang.Class target,
                                      XPathContext context)
                               throws XPathException
Convert to Java object (for passing to external functions)

Overrides:
convertToJava in class Value
Throws:
XPathException

toString

public java.lang.String toString()
The toString() method returns the name in the form QName("uri", "local")

Overrides:
toString in class AtomicValue
Returns:
the name in in the form QName("uri", "local")

makeQName

public java.lang.Object makeQName(Configuration config)
Temporary method to construct a javax.xml.namespace.QName without actually mentioning it by name (because the class is not available in JDK 1.4)