Hei,XSLT Kopie derselben Geschwister, bis andere Geschwister erscheinen
ich bin trieing folgenden Liste Transformation mithilfe von XSLT 1.0:
<div data-class="a">
<div data-class="b"/>
<div data-class="b">
<div data-class="c"/>
</div>
<div data-class="b"/>
</div>
<div data-class="a">
<div data-class="b">
<div data-class="c">
<div data-class="d"/>
</div>
</div>
</div>
<div data-class="a"/>
<div data-class="a"/>
<div data-class="b">
<div data-class="c"/>
<div data-class="c"/>
</div>
</div>
:
<div data-class="a"/>
<div data-class="b"/>
<div data-class="b"/>
<div data-class="c"/>
<div data-class="b"/>
<div data-class="a"/>
<div data-class="b"/>
<div data-class="c"/>
<div data-class="d"/>
<div data-class="a"/>
<div data-class="a"/>
Es sollte die Daten wie folgt transformieren Ich versuche es seit Stunden richtig zu transformieren. es zu transformieren, ich die Kopie Tags bin mit:
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<xsl:template match="div[@data-class='a']">
<xsl:copy>
<xsl:apply-templates select="node() | @* | following-sibling::div[@data-class='b']" />
</xsl:copy>
</xsl:template>
<xsl:template match="div[@data-class='a']">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
<xsl:apply-templates select="following-sibling::div[@data-class='b']" />
</xsl:copy>
</xsl:template>
<xsl:template match="div[@dataclass='b']">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
<xsl:apply-templates select="following-sibling::div[@data-class='c']" />
</xsl:copy>
</xsl:template>
Das Problem ist, dass alle folgenden Elemente der Datenklasse getroffen werden - bitte helfen Sie mir. Vielen Dank!
Gibt es eine Logik in der Hierarchie? Oder muss man "b" explizit unter "a", "c" unter "b" und so weiter setzen? –