如何在XSLT中选择元素父级后面的第一个元素?

时间:2013-10-14 18:46:53

标签: xml xslt xpath

假设我目前有这段代码:

<p>
    <greeting>
        <a name="hello">Hello!</a>
    </greeting>
</p>
<ul>
    <p>This paragraph needs to be selected</p>
</ul>

基本上,当我在第一部分的<a>元素中时,我需要选择下面<ul>元素的所有子元素。有没有办法在XSLT中执行此操作?

2 个答案:

答案 0 :(得分:1)

假设您位于 a 元素上,则以下两个表达式中的任何一个都可以使用

<xsl:value-of select="../../following-sibling::ul[1]/p" />

<xsl:value-of select="ancestor::p[1]/following-sibling::ul[1]/p" />

第一个假设 a 在这种情况下是'大孩',而第二个在任何级别都使用 a ,但假定相关您要检查的“祖先”始终是 p

答案 1 :(得分:0)

理想情况下,您需要了解<p><ul>的父级。假设元素是<x>,您可以使用祖先轴选择它,然后将路径追加到您想要的后代:

<xsl:copy-of select="ancestor::x/ul/*">

或者,如果是变量,您可以使用通配符:

<xsl:copy-of select="ancestor::*[3]/ul/*">