XSLT 2.0,检查特定位置是否存在特定节点

时间:2014-05-30 23:52:01

标签: xslt xpath xslt-2.0

我有一个包含多个<MT>元素的XML,如下面的

<GSP>
<RES>
<R>
<MT N="Authors" V="McKee, D.W.; General Electric Co., Schenectady, NY (USA). Corporate Research and Development Dept"/>
<MT N="English-Title" V="Advanced gas-cooled nuclear reactor materials evaluation and development program: corrosion behavior of experimental alloys in controlled-purity helium at temperatures in the 750 to 1050&lt;sup&gt;0&lt;/sup&gt;C range"/>
<MT N="Title" V="Ni-20Cr + Al, Ti, Si, Nb and/or Y"/>
</R>
</RES>
</GSP>

我想在@N='Title'之后立即检查是否有@N='English-Title'元素。我不想将<MT>元素与@N='Title'一起使用,如果它出现在其他任何地方。

如何实现?

1 个答案:

答案 0 :(得分:2)

这个XPath表达式:

//MT[@N='Title'][preceding-sibling::MT[1][@N='English-Title']]

选择这些节点。它在所有 MT元素中选择具有N属性且内容为“Title”的元素,前面的MT兄弟包含{{1}的元素}属性,内容为“英文标题”。

您可以在接受绝对XPath表达式的XSLT属性中使用它,并将其打印到结果树中,将其保存在变量中等。