namespace 选取当前节点的所有命名空间节点
名称空间轴用来选取名称空间结点。每个元素结点都有一个专门名称空间结点表示每个作用域名称空间。
分析下面的XML源文档(xmmlBook.xml):
<xmml:Book xmlns:xmml="http://www.XMML.com/namespaces">
<xmml:Chapter number="1">Some text.</xmml:Chapter>
<xmml:Chapter number="2">Some more text.</xmml:Chapter>
</xmml:Book>
为了说明xmml:Book元素结点的名称空间结点,需要使用下面的样式表(xmmlBook.xslt):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xmml="http://www.XMML.com/namespaces" >
<xsl:template match="/">
<html>
<head>
<title>This shows namespace nodes.</title>
</head>
<body>
<h3>Namespace nodes of the xmml:Book element.</h3>
<xsl:apply-templates select="/xmml:Book" />
</body>
</html>
</xsl:template>
<xsl:template match="xmml:Book">
<xsl:for-each select="namespace::node()">
<p><xsl:value-of select="position()" />. The namespace prefix
<b><xsl:value-of select="name(.)" /></b> has the namespace URI <b><xsl:value-of
select="." /></b>. </p>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
注意名称空间声明,在xmml:Book元素上使用了xmml名称空间前缀,如下所示:
<xmml:Book xmlns:xmml="http://www.XMML.com/namespaces">
正如图7-4所示,xmml:Book元素结点有两个名称空间。其中一个名称空间结点是http://www.XMML.com/namespaces的URI,这并不令我们感到意外,因为这已经在名称空间声明中很清楚地表示出来。但是,另一个名称空间结点是http://www.w3.org/XML/1998/ namespace的URI,这有一点出乎我们的意料。之所以有这个名称空间结点,是因为所有的XML元素结点都有一个与此URI对应的名称空间。记住,在任何XML元素上都可以使用xml:lang和xml:space属性,因此必须声明xml名称空间。对于本例的情形,所有的XML处理器都自带了名称空间声明。