Testen eines vorhergehenen Elementes (XML, XSLT, XPath)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Testen eines vorhergehenen Elementes (XML, XSLT, XPath)

    Ich habe Probleme beim Testen eines vorhergehenen Elementes auf der preceding-sibling-Achse. Ziel soll es sein aus einen para-Element ein para_1-Element zu machen, falls dem ein ueberschrift-Element direkt vorausgeht.

    Folgender XML-Code liegt zum Beispiel vor:

    Quellcode

    1. <abschnitt>
    2. <abschnitt>
    3. <para>Text</para>
    4. <para>Text</para>
    5. </abschnitt>
    6. <abschnitt>
    7. <ueberschrift>Text</ueberschrift>
    8. <para>Text</para> <!-- soll zu <para_1> werden-->
    9. <para>Text</para>
    10. <ueberschrift>Text</ueberschrift>
    11. <para>Text</para> <!-- soll zu <para_1> werden-->
    12. <para>Text</para>
    13. <para>Text</para>
    14. </abschnitt>
    15. </abschnitt>
    Alles anzeigen



    Dazu das XSL-Template, was leider nicht seine eigentliche Funktion tut, da der Test fehlschlägt.

    Quellcode

    1. <xsl:template match="para">
    2. <xsl:choose>
    3. <xsl:when test="preceding-sibling::node()[position()-1][ueberschrift]"> <!-- Hier der XPath-Ausdruck - das Problem -->
    4. <para_1><xsl:copy-of select="node()"/></para_1>
    5. </xsl:when>
    6. <xsl:otherwise>
    7. <para><xsl:copy-of select="node()"/></para>
    8. </xsl:otherwise>
    9. </xsl:choose>
    10. </xsl:template>

    Ich habe schon x Sachen ausprobiert - ich weiß einfach nicht weiter

    Edit: Weiß wirklich keiner auch nur einen Ansatz? Ich habe leider immer noch keine Lösung gefunden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von j.per ()

  • evtl könnte dir dieses Thema weiterhelfen: XSLT Wordcount - doppelte Elementinhalte zählen
    Die Lösung sortiert ja auch eine Liste und schaut dann immer auf das vorhergehende Element.

    preceding-sibling:: ueberschrift sollte doch nur matchen, wenn das vorhergehende Element ein ueberschrift Node war, oder wird etwa nach dem passenden gesucht?