我一直在寻找这个,可能实际上没有办法做到这一点:
我的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>
的子节点并得到我想要的节点块。如果没有这样的父节点,我如何实现相同的结果 - 使用具有独特内容的兄弟('播放'和'结束')似乎不起作用?
答案 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[. << $end], $end"/>
分组也可能有帮助