Выбор всего набора узлов сразу вместо каждого узла рекурсивно

Я искал это, и, возможно, на самом деле нет способа сделать это:

Мой XML-файл выглядит в одной точке следующим образом:

<para>Play</para>
<para>MACBETH: My dearest love, <i>Duncan</i> comes here to-night.</para>
<para>LADY MACBETH:And when goes hence?</para>
<para>MACBETH:To-morrow, as he purposes. </para>
<para>End</para>

Я нашел бесчисленные способы выбора каждого <para> для себя, но я хочу, чтобы соответствовать всем <para> узлы (плюс вложенные дочерние узлы) сразу и сохраните блок в переменной. Это вообще возможно?

Чтобы избежать недоразумений: если блок выше был заключен в дополнительный узел, давайте вызовем его <exmpl> Я бы просто сопоставил дочерние узлы <exmpl> и получить блок узлов, которые я хочу. Как мне добиться того же результата без такого родительского узла - вместо этого использование родного брата с уникальным контентом ("Play" и "End") не работает?

1 ответ

Решение

Есть операторы << а также >>:

<xsl:variable name="start" select="//para[. = 'Play']"/>
<xsl:variable name="end" select="//para[. = 'End']"/>
<xsl:variable name="block" select="$start, $start//following-sibling::para[. &lt;&lt; $end], $end"/>

Группировка также может помочь

Другие вопросы по тегам