【发布时间】:2018-10-08 01:06:14
【问题描述】:
我的 xslt 中需要这个,但 xmlns:s="{$service-uri}" 没有提取:
如何在命名空间定义中提取 service-uri 变量? 谢谢 扎梅克
【问题讨论】:
标签: xml xslt namespaces
我的 xslt 中需要这个,但 xmlns:s="{$service-uri}" 没有提取:
如何在命名空间定义中提取 service-uri 变量? 谢谢 扎梅克
【问题讨论】:
标签: xml xslt namespaces
属性值模板不能用于命名空间声明。请记住,XSLT 是 XML,名称空间声明 xmlns:x="..." 必须被 XML 解析器和 XSLT 处理器理解。
在 XSLT 2.0 中,您可以使用 xsl:namespace 指令动态创建命名空间节点:
<xsl:namespace name="s" select="$service-uri"/>
如果您使用的是 1.0,那就更难了。您可以通过在相关命名空间中创建元素节点来做到这一点:
<xsl:variable name="dummy">
<xsl:element name="s:dummy" namespace="{$service-uri}"/>
</xsl:variable>
然后将相关的命名空间节点复制到新元素:
<xsl:copy-of select="exslt:node-set($dummy/*/namespace::s)"/>
【讨论】: