首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前面的XPath轴的意外行为

前面的XPath轴的意外行为
EN

Stack Overflow用户
提问于 2013-12-16 15:31:08
回答 1查看 127关注 0票数 2

我试图从下面的XML中列出属性年的所有不同值

代码语言:javascript
复制
<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),使用前面的轴

代码语言:javascript
复制
<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

在下一次,我将尝试用另一个实现替换处理器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-24 03:48:26

据我所知,与Sun一起打包的Xalan版本很古老,而且充满了buggy。正如Michael所建议的,我强烈建议在Sun/Oracle修复之前获得Apache版本。

(与IBM的JDK一起打包的XSLT处理器的by要少得多--它是与Apache代码并行维护的,直到最近才被IBM内部编写的新处理器所取代。唉,IBM是不可单独使用的;它们只与使用它们的IBM产品捆绑在一起。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20614570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档