java - 在 XSLT 中注入命名空间
问题描述
是否可以将命名空间注入到 XSLT 文档中,以便(例如)字符串的值用于指定命名空间?我知道同样可以分别使用<xsl:attribute/>
and构造来声明属性和元素(例如)。<xsl:element/>
命名空间是否有类似的构造?我要求这样做的原因是,我想构造一个 XSLT 转换来构造一个 XML 请求,这些请求在许多接受相同 XML 结构的供应商中使用(除了它们应用不同的名称空间)。我使用 Saxon XSLT 处理器。
解决方案
在 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::*)"/>