在XSL匹配之后删除下一个元素

时间:2019-03-01 16:18:14

标签: xslt

<remark role="removethis"/>
<para>Content to be removed.</para>
<para>Don't remove this.</para>

我想在具有角色=“ removethis”的备注之后直接删除该元素。 在上面的示例中,

<para>Content to be removed.</para>

将被删除。 要删除的元素不必是para。它可以是屏幕,节目列表等。

我认为使用跟随兄弟可能会这样做(请参阅下文)。但这与以下所有同胞匹配。

 <xsl:template match="remark[@role = 'removethis']::following-sibling"/>

1 个答案:

答案 0 :(得分:1)

您的方法有两个问题:

  1. remark[@role = 'removethis']::following-sibling不是有效的XPath表达式;

  2. 您不能在match pattern定位步骤中使用following-sibling轴。 childattribute以外的任何轴都只能在谓词中使用。

请尝试:

<xsl:template match="para[preceding-sibling::*[1][self::remark[@role='removethis']]]"/>

解决这个问题的方法可能更简单,但您只是向我们展示了部分图片。

相关问题