Выбор всего набора узлов сразу вместо каждого узла рекурсивно
Я искал это, и, возможно, на самом деле нет способа сделать это:
Мой 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[. << $end], $end"/>
Группировка также может помочь