Class QNameValue

All Implemented Interfaces:
Serializable, Expression, Item, 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:
  • Constructor Details

    • 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(String prefix, String uri, 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. Note that the prefix is not checked for lexical correctness, because in most cases it will already have been matched against in-scope namespaces. Where necessary the caller must check the 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)
      Throws:
      XPathException
  • Method Details

    • makeQName

      public static AtomicValue makeQName(String prefix, String uri, String local, AtomicType targetType, CharSequence lexicalForm, TypeHierarchy th) throws XPathException
      Throws:
      XPathException
    • getStringValue

      public 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 interface ValueRepresentation
      Specified by:
      getStringValue in class AtomicValue
      Returns:
      the string value of the item
      See Also:
    • getClarkName

      public String getClarkName()
      Get the name in Clark notation, that is {uri}local
    • getLocalName

      public String getLocalName()
      Get the local part
    • getNamespaceURI

      public String getNamespaceURI()
      Get the namespace part (null means no namespace)
    • getPrefix

      public 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
      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.
      context -
      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(Object other)
      Determine if two QName values are equal. This comparison ignores the prefix part of the value.
      Overrides:
      equals in class Value
      Throws:
      ClassCastException - if they are not comparable
      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 Object convertToJava(Class target, XPathContext context) throws XPathException
      Convert to Java object (for passing to external functions)
      Overrides:
      convertToJava in class Value
      Throws:
      XPathException
    • toString

      public 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 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)