XLST从甲酸盐以下的阿帕奇骆驼那里获得日期。
数据格式
<list>
<linked-hash-map>
<entry key="NAME">test1</entry>
</linked-hash-map>
<linked-hash-map>
<entry key="NAME">test2</entry>
</linked-hash-map>
</list>
我的XSLT:
<xsl:stylesheet>
<xsl:template match="*">
<xsl:for-each select="//*[local-name()='linked-hash-map']">
<tag1>
<xsl:value-of select="string(//*[local-name()='entry'][@key='NAME'])"/>
</tag1t>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
OUTPUT始终返回第一个元素。
<tag1>test1<tag1>
<tag1>test1<tag1>
xslt上面的问题是什么,并帮助生成具有所有元素的xml。
答案 0 :(得分:1)
由于从文档树的根目录中选择以“ //”开头的路径表达式,因此每次xsl:value-of
中都选择相同的节点;在XSLT 1.0中,如果选择多个节点,则仅显示第一个节点。
认为您使用的是“ //”,因为您已经在示例代码中看到了它,但实际上并没有理解它的含义...
在xsl:for-each
中,通常需要一个相对路径,该路径是从for-each当前正在处理的节点中选择的。
您也可能已经从其他人的代码中养成了这个*[local-name()='linked-hash-map']
习惯。在不涉及名称空间的情况下,您可以安全地将其替换为linked-hash-map
。