Удаление следующего элемента после совпадения XSL - PullRequest
0 голосов
/ 01 марта 2019
<remark role="removethis"/>
<para>Content to be removed.</para>
<para>Don't remove this.</para>

Я хочу удалить элемент сразу после замечания, которое имеет роль = "removethis".В приведенном выше примере,

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

будет удалено.Элемент, который нужно удалить, не обязательно должен быть абзацем.Это может быть экран, программирование и т. Д.

Я подумал, что это может быть сделано с помощью следующего брата (см. Ниже).Но это соответствует всем следующим братьям и сестрам.

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

1 Ответ

0 голосов
/ 01 марта 2019

В вашем подходе есть две проблемы:

  1. remark[@role = 'removethis']::following-sibling не является действительным выражением XPath;

  2. Вы не можете использовать *Ось 1010 * в шаге местоположения шаблона совпадения .Любые оси, кроме child или attribute, могут использоваться только в предикатах .

Попробуйте вместо этого:

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

Возможно, есть более простой способ решить эту проблему, но вы показываете нам только частичную картину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...