gpt4 book ai didi

xslt - XPath轴之前的异常行为

转载 作者:行者123 更新时间:2023-12-03 16:54:29 24 4
gpt4 key购买 nike

我试图通过以下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(使用ant 1.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 SE JDK 1.7.0
下一次,我将尝试用另一种实现方式替换处理器。

最佳答案

最后我知道,与Sun JDK打包在一起的Xalan版本既古老又有漏洞。正如Michael所建议的那样,我强烈建议您获取Apache版本,直到并且除非Sun / Oracle对此进行了修复。

(与IBM JDK打包在一起的XSLT处理器的bug少了很多-它一直与Apache代码并行维护,直到最近才被IBM内部编写的新处理器所取代。可惜,IBM JDK不能单独使用;它们仅与使用它们的IBM产品捆绑销售。)

关于xslt - XPath轴之前的异常行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20614570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com