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

我的 xslt 中需要这个,但 xmlns:s="{$service-uri}" 没有提取:

...

【问题讨论】:

    标签: xml xslt namespaces


    【解决方案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版?
    猜你喜欢
    • 1970-01-01
    • 2023-01-18
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    相关资源
    最近更新 更多