Hallo Implementation,
Das XSL-Stylesheet soll diese Preise automatisch ausrechnen.
...
Doch wie schaffe ich es, die Members auszulesen, das price-Attribut des entsprechenden Tags zu ermitteln und dann alle zu summieren?
Probiere es mit diesem Ansatz:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:attr="http://nanoprise.freehostia.de/" exclude-result-prefixes="attr">
<xsl:template match="COMPUTER">
<table>
<thead>
<tr>
<th>Info</th><th>Preis</th>
</tr>
</thead>
<tbody>
<xsl:apply-templates select="attr:info"/>
</tbody>
</table>
</xsl:template>
<xsl:template match="attr:info">
<tr>
<td><xsl:value-of select="@label"/>:</td>
<td>
<xsl:call-template name="preis">
<xsl:with-param name="summe" select="0"/>
<xsl:with-param name="teile">
<xsl:for-each select="member">
<xsl:value-of select="concat(.,'|')"/>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</td>
</tr>
</xsl:template>
<xsl:template name="preis">
<xsl:param name="summe"/>
<xsl:param name="teile"/>
<xsl:choose>
<xsl:when test="string-length($teile) > 0">
<xsl:call-template name="preis">
<xsl:with-param name="summe" select="$summe +
number(translate(/COMPUTER/child::*[local-name() = substring-before($teile,'|')]/@price,',','.'))"/>
<xsl:with-param name="teile" select="substring-after($teile,'|')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$summe"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Ergebnis:
Info Preis
Gesamt: 341.61
ohne Case: 281.71
Grüße,
Thomas