<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元素中选择第一个。