Read XSLT 2.0 and XPath 2.0 Programmer's Reference, 4th Edition Online
Authors: Michael Kay
Although this function makes the prefix of a QName available to applications, it should be used with care. It is good practice to allow document originators to choose arbitrary prefixes, and applications should attach significance only to the namespace URI, not to the prefix.
Examples
Consider this source document, validated using a schema-aware processor:
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:type=“my:dateType”>2008-01-01
Expression | Result |
prefix-from-QName(node-name(my:doc)) | “my” |
prefix-from-QName(node-name(my:doc/@xsi:type)) | “xsi” |
prefix-from-QName(node-name(my:doc/@security)) | () |
prefix-from-QName(my:doc/@xsi:type) | “my” |
prefix-from-QName(node-name(my:doc/@missing)) | () |
See Also
local-name-from-QName()
on page 826
namespace-uri-from-QName()
on page 841
QName
The
QName()
function returns a value of type
xs:QName
, given a namespace URI and the lexical form of the name. For example,
QName(“http://www.w3.org/1999/xhtml”, “html”)
returns the name
html
in the XHTML namespace.
Signature
Argument | Type | Meaning |
namespace | xs:string? | The namespace URI part of the xs:QName . To construct a QName that is in no namespace, supply either a zero-length string or an empty sequence. |
lexical-qname | xs:string | The lexical form of the QName, with or without a prefix. It must conform to the syntax of a QName as defined in the XML Namespaces specification (which is the same as the lexical space for an xs:QName defined in XML Schema). |
Result | xs:QName | The newly constructed xs:QName . |
Effect
A value of type
xs:QName
has two significant parts (a namespace URI, and a local name), and it also retains information about the namespace prefix. This function constructs an
xs:QName
value from these components.
XPath uses the term
lexical QName
to refer to a QName in the form
local-name
or
prefix:local-name
, and
expanded QName
to refer to the underlying value of the QName, in which the prefix has been resolved to a namespace URI by reference to some set of namespace declarations. This function creates an expanded QName directly, without going through the stage of resolving the prefix. The namespace URI of the QName is taken from the
namespace
argument. The local-name part is taken from the
lexical-name
after stripping off any prefix; and the prefix part is taken from the prefix in the
lexical-name
if there is one.
It's an error to supply a prefix without also supplying a namespace URI.
Examples
Expression | Result |
QName(“http://www.w3.org/XML/1998/namespace”, “xml:space”) | The xs:QName usually written as xml:space |
QName(“http://www.w3.org/2001/XMLSchema-instance”, “xsi:type”) | The xs:QName usually written as xsi:type |
QName(“”, “html”) | An xs:QName with local name html in no namespace |
QName(“http://www.w3.org/1999/xhtml”, “html”) | An xs:QName with local name html in the XHTML namespace, with no prefix |