在命名空间定义中使用变量

Posted

技术标签:

【中文标题】在命名空间定义中使用变量【英文标题】:variable using in namespace definition 【发布时间】:2018-10-08 01:06:14 【问题描述】:

我的 xslt 中需要这个,但 xmlns:s="$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版?

以上是关于在命名空间定义中使用变量的主要内容,如果未能解决你的问题,请参考以下文章

C++命名空间详解

C++ 项目相关知识命名空间

命名空间 namespace

C++通过域作用符引用命名空间

Python:将字典中的变量加载到命名空间中

namespace 命名空间