2017-07-24 1 views
0

Ich bin neu bei xslt. Bitte helfen Sie mir, das unten erwähnte Szenario zu beheben.Wie behandelt man nicht zusammenhängende Elemente in xslt 2.0

Dies ist der Eingang:

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

ich wie unter meinem ausgegeben werden soll: (alle c2, bis es c3 auftreten, sollten in einem einzigen c2 verschachtelt werden). Das Problem ist, dass c3 kein festes Element ist. Es kann jedes andere Element als c2 sein.

<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> 
+0

Siehe 'Gruppen adjacent' Beispiel in https://www.w3.org/TR/xslt20/# Gruppierungs-Beispiele, sollte einfach mit 'group-boundary =" boolean (self :: c2) "' sein. Wenn du feststeckst, poste deine Bemühungen. –

Antwort

-1

können Sie verwenden:

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> 
Verwandte Themen