一次选择整个节点集而不是递归地选择每个节点

时间:2013-10-11 15:26:38

标签: xml xpath xslt-2.0 xsl-variable

我一直在寻找这个,可能实际上没有办法做到这一点:

我的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>的子节点并得到我想要的节点块。如果没有这样的父节点,我如何实现相同的结果 - 使用具有独特内容的兄弟('播放'和'结束')似乎不起作用?

1 个答案:

答案 0 :(得分:0)

有运营商<<>>

<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"/>

分组也可能有帮助