xsl:for-each select zusammenfassen

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

  • xsl:for-each select zusammenfassen

    Hi,

    ich erzeuge im Moment zwei HTML-Seiten aus einer XML-Datei:

    Quellcode

    1. <!-- Systembeschreibung als HTML ausgeben -->
    2. <xsl:for-each select="PGR[1]/TEXT[@SYSTEMKATEGORIE3='Systembeschreibung'][1]">
    3. <xsl:variable name="lang" select="ancestor::PUB[name(..)='EXPORT']/@lang"/>
    4. <xsl:choose>
    5. <!-- englische Seiten erzeugen -->
    6. <xsl:when test="$lang='en' or $lang='gb'">
    7. <xsl:result-document href="web/{$kapitelname}/{$kapitelname}.html" omit-xml-declaration="yes">
    8. <xsl:call-template name="textTemplate"/>
    9. </xsl:result-document>
    10. </xsl:when>
    11. <xsl:otherwise>
    12. <!-- alle anderen werden deutsch formatiert -->
    13. <xsl:result-document href="web/{$kapitelname}/{$kapitelname}_de.html" omit-xml-declaration="yes">
    14. <xsl:call-template name="textTemplate"/>
    15. </xsl:result-document>
    16. </xsl:otherwise>
    17. </xsl:choose>
    18. </xsl:for-each>
    19. <!-- Schlüsselmerkmale als HTML ausgeben -->
    20. <xsl:for-each select="PGR[1]/TEXT[@SYSTEMKATEGORIE3='System Schlüsselmerkmale'][1]">
    21. <xsl:variable name="lang" select="ancestor::PUB[name(..)='EXPORT']/@lang"/>
    22. <xsl:choose>
    23. <!-- englische Seiten erzeugen -->
    24. <xsl:when test="$lang='en' or $lang='gb'">
    25. <xsl:result-document href="web/{$kapitelname}/{$kapitelname}_key.html" omit-xml-declaration="yes">
    26. <xsl:call-template name="textTemplate"/>
    27. </xsl:result-document>
    28. </xsl:when>
    29. <xsl:otherwise>
    30. <!-- alle anderen werden deutsch formatiert -->
    31. <xsl:result-document href="web/{$kapitelname}/{$kapitelname}_key_de.html" omit-xml-declaration="yes">
    32. <xsl:call-template name="textTemplate"/>
    33. </xsl:result-document>
    34. </xsl:otherwise>
    35. </xsl:choose>
    36. </xsl:for-each>
    Alles anzeigen


    Das klappt natürlich auch, aber eigentlich hätte ich gerne beide Ausgaben in einer HTML-Datei.
    Lassen sich die Schleifen irgendwie kombinieren?
  • Wenn ich dich richtig verstehe willst du nur die XPATH Selectorn zusammenfassen, oder?

    statt einzeln zu iterieren über PGR[1]/TEXT[@SYSTEMKATEGORIE3='Systembeschreibung'][1] und PGR[1]/TEXT[@SYSTEMKATEGORIE3='System Schlüsselmerkmale'][1] willst du einfach eine Schleife haben.
    Schau dir mal die XPATH Operatoren an: w3schools.com/xpath/xpath_operators.asp

    Eigentlich kein Problem.

    Quellcode

    1. <xsl:for-each select="PGR[1]/TEXT[@SYSTEMKATEGORIE3='Systembeschreibung'][1]|PGR[1]/TEXT[@SYSTEMKATEGORIE3='System Schlüsselmerkmale'][1]">
  • So, das klappt nur bedingt. Ich will das ganze als HTML ausgeben. Wenn ich nun meine Schleife drüber laufen lasse, dann will er mir natürlich beide Konten als neue HTML Seite anlegen. Ich will ja aber nur eine. Also der zweite Knoten soll einfach an den ersten angehängt werden.
    So habe ich es im Moment:

    Quellcode

    1. <xsl:for-each select="PGR[1]/TEXT[@SYSTEMKATEGORIE3='Systembeschreibung'][1]|PGR[1]/TEXT[@SYSTEMKATEGORIE3='System Schlüsselmerkmale'][1]">
    2. <xsl:variable name="lang" select="ancestor::PUB[name(..)='EXPORT']/@lang"/>
    3. <xsl:result-document href="web/{$kapitelname}/{$kapitelname}_{$lang}.html" omit-xml-declaration="yes">
    4. <h1><xsl:value-of select="../../PGR[1]/@name"></xsl:value-of></h1>
    5. <h2><xsl:value-of select="//PGR[1]/PRAT[@name='SYSTEMCHARAKTERISTIK']/VALUE/TUNIT/text()"/></h2>
    6. <xsl:call-template name="textTemplate"/>
    7. </xsl:result-document>
    8. </xsl:for-each>