没有一个XSLT命名空间和XML文档 - 它是如何工作的

时间:2014-11-27 19:10:06

标签: xml xslt namespaces

我有一个定义默认名称空间的XML文档,即

<rootnode xmlns="..."><book>...</book>

本文档中没有任何标记带有任何前缀。

现在我正在查看一个据称正在转换上述文档的XSLT文档,它确实定义了一个命名空间,并包含使用此命名空间前缀的节点模式&#34; foo:book&#34;。

<xsl:stylesheet xmlns:foo="..."> 

它是如何工作的......这个XSLT能否真正匹配使用名称空间前缀的标签到XML文档中没有该前缀的标签?

我唯一觉得有趣的是XML和XSLT中的命名空间的URL完全相同,但不确定它是否相关。

任何人都能解释一下吗?

1 个答案:

答案 0 :(得分:1)

  

它是如何工作的......这个XSLT可以真正匹配使用的标签   XML文档中没有该前缀的标记的名称空间前缀?

是。前缀本身毫无意义;重要的是它所绑定的命名空间URI(在样式表中,它被使用的地方)。

  

我唯一感觉有趣的是两个XML中的命名空间的URL   和XSLT完全相同,但不确定这是否相关。

这正是它的工作原理。例如,指令:

<xsl:copy-of select="foo:chapter"/>

选择

<chapter xmlns="http://www.example.com">

如果样式表声明:

xmlns:foo="http://www.example.com"

相对于指令在祖先或自我轴上的某处。