0

<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 进行解析,并找到属性 @workingHours = 3.7 或属性 @workingHours = 1.8 的第 1 次出现,以 xml 中的第 1 次出现,然后获取前面属性 @ 的值来自。

所以从上面的例子中,我需要得到值@effFrom = 2018-11-07

4

1 回答 1

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]将从这些分配元素中选择第一个。

于 2013-08-28T14:17:48.427 回答