【发布时间】:2016-08-26 20:39:26
【问题描述】:
我陷入了 xPath 表达式以及如何在 XSLT 中呈现它的问题。我很想得到一些帮助。
来源
“item”元素的扁平堆栈:
<list>
<item outline="3" name="grumpy"/>
<item outline="5" name="monarchists"/>
<item outline="9" name="dispatch"/>
<item outline="3" name="parkour"/>
<item outline="3" name="elves"/>
<item outline="9" name="hunting"/>
<item outline="9" name="clueless"/>
<item outline="3" name="xPath"/>
<item outline="2" name="newbs"/>
</list>
测试
前一个元素的“outline”属性的值是否大于当前元素的“outline”属性的值?
如果是这样,将当前“item”元素“outline”属性的值更改为1。
XPATH 失败
我无法通过初始测试...
<xsl:when test="preceding::item[1][@outline > @outline]">
期望的输出
<list>
<item outline="1" name="grumpy"/>
<item outline="5" name="monarchists"/>
<item outline="9" name="dispatch"/>
<item outline="1" name="parkour"/>
<item outline="3" name="elves"/>
<item outline="9" name="hunting"/>
<item outline="9" name="clueless"/>
<item outline="1" name="xPath"/>
<item outline="1" name="newbs"/>
</list>
请也推荐 XSLT。
谢谢!
【问题讨论】:
-
为什么第一个值变了?
-
第一个值默认为 1。如果我从 test="preceding::item[1]" 得到错误,我将值 1 添加到第一个元素。除了第一项之外,它遵循规则,不是吗?