如何处理xslt 2.0中的非连续元素

时间:2017-07-24 08:15:07

标签: xslt-2.0

我是xslt的新手。请帮我解决下面提到的方案。

这是输入:

 <parent>
       <c1>some text</c1>
       <c2>some text</c2>
       <c2>some text</c2>
       <c2>some text</c2>
       <c3>some text</c3>
       <c2>some text</c2>
       <c2>some text</c2>
       <c2>some text</c2>
       <c3>some text</c3>
       <c2>some text</c2>
        <c2>some text</c2> </parent>

我想要我的输出如下:(所有的c2,直到它遇到c3,应该嵌套到一个c2)。问题是,c3不是固定元素。它可以是除c2之外的任何元素。

<parent> 
    <c1>some text</c1> 
    <c2>some text
        some text
        some text</c2>
    <c3>some text</c3>
    <c2>some text
        some text
        some text</c2>
    <c3>some text</c3>
    <c2>some text
        some text</c2>
</parent>

1 个答案:

答案 0 :(得分:-1)

您可以使用:

XSLT 2.0

<xsl:template match="parent">
    <xsl:for-each-group select="*" group-adjacent="name() = 'c2'">
        <xsl:copy>
            <xsl:apply-templates select="current-group()"/>
        </xsl:copy>
    </xsl:for-each-group>
</xsl:template>