在命名空间定义中使用变量
Posted
技术标签:
【中文标题】在命名空间定义中使用变量【英文标题】:variable using in namespace definition 【发布时间】:2018-10-08 01:06:14 【问题描述】:我的 xslt 中需要这个,但 xmlns:s="$service-uri" 没有提取:
如何在命名空间定义中提取 service-uri 变量? 谢谢 扎梅克
【问题讨论】:
【参考方案1】:属性值模板不能用于命名空间声明。请记住,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)"/>
【讨论】:
谢谢迈克尔,很遗憾我不是 xslt 大师,你能解释一下如何将它插入到我当前的 xslt 中吗? 你要哪个,1.0版还是2.0版?以上是关于在命名空间定义中使用变量的主要内容,如果未能解决你的问题,请参考以下文章