hh: XML mit XSLT in HTML Ausgeben

Beitrag lesen

Hallo

also die werte die im obrigen post stehen müssten glaub ich reichen weil ich versuche nur ein bedinung zu schreiben mit der ich Spieler aus geben will also True oder False aber nur den Spieler mit den Spalten 103 und Reihe 2 z.B und dann funktioniert mit xsl:if nicht aber ich hab irgendwo was gelesen das man das direkt mit xsl:value-of select="Spielzug/Spieler[Spielzug/Spalte = 103 and Spielzug/Reihe = 2]">

Das ist Richtig, viele Wege führen nach Rom ;-) Alternative 1:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" indent="yes" encoding="iso-8859-1" />
    <xsl:template match="/">
        <html>
            <head>
                <title>Untitled</title>
            </head>
            <body>
                <xsl:apply-templates />
            </body>
        </html>
    </xsl:template>
    <xsl:template match="NewDataSet">
        <table>
            <tr>
                <th>Spiel-ID</th>
                <th>Spieler</th>
            </tr>
            <xsl:for-each select="Spielzug[(descendant::Spalte=103) and (descendant::Reihe=2)]">
<!-- du koenntest auch schreiben <xsl:for-each select="Spielzug[Spalte=103 and Reihe=2]"> -->
                <tr>
                    <td>
                        <xsl:value-of select="@Spiel_ID" />
                    </td>
                    <td>
                        <xsl:value-of select="Spieler" />
                    </td>
                </tr>
            </xsl:for-each>
        </table>
    </xsl:template>
</xsl:stylesheet>

Alternative 2 mit xsl:if:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" indent="yes" encoding="iso-8859-1" />
    <xsl:template match="/">
        <html>
            <head>
                <title>Untitled</title>
            </head>
            <body>
                <xsl:apply-templates />
            </body>
        </html>
    </xsl:template>
    <xsl:template match="NewDataSet">
        <table>
            <tr>
                <th>Spiel-ID</th>
                <th>Spieler</th>
            </tr>
            <xsl:for-each select="Spielzug">
                <xsl:if test="Spalte = 103 and Reihe = 2">
                <tr>
                    <td>
                        <xsl:value-of select="@Spiel_ID" />
                    </td>
                    <td>
                        <xsl:value-of select="Spieler" />
                    </td>
                </tr>
                </xsl:if>
            </xsl:for-each>
        </table>
    </xsl:template>
</xsl:stylesheet>

Alternative 1 ist m.E. vorzuziehen, da diese performanter ist.

Gruß,

Holger