fn:resolve-QName( $qname as xs:string?, $element as element() ) as xs:QName?
Returns an xs:QName
value (that is, an expanded QName)
by taking an xs:string
that has the lexical form of an
xs:QName
(a string in the form "prefix:local-name" or
"local-name") and resolving it using the in-scope namespaces for a
given element.
Parameters | |
---|---|
qname | A string of the form "prefix:local-name". |
element | An element providing the in-scope namespaces to use to resolve the qualified name. |
Sometimes the requirement is to construct an xs:QName
without using the default namespace. This can be achieved by writing:
if ( fn:contains($qname, ":") ) then ( fn:resolve-QName($qname, $element) ) else ( fn:QName("", $qname) )
If the requirement is to construct an xs:QName
using the
namespaces in the static context, then the xs:QName
constructor should be used.
If $qname does not have the correct lexical form for xs:QName
an error is raised [err:FOCA0002].
If $qname is the empty sequence, returns the empty sequence.
More specifically, the function searches the namespace bindings of $element for a binding whose name matches the prefix of $qname, or the zero-length string if it has no prefix, and constructs an expanded QName whose local name is taken from the supplied $qname, and whose namespace URI is taken from the string value of the namespace binding.
If the $qname has a prefix and if there is no namespace binding for $element that matches this prefix, then an error is raised [err:FONS0004].
If the $qname has no prefix, and there is no namespace binding for $element corresponding to the default (unnamed) namespace, then the resulting expanded QName has no namespace part.
The prefix (or absence of a prefix) in the supplied $qname argument is retained in the returned expanded QName, as discussed in Section 2.1 Terminology[DM].
Assume that the element bound to $element has a single namespace binding bound to the prefix "eg". fn:resolve-QName("hello", $element) => a QName with local name "hello" that is in no namespace. fn:resolve-QName("eg:myFunc", $element) => an xs:QName whose namespace URI is specified by the namespace binding corresponding to the prefix "eg" and whose local name is "myFunc".
Stack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.