## net.sf.saxon.value
Class QNameValue

    java.lang.Object
      net.sf.saxon.value.Value
          net.sf.saxon.value.AtomicValue
              net.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
`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