Class QName


  • public class QName
    extends java.lang.Object
    The QName class represents an instance of xs:QName, as defined in the XPath 2.0 data model. Internally, it has three components, a namespace URI, a local name, and a prefix. The prefix is intended to be used only when converting the value back to a string.

    This class also defines a number of QName-valued constants relating to built-in types in XML Schema

    A QName is immutable.

    Note that a QName is not itself an XdmItem in this model; however it can be wrapped in an XdmItem.

    • Field Detail

      • XS_STRING

        public static final QName XS_STRING
        QName denoting the schema type xs:string *
      • XS_BOOLEAN

        public static final QName XS_BOOLEAN
        QName denoting the schema type xs:boolean *
      • XS_DECIMAL

        public static final QName XS_DECIMAL
        QName denoting the schema type xs:decimal *
      • XS_FLOAT

        public static final QName XS_FLOAT
        QName denoting the schema type xs:float *
      • XS_DOUBLE

        public static final QName XS_DOUBLE
        QName denoting the schema type xs:double *
      • XS_DURATION

        public static final QName XS_DURATION
        QName denoting the schema type xs:duration *
      • XS_DATE_TIME

        public static final QName XS_DATE_TIME
        QName denoting the schema type xs:dateTime *
      • XS_TIME

        public static final QName XS_TIME
        QName denoting the schema type xs:time *
      • XS_DATE

        public static final QName XS_DATE
        QName denoting the schema type xs:date *
      • XS_G_YEAR_MONTH

        public static final QName XS_G_YEAR_MONTH
        QName denoting the schema type xs:gYearMonth *
      • XS_G_YEAR

        public static final QName XS_G_YEAR
        QName denoting the schema type xs:gYear *
      • XS_G_MONTH_DAY

        public static final QName XS_G_MONTH_DAY
        QName denoting the schema type xs:gMonthDay *
      • XS_G_DAY

        public static final QName XS_G_DAY
        QName denoting the schema type xs:gDay *
      • XS_G_MONTH

        public static final QName XS_G_MONTH
        QName denoting the schema type xs:gMonth *
      • XS_HEX_BINARY

        public static final QName XS_HEX_BINARY
        QName denoting the schema type xs:hexBinary *
      • XS_BASE64_BINARY

        public static final QName XS_BASE64_BINARY
        QName denoting the schema type xs:base64Binary *
      • XS_ANY_URI

        public static final QName XS_ANY_URI
        QName denoting the schema type xs:anyURI *
      • XS_QNAME

        public static final QName XS_QNAME
        QName denoting the schema type xs:QName *
      • XS_NOTATION

        public static final QName XS_NOTATION
        QName denoting the schema type xs:NOTATION *
      • XS_INTEGER

        public static final QName XS_INTEGER
        QName denoting the schema type xs:integer *
      • XS_NON_POSITIVE_INTEGER

        public static final QName XS_NON_POSITIVE_INTEGER
        QName denoting the schema type xs:nonPositiveInteger *
      • XS_NEGATIVE_INTEGER

        public static final QName XS_NEGATIVE_INTEGER
        QName denoting the schema type xs:negativeInteger *
      • XS_LONG

        public static final QName XS_LONG
        QName denoting the schema type xs:long *
      • XS_INT

        public static final QName XS_INT
        QName denoting the schema type xs:int *
      • XS_SHORT

        public static final QName XS_SHORT
        QName denoting the schema type xs:short *
      • XS_BYTE

        public static final QName XS_BYTE
        QName denoting the schema type xs:byte *
      • XS_NON_NEGATIVE_INTEGER

        public static final QName XS_NON_NEGATIVE_INTEGER
        QName denoting the schema type xs:nonNegativeInteger *
      • XS_POSITIVE_INTEGER

        public static final QName XS_POSITIVE_INTEGER
        QName denoting the schema type xs:positiveInteger *
      • XS_UNSIGNED_LONG

        public static final QName XS_UNSIGNED_LONG
        QName denoting the schema type xs:unsignedLong *
      • XS_UNSIGNED_INT

        public static final QName XS_UNSIGNED_INT
        QName denoting the schema type xs:unsignedInt *
      • XS_UNSIGNED_SHORT

        public static final QName XS_UNSIGNED_SHORT
        QName denoting the schema type xs:unsignedShort *
      • XS_UNSIGNED_BYTE

        public static final QName XS_UNSIGNED_BYTE
        QName denoting the schema type xs:unsignedByte *
      • XS_NORMALIZED_STRING

        public static final QName XS_NORMALIZED_STRING
        QName denoting the schema type xs:normalizedString *
      • XS_TOKEN

        public static final QName XS_TOKEN
        QName denoting the schema type xs:token *
      • XS_LANGUAGE

        public static final QName XS_LANGUAGE
        QName denoting the schema type xs:language *
      • XS_NMTOKEN

        public static final QName XS_NMTOKEN
        QName denoting the schema type xs:NMTOKEN *
      • XS_NMTOKENS

        public static final QName XS_NMTOKENS
        QName denoting the schema type xs:NMTOKENS *
      • XS_NAME

        public static final QName XS_NAME
        QName denoting the schema type xs:Name *
      • XS_NCNAME

        public static final QName XS_NCNAME
        QName denoting the schema type xs:NCName *
      • XS_ID

        public static final QName XS_ID
        QName denoting the schema type xs:ID *
      • XS_IDREF

        public static final QName XS_IDREF
        QName denoting the schema type xs:IDREF *
      • XS_IDREFS

        public static final QName XS_IDREFS
        QName denoting the schema type xs:IDREFS *
      • XS_ENTITY

        public static final QName XS_ENTITY
        QName denoting the schema type xs:ENTITY *
      • XS_ENTITIES

        public static final QName XS_ENTITIES
        QName denoting the schema type xs:ENTITIES *
      • XS_UNTYPED

        public static final QName XS_UNTYPED
        QName denoting the schema type xs:untyped *
      • XS_UNTYPED_ATOMIC

        public static final QName XS_UNTYPED_ATOMIC
        QName denoting the schema type xs:untypedAtomic *
      • XS_ANY_ATOMIC_TYPE

        public static final QName XS_ANY_ATOMIC_TYPE
        QName denoting the schema type xs:anyAtomicType *
      • XS_YEAR_MONTH_DURATION

        public static final QName XS_YEAR_MONTH_DURATION
        QName denoting the schema type xs:yearMonthDuration *
      • XS_DAY_TIME_DURATION

        public static final QName XS_DAY_TIME_DURATION
        QName denoting the schema type xs:dayTimeDuration *
      • XS_DATE_TIME_STAMP

        public static final QName XS_DATE_TIME_STAMP
        QName denoting the schema type xs:dateTimeStamp *
    • Constructor Detail

      • QName

        public QName​(java.lang.String prefix,
                     java.lang.String uri,
                     java.lang.String localName)
        Construct a QName using a namespace prefix, a namespace URI, and a local name (in that order).

        This constructor does not check that the components of the QName are lexically valid.

        Parameters:
        prefix - The prefix of the name. Use either the string "" or null for names that have no prefix (that is, they are in the default namespace)
        uri - The namespace URI. Use either the string "" or null for names that are not in any namespace.
        localName - The local part of the name
      • QName

        public QName​(java.lang.String uri,
                     java.lang.String lexical)
        Construct a QName using a namespace URI and a lexical representation. The lexical representation may be a local name on its own, or it may be in the form prefix:local-name.

        This constructor does not check that the components of the QName are lexically valid.

        Parameters:
        uri - The namespace URI. Use either the string "" or null for names that are not in any namespace.
        lexical - Either the local part of the name, or the prefix and local part in the format prefix:local
      • QName

        public QName​(NamespaceUri uri,
                     java.lang.String lexical)
        Construct a QName using a namespace URI and a lexical representation. The lexical representation may be a local name on its own, or it may be in the form prefix:local-name.

        This constructor does not check that the components of the QName are lexically valid.

        Parameters:
        uri - The namespace URI. Use NamespaceUri.NULL for names that are not in any namespace.
        lexical - Either the local part of the name, or the prefix and local part in the format prefix:local
        Since:
        12.3
      • QName

        public QName​(java.lang.String localName)
        Construct a QName from a localName alone. The localName must not contain a colon. The resulting QName represents a name in no namespace (which therefore has no prefix)
        Parameters:
        localName - The local name. This must be a valid NCName, in particular it must contain no colon
      • QName

        public QName​(java.lang.String lexicalQName,
                     XdmNode element)
        Construct a QName from a lexical QName, supplying an element node whose in-scope namespaces are to be used to resolve any prefix contained in the QName.

        This constructor checks that the components of the QName are lexically valid.

        If the lexical QName has no prefix, the name is considered to be in the default namespace, as defined by xmlns="...".

        If the prefix of the lexical QName is not in scope, returns null.

        Parameters:
        lexicalQName - The lexical QName, in the form prefix:local or simply local. The EQName syntax "Q{uri}local" and the ClarkName syntax "{uri}local" are also accepted.
        element - The element node whose in-scope namespaces are to be used to resolve the prefix part of the lexical QName.
        Throws:
        java.lang.IllegalArgumentException - If the prefix of the lexical QName is not in scope or if the lexical QName is invalid (for example, if it contains invalid characters)
      • QName

        public QName​(javax.xml.namespace.QName qName)
        Construct a QName from a JAXP QName object
        Parameters:
        qName - the JAXP QName object
      • QName

        public QName​(StructuredQName sqName)
        Construct a QName from a StructuredQName
        Parameters:
        sqName - the StructuredQName
    • Method Detail

      • fromClarkName

        public static QName fromClarkName​(java.lang.String expandedName)
                                   throws java.lang.IllegalArgumentException
        Factory method to construct a QName from a string containing the expanded QName in Clark notation, that is, {uri}local

        The prefix part of the QName will be set to an empty string.

        Parameters:
        expandedName - The URI in Clark notation: {uri}local if the name is in a namespace, or simply local if not.
        Returns:
        the QName corresponding to the supplied name in Clark notation. This will always have an empty prefix.
        Throws:
        java.lang.IllegalArgumentException - if the format of the supplied name is incorrect
      • fromEQName

        public static QName fromEQName​(java.lang.String expandedName)
        Factory method to construct a QName from a string containing the expanded QName in EQName notation, that is, Q{uri}local

        The prefix part of the QName will be set to an empty string.

        Parameters:
        expandedName - The URI in EQName notation: Q{uri}local if the name is in a namespace. For a name in no namespace, either of the forms Q{}local or simply local are accepted.
        Returns:
        the QName corresponding to the supplied name in EQName notation. This will always have an empty prefix.
      • isValid

        public boolean isValid​(Processor processor)
        Validate the QName against the XML 1.0 or XML 1.1 rules for valid names.
        Parameters:
        processor - The Processor in which the name is to be validated. This was at one time used to determine whether the XML 1.0 or XML 1.1 rules for forming names are used. However, the XML 1.0 and 1.1 rules are now aligned, so this argument is no longer used.
        Returns:
        true if the name is valid, false if not
      • getPrefix

        public java.lang.String getPrefix()
        Get the prefix of the QName. This plays no role in operations such as comparison of QNames for equality, but is retained (as specified in XPath) so that a string representation can be reconstructed.

        Returns the zero-length string in the case of a QName that has no prefix.

        Returns:
        the prefix part of the QName, or "" if the name has no known prefix
      • getNamespace

        public java.lang.String getNamespace()
        The namespace URI of the QName, as a string. Returns the zero-length string if the QName is not in a namespace.
        Returns:
        the namespace part of the QName, or "" for a name in no namespace
      • getNamespaceURI

        @Deprecated
        public java.lang.String getNamespaceURI()
        Deprecated.
        since 12.0 - use getNamespaceUri() or getNamespace()
        The namespace URI of the QName, as a string. Returns the zero-length string if the QName is not in a namespace.

        Retained for backwards compatibility; deprecated.

        Returns:
        the namespace part of the QName, or "" for a name in no namespace
      • getNamespaceUri

        public NamespaceUri getNamespaceUri()
        The namespace URI of the QName. Returns NamespaceUri.NULL (the zero-length string) if the QName is not in a namespace.
        Returns:
        the namespace part of the QName, or NamespaceUri#NULL for a name in no namespace
      • getLocalName

        public java.lang.String getLocalName()
        The local part of the QName
        Returns:
        the local part of the QName
      • getClarkName

        public java.lang.String getClarkName()
        The expanded name, as a string using the notation devised by James Clark. If the name is in a namespace, the resulting string takes the form {uri}local. Otherwise, the value is the local part of the name.
        Returns:
        the name in Clark notation. If the name is not in a namespace, returns the local part of the name. Otherwise returns the concatenation of "{", the namespace part of the QName, "}", and the local part of the QName.
      • getEQName

        public java.lang.String getEQName()
      • toString

        public java.lang.String toString()
        Convert the value to a string. The resulting string is the lexical form of the QName, using the original prefix if there was one.
        Overrides:
        toString in class java.lang.Object
      • hashCode

        public int hashCode()
        Get a hash code for the QName, to support equality matching. This supports the semantics of equality, which considers only the namespace URI and local name, and not the prefix.
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        a hashCode for the QName
      • equals

        public boolean equals​(java.lang.Object other)
        Test whether two QNames are equal. This supports the semantics of equality, which considers only the namespace URI and local name, and not the prefix.
        Overrides:
        equals in class java.lang.Object
        Returns:
        true if the namespace URIs are equal and the local parts are equal, when compared character-by-character.
      • getStructuredQName

        public StructuredQName getStructuredQName()
        Get the underlying StructuredQName
        Returns:
        the underlying StructuredQName