是否可以在XSLT文档中注入一个命名空间,以便(例如)使用字符串的值来指定一个命名空间?我知道,同样可以使用XSLT文档中的 <xsl:attribute/>
和 <xsl:element/>
构造,分别。有没有类似的命名空间的构造?我问这个问题的原因是,我想构造一个XSLT转换,用于构造一个跨多个厂商使用的XML请求,该请求接受相同的XML结构(除了他们应用不同的命名空间).我使用Saxon XSLT处理器。
在XSLT 2及以后的版本中,有 xsl:namespace
(https:/www.w3.orgTRxslt-30#creating-namespace-nodes)当然,我不确定,但是它将有助于处理来自不同命名空间的输入,如 xsl:element
,它会创建结果节点。不要忘记,这两个 xsl:element
和 xsl:attribute
允许你在不同的命名空间中使用 namespace
属性。
有 *:foo
择 foo
在任何命名空间的元素。
在XSLT 2.0中,通过使用 xsl:namespace
.
如果你真的需要在XSLT 1.0中这样做(为什么呢?
<xsl:variable name="temp">
<xsl:element name="{$prefix}:dummy" namespace="{$uri}"/>
</xsl:variable>
<xsl:copy-of select="exsl:node-set($temp//*/namespace::*)"/>