Obtaining Namespace Information

You can call functions to obtain namespace information. This topic discusses

In addition to a discussion of the functions you call, this section covers the following:

Obtaining the Namespace URI

To obtain the URI for a namespace, call the namespace-uri() function. The format is

string namespace-uri(node-set?) 
               

            

The namespace-uri() function returns the namespace URI of the expanded name of the node in the node-set argument that is first in document order. If the node-set argument is empty, the first node has no expanded name, or the namespace URI of the expanded name is null, the XPath processor returns an empty string. If you omit the argument, it defaults to a node set with the context node as its only member.

Call the namespace-uri() function on element or attribute nodes. For example, the query

/bookstore/my:book/namespace-uri()
               

            

returns the string


              "http://www.placeholder-name-here.com/schema/"
               

            

For any other type of node, the XPath processor always returns an empty string.

Obtaining the Local Name

To obtain the local portion of a node name, excluding the prefix, call the local-name() function. The format is

string local-name(node-set?) 
               

            

The local-name() function returns the local part of the expanded name of the node in the node-set argument that is first in document order. If the node-set argument is empty or the first node has no expanded name, the function returns an empty string. If you omit the argument, it defaults to a node set with the context node as its only member. For example, the following query returns my:book nodes:

/bookstore/my:*[local-name()="book"]
               

            

Obtaining the Expanded Name

To obtain the expanded name of a node, call the name() function. The expanded name is the namespace prefix, if any, plus the local name. The format is

string name(node-set?) 
               

            

The name() function returns a string that represents the expanded name of the node in the node-set argument that is first in document order. The returned string represents the expanded name with respect to the namespace declarations in effect on the node whose expanded name is being represented.

Typically, this is the name in the XML source. This need not be the case if there are namespace declarations in effect on the node that associate multiple prefixes with the same namespace.

If the node-set argument is empty or the first node has no expanded name, the XPath processor returns an empty string. If you omit the argument, it defaults to a node set with the context node as its only member.

Except for element and attribute nodes, the string that the name() function returns is the same as the string the local-name() function returns.

Specifying Wildcards with Namespaces

Element and attribute names that include colons ( :) can include wildcards; that is, asterisks ( *). For example, queries can include *:*, *:a, or a:*.

Examples of Namespaces in Queries

The following example finds all book elements in the current context. This query does not return any book elements that are not in the default namespace. For example, it does not return my:book elements.

book 
               

            

The next query finds all book elements with the prefix my. This query does not return unqualified book elements; that is, book elements in the default namespace.

my:book 
               

            

The following query finds all book elements with a my prefix that have an author subelement:

my:book[author] 
               

            

The following query finds all book elements with a my prefix that have an author subelement with a my prefix:

my:book[my:author] 
               

            

The next example returns the style attribute with a my prefix for book elements in the current context:

book/@my:style 
               

            

Accessing Relational Databases as XML with Stylus Studio's File Explorer

This demonstration is the first part of our series on working with relational and XML data, covering how to use Stylus Studio's File Explorer to connect to and query relational database tables as XML.

XQuery Documentation Generator

Stylus Studio provides integrated support for xqDoc so you can generate XQuery documentation directly from the XQuery editor.

Apache FOP

Apache FOP is an open-source engine is available from the Apache project that renders XSL-FO into PDF and other popular document formats. Apache FOP is fully integrated with Stylus Studio's XSL:FO tools.

XML Operations

Using XML Pipeline it's easy to visually specify a series of XML operations to apply on your XML data, including parsing, validating, converting and transforming, according to the needs of your business application.

Stylus Most Wanted

 
Free Stylus Studio XML Training:
W3C Member