输出在XSLT中使用XMLNS的XML节点

时间:2016-05-12 01:26:35

标签: xml xslt xslt-1.0

我从客户端获得了此代码,但由于<xsl:for-each> xmlns,我不确定如何使a:循环遍历这些代码。

这是代码

<nodes xmlns:a="http://www.test.com/api/">
    <a:node>
        <a:Number>T123123</a:Number>
        <a:Url>http://www.link2.com/</a:Url>
    </a:node>
    <a:node>
        <a:Number>345345</a:Number>
        <a:Url>http://www.link2.com/</a:Url>
    </a:node>
    <a:node>
        <a:Number>456456456</a:Number>
        <a:Url i:nil="true"/>
    </a:node>
</nodes>

我尝试了一系列包括以下内容:

<xsl:for-each select="nodes/a:node">

<xsl:for-each select="a:nodes/a:node">

任何帮助真的很感激。

1 个答案:

答案 0 :(得分:1)

在使用前缀之前,您需要先声明指向相应名称空间URI的前缀:

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:a="http://www.test.com/api/">

XSLT中的命名空间前缀可以与源XML中的名称空间前缀不同,只要两者都映射到相同的URI。

我们不清楚xsl:for-each中的上下文元素是什么以及因为您尝试的XPath与发布的示例XML不对应,因此它的正确XPath表达式是什么,所以我无法对该部分发表评论。