获取属性第一次出现时的上一个同级值



<Assignment workingHours="2.5" effFrom="2016-06-07" />
<Assignment workingHours="2.5" effFrom="2018-11-07" />
<Assignment workingHours="1.8" effFrom="2009-05-01" />
<Assignment workingHours="3.7" effFrom="2002-06-12" />
<Assignment workingHours="2.5" effFrom="2003-08-07" />
<Assignment workingHours="3.7" effFrom="2007-03-011" />

我是XSLT的新手。我使用的是XSLT1.0,需要解析上面的输入XML,找到属性@workingHours=3.7的第一次出现,然后获得前面属性@effFrom的值。

因此,从上面的例子中,我需要使用XSLT1.0获得值@effFrom=2009-05-01

我有一个新要求:我需要解析上面的示例xml,找到第一次出现的EITHER属性@workingHours=3.7或属性@working Hours=1.8,以xml中第一个出现的为准,然后获得前面属性@effFrom的值。

因此,从上面的例子中,我需要获得值@effFrom=2018-11-07

尝试以下xpath

//Assignment[@workingHours = '3.7'][1]/preceding-sibling::Assignment[1]/@effFrom

用法取决于您的需要,但您可以制作例如这个

<xsl:value-of select="//Assignment[@workingHours = '3.7'][1]/preceding-sibling::Assignment[1]/@effFrom" />

编辑:对于稍后的请求,xpath的一个小更改应该可以工作

//Assignment[@workingHours = '3.7' or @workingHours = '1.8'][1]/preceding-sibling::Assignment[1]/@effFrom  

即://Assignment[@workingHours = '3.7' or @workingHours = '1.8']将选择@workingHours=3.7或1.8的所有Assignment元素。第二个谓词[1]将从这些Assignment元素中选择第一个。

相关内容

  • 没有找到相关文章

最新更新