首页 文章

使用xpath和xslt测试兄弟元素的数字属性值

提问于
浏览
0

我坚持使用xPath表达式以及如何在XSLT中呈现它 . 我会喜欢一些帮助 .

SOURCE

平面堆栈的“项目”元素:

<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>

TEST

前一个元素的“outline”属性的值是否大于当前元素的“outline”属性的值?

如果是这样,请将当前“item”元素“outline”属性的值更改为1 .

FAILED XPATH

我无法通过初步测试......

<xsl:when test="preceding::item[1][@outline &gt; @outline]">

DESIRED OUTPUT

<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 回答

  • 0

    使用

    <xsl:template match="item[preceding-sibling::item[1]/@outline > @outline]/@outline">
      <xsl:attribute name="outline">1</xsl:outline>
    </xsl:template>
    

    加上身份转换模板 .

相关问题