2013-10-11 37 views
0

我一直在四处寻找这一点,它可能是实际上是有没有办法做到这一点:在一次而不是每个节点选择整套节点的递归

我的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>节点(加上封闭的childNodes)在一次匹配和块存储在一个变量。 这甚至可能吗?

为了避免误解:如果上面的块被一个额外的节点所包围,我们称它为<exmpl>,我会简单地匹配<exmpl>的子节点并得到我想要的节点块。如果没有这样的父节点,我如何实现相同的结果 - 使用具有唯一内容的同级('Play'和'End')而不是似乎工作?

回答

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

分组也可能有助于

+0

帮我找到一个解决方案,谢谢! – Beehgr

相关问题