我有一个带有文本和节点的节点,在xslt 2.0中我必须创建包含节点之前的文本的新节点。 例如:
<answer>
I muscoli striati o
<correct>......................</correct>
sono detti anche muscoli volontari, perché il loro movimento è controllato coscientemente dal sistema
<correct>......................</correct>
. Le
<correct>......................</correct>
sono le zone in cui le ossa entrano in contatto tra di loro.
</answer>
结果必须如下:
<answer>
I muscoli striati o
<correct>......................</correct>
</answer>
<answer>
sono detti anche muscoli volontari, perché il loro movimento è controllato coscientemente dal sistema <correct>......................</correct>
</answer>
<answer>
. Le <correct>......................</correct>
</answer>
<answer>
sono le zone in cui le ossa entrano in contatto tra di loro.
</answer>
答案 0 :(得分:2)
使用XSLT 2.0,您可以使用xsl:for-each-group
,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="answer">
<data>
<xsl:for-each-group select="node()" group-ending-with="correct">
<answer>
<xsl:apply-templates select="current-group()" />
</answer>
</xsl:for-each-group>
</data>
</xsl:template>
</xsl:stylesheet>