我知道这可能是重复的,但无论如何我都会尝试:)
我有一个XML文件,我可以从中获取条件值。 XML文件如下所示:
<root>
<test>
<criteria nom="DR">
<abbr>DR</abbr>
<value>0.123456</value>
</criteria>
<criteria nom="MOTA">
<abbr>MOTA</abbr>
<value>0.132465</value>
</criteria>
</criteria>
</test>
<test>
<criteria nom="DR">
<abbr>DR</abbr>
<value>0.655425</value>
</criteria>
<criteria nom="MOTA">
<abbr>MOTA</abbr>
<value>0.766545</value>
</criteria>
</test>
</root>
我试图比较字段<value>
。
现在我试着这样做:
<xsl:variable name="pos" select="position()" />
<xsl:for-each select="/root/test[$pos]/criteria/value">
<xsl:if test="/root/test[$pos-1]/criteria/value/text() < /root/test[$pos]/criteria/value/text()">
<td class = "GOOD"><xsl:value-of select="text()"/></td>
</xsl:if>
<xsl:if test="/root/test[$pos-1]/criteria/value/text() > /root/test[$pos]/criteria/value/text()">
<td class = "BAD"><xsl:value-of select="text()"/></td>
</xsl:if>
</xsl:for-each>
但这不是正确的做法。 我怎样才能达到这个效果?
答案 0 :(得分:1)
假设当前元素是value
,这是一种非常优雅的引用方式
前往&#34;之前&#34; value(在当前test
元素内)是:
select="../preceding-sibling::*[1]/value"
有关工作示例,请参阅http://xsltransform.net/93nvfcY
请注意,您的源XML在每个test
元素中只包含一个criteria
具有前一个兄弟的元素,所以为了减少目的我扩展了它
通过第一个criteria
中的其他test
元素。
访问上述页面并尝试更改value
的值
源XML窗格中的元素。