我试图从下面的XML中列出属性年的所有不同值
<Parts>
<Part Name="S1">
<Year year="2018" i="1"/>
<Year year="2017" i="2"/>
<Year year="2018" i="3"/>
<Year year="2017" i="4"/>
</Part>
</Parts>使用XSLT (带有ant1.8.2),使用前面的轴
<xsl:template match="/">
<xsl:for-each select="//Year [not( @year = preceding::Year/@year)]">
<xsl:sort select="@year" order="ascending" />
year: <xsl:value-of select="@year"/> -- <xsl:value-of select="./@i"/>
<br/><hr/>
</xsl:for-each>
</xsl:template>得到结果
年份:2017年-2 年份: 2018 -1 年份:2018-3
我不知道,为什么我有两倍的“2018年”(它总是第一个被选中的元素给予双)。
对于前面的轴,我得到了预期的结果,一个包含每一个值一次的列表:
年份:2017年-2 年份: 2018 -1
有人对这种行为有什么解释吗?我假设前面和前面的兄弟姐妹在这个例子中给出了同样的结果。
MK
编辑:谢谢你的评论。
我使用Java 1.7.0
在下一次,我将尝试用另一个实现替换处理器。
发布于 2013-12-24 03:48:26
据我所知,与Sun一起打包的Xalan版本很古老,而且充满了buggy。正如Michael所建议的,我强烈建议在Sun/Oracle修复之前获得Apache版本。
(与IBM的JDK一起打包的XSLT处理器的by要少得多--它是与Apache代码并行维护的,直到最近才被IBM内部编写的新处理器所取代。唉,IBM是不可单独使用的;它们只与使用它们的IBM产品捆绑在一起。
https://stackoverflow.com/questions/20614570
复制相似问题