<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的新手。我使用的是XSLT 1.0,需要解析上面的输入XML并找到属性@workingHours = 3.7的第一次出现,然后得到前面属性@effFrom的值。
所以从上面的例子中,我需要使用XSLT 1.0获得值@effFrom = 2009-05-01
我有一个新要求: 我需要解析上面的示例xml并找到第一次出现的EITHER属性@workingHours = 3.7 OR属性@workingHours = 1.8,取决于xml中的第一个,然后得到前面属性@effFrom的值。
所以从上面的例子中,我需要得到值@effFrom = 2018-11-07
答案 0 :(得分:0)
尝试关注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元素中选择第一个谓词。