将元素拆分为多个部分
Split elements into sections
我想将文本分成几个部分:
来源XML:
<data>
<p>hello</p>
<p>nice</p>
<p>BREAK</p>
<p>world</p>
</data>
我成功了一半的尝试:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" >
<xsl:output indent="yes"/>
<xsl:template match="data">
<xsl:for-each-group select="p" group-starting-with=".[. = 'BREAK']">
<chapter>
<xsl:copy-of select="current-group()"/>
</chapter>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
我想得到的结果(片段):
<chapter>
<p>hello</p>
<p>nice</p>
</chapter>
<chapter>
<p>world</p>
</chapter>
相反我得到
<chapter>
<p>hello</p>
<p>nice</p>
</chapter>
<chapter>
<p>BREAK</p>
<p>world</p>
</chapter>
(它仍然包含 <p>BREAK</p>
)
我的问题是:有没有直接的方法来摆脱 <p>BREAK</p>
元素?
您可以轻松select<xsl:copy-of select="current-group()[not(. = 'BREAK')]"/>
。
我想将文本分成几个部分:
来源XML:
<data>
<p>hello</p>
<p>nice</p>
<p>BREAK</p>
<p>world</p>
</data>
我成功了一半的尝试:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" >
<xsl:output indent="yes"/>
<xsl:template match="data">
<xsl:for-each-group select="p" group-starting-with=".[. = 'BREAK']">
<chapter>
<xsl:copy-of select="current-group()"/>
</chapter>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
我想得到的结果(片段):
<chapter>
<p>hello</p>
<p>nice</p>
</chapter>
<chapter>
<p>world</p>
</chapter>
相反我得到
<chapter>
<p>hello</p>
<p>nice</p>
</chapter>
<chapter>
<p>BREAK</p>
<p>world</p>
</chapter>
(它仍然包含 <p>BREAK</p>
)
我的问题是:有没有直接的方法来摆脱 <p>BREAK</p>
元素?
您可以轻松select<xsl:copy-of select="current-group()[not(. = 'BREAK')]"/>
。