Announcement

Collapse
No announcement yet.

xsl Abfrage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • xsl Abfrage

    Hallo zusammen.. ich versteh das mit den variablen einfach nicht wirklich. Kann mir jemand einen Denkanstoß geben??

    folgender XML Ausschnitt ist die Basis:
    <Kontodaten>

    <Konto id="1">
    <Kontonummer>123</Kontonummer>
    <Inhaber>
    <Kundennummer>15</Kundennummer>
    </Inhaber>
    <Anfangskapital>100</Anfangskapital>
    </Konto>
    </Kontodaten>

    <Kontobewegungen>

    <Konto id="1">
    <Datum>2000-01-01</Datum>
    <Uhrzeit>13:00:00</Uhrzeit>
    <Wertangaben>-10</Wertangaben>
    <KontonummerEmpfänger>179</KontonummerEmpfänger>
    </Konto>
    <Konto id="1">
    <Datum>2001-02-01</Datum>
    <Uhrzeit>10:35:01</Uhrzeit>
    <Wertangaben>+10</Wertangaben>
    <KontonummerAbsender>156</KontonummerAbsender>
    </Konto>
    <Konto id="1">
    <Datum>2012-03-02</Datum>
    <Uhrzeit>18:22:57</Uhrzeit>
    <Wertangaben>-5</Wertangaben>
    <KontonummerEmpfänger>167</KontonummerEmpfänger>

    </ <Kontobewegungen>

    Ich möchte nun mittels xsl alle Kontobewegungen für das Konto mit der ID=1 ausgeben. Inklusive Berechnungen. Also, Anfangskapital angeben und dann die Wertangaben addieren oder subtrahieren.

    ich bekomm es nur hin mir die Daten anzeigen zu lassen:

    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns="http://www.w3.org/TR/REC-html40">
    <xslutput method="html"/>

    <xsl:template match="EntenhausenerSparkasse">
    <HTML>

    <BODY>
    <TABLE border="1" cellspacing="0" cellpadding="4">
    <xsl:apply-templates select="Kontobewegungen">

    </xsl:apply-templates>
    </TABLE>
    </BODY>
    </HTML>
    </xsl:template>

    <xsl:template match="Kontobewegungen">
    <td> <xsl:text> Kontobewegungen von Kontonummer: 1</xsl:text>
    </td>
    <TR>

    <xsl:for-each select="Konto[@id='1']">
    <tr> <xsl:text>Datum: </xsl:text>
    <xsl:value-of select="Datum" /></tr>
    <td> <xsl:text>Uhrzeit: </xsl:text>
    <xsl:value-of select="Uhrzeit" /></td>
    <td> <xsl:text>Einnahmen: </xsl:text>
    <xsl:value-of select="Wertangaben" /></td>
    <td> <xsl:text>Ausgaben: </xsl:text>
    <xsl:value-of select="Wertangaben" /></td>

    </xsl:for-each>
    </TR>

    <td>

    <xsl:for-each select="Kontobewegungen/Konto[@id='1']">
    <xsl:value-of select="sum(Wertangaben)">


    </xsl:value-of>
    </xsl:for-each>
    </td>

    </xsl:template>

  • #2
    Bezogen auf das Template für Kontobewegungen ergeben sich Anfangskapital und Summe so:

    [highlight=xml]<xsl:template match="Kontobewegungen">
    <table>
    <!-- ... -->
    <tr>
    <th>Anfangskapital</th>
    <td><xsl:value-of select="//Konto[@id='1']/Anfangskapital"/></td> <!-- 100 -->
    <!-- oder:
    <td><xsl:value-of select="../Kontodaten/Konto[@id='1']/Anfangskapital"/></td>
    -->
    </tr>
    <tr>
    <th>Summe Wertangaben</th>
    <td><xsl:value-of select="sum(Konto[@id='1']/Wertangaben)"/></td> <!-- -5 -->
    </tr>
    <!-- ... -->
    </table>
    </xsl:template>[/highlight]

    Comment


    • #3
      Viele Dank für die Antwort! Das mit dem Anfangskapital habe ich auch noch hinbekommen. Die Summe errechnet er aber trotzdem irgendwie nicht. Da kommt als Ergebnis NaN.
      Ich glaube ich brauche aber auch einen grundlegenden Hinweis, wie ich mehrer templates einbinde.. ich krieg es einfach nicht hin. Mein Editor sagt mir jedes mal, dass das nicht zulässig wäre. Muss ich bei meiner Datei grundlegend irgendwas ändern? Kannst du mir da vielleicht einen Tipp geben. Ich verstehe nicht, warum es bei mir nicht funktioniert.

      Comment


      • #4
        Das Plus-Zeichen vor den Zahlenwerten wird nicht von allen XSLT-Prozessoren unterstützt, also weglassen.

        Comment

        Working...
        X