Gibt es eine Möglichkeit, ein Element <list_x>
abhängig von der Position bestimmter Knoten auf der preceding-sibling
-Achse zu behandeln?XSLT: Prozesselement abhängig von der Position des vorhergehenden Geschwisters
XML-Code:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<text/>
<text/>
<text/>
<list_num_start/>
<list_num/>
<list_num/>
<list_x/>
<text/>
<text/>
<text/>
<list_square_start/>
<list_square/>
<list_square/>
<list_x/>
</root>
Vorlage:
<xsl:template match="list_x">
<xsl:element name="li">
<xsl:attribute name="class"><xsl:value-of select="name()"/></xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
<xsl:choose>
<xsl:when test="position(preceding-sibling::list_num_start[last()]) < position(preceding-sibling::list_square_start[last()])">
<xsl:text disable-output-escaping="yes"></ol></xsl:text>
</xsl:when>
<xsl:otherwise>...</xsl:otherwise>
</xsl:choose>
</xsl:template>
Leider position()
erlaubt keine Argumente.
Ausgang sollte sein:
<root>
<text/>
<text/>
<text/>
<ol>
<li class="list_num_start"/>
<li class="list_num"/>
<li class="list_num"/>
<li class="list_x"/>
</ol>
<text/>
<text/>
<text/>
<ul>
<li class="list_square_start"/>
<li class="list_square"/>
<li class="list_square"/>
<li class="list_x"/>
</ul>
</root>
Dank!
Was ist Ihre gewünschte Ausgabe? – zx485
Die von Ihnen angezeigte Ausgabe ist kein wohlgeformtes XML und kann nicht durch XSL-Umwandlung erstellt werden. - Bitte erläutern Sie im Klartext die Logik, die Sie hier anwenden möchten. Ein nicht funktionierender Code ist kein Ersatz für eine Erklärung. –
wurde der Code als ein Beispiel betrachtet. Die Frage ist, wie man Elemente verarbeitet, die von bestimmten vorhergehenden Elementen auf den 'vorhergehenden Geschwister'-Achsen abhängen. – Ferestes