首页 > 解决方案 > 在 XSLT 中注入命名空间

问题描述

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

标签: javaxmlxsltsaxon

解决方案


在 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::*)"/>

推荐阅读