Hallo Forum,
ich stehe vor einem Problem und wäre für eure Hilfe sehr dankbar.
Gegeben (test.xml):
Gesucht:
Ich würde gerne ein Template erstellen, welches von jedem Wert <decimal> die Wurzel zieht und den durchschnittlichen Wert ausgibt.
Bisher hab ich es geschafft Wurzeln zu berechnen oder die Anzahl zu berechnen:
Ausgabe:
Für eure Hilfe wäre ich sehr dankbar
Gruß Michael
ich stehe vor einem Problem und wäre für eure Hilfe sehr dankbar.
Gegeben (test.xml):
Code:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="test.xsl"?> <decimals> <decimal>137</decimal> <decimal>135</decimal> <decimal>132</decimal> <decimal>136</decimal> <decimal>138</decimal> <decimal>132</decimal> <decimal>134</decimal> <decimal>134</decimal> <decimal>131</decimal> <decimal>139</decimal> <decimal>136</decimal> <decimal>133</decimal> <decimal>133</decimal> <decimal>138</decimal> <decimal>134</decimal> <decimal>135</decimal> <decimal>136</decimal> <decimal>137</decimal> </decimals>
Ich würde gerne ein Template erstellen, welches von jedem Wert <decimal> die Wurzel zieht und den durchschnittlichen Wert ausgibt.
Bisher hab ich es geschafft Wurzeln zu berechnen oder die Anzahl zu berechnen:
Code:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl" version="2.0" xmlns:math="http://exslt.org/math" extension-element-prefixes="math"> <xsl:template match="decimals"> <html> <body> Summe: <xsl:value-of select="sum(//decimal)"/> <br/> Anzahl: <xsl:value-of select="count(//decimal)" /> <br/> Durchschnitt: <xsl:value-of select="sum(//decimal) div count(//decimal)" /> <br/> Wurzel: <xsl:for-each select="//decimal"> <xsl:call-template name="sqrt"> <xsl:with-param name="number" select="." /> </xsl:call-template> </xsl:for-each> </body> </html> </xsl:template> <xsl:template name="count"> <xsl:param name="count" select="0" /> <xsl:param name="sqr" select="0" /> <xsl:call-template name="count" > <xsl:with-param name="count" select="$count +1" /> </xsl:call-template> </xsl:template> <xsl:template name="sqrt"> <!-- The number you want to find the square root of --> <xsl:param name="number" select="0" /> <!-- The current 'try'. This is used internally. --> <xsl:param name="try" select="1" /> <!-- The current iteration, checked against maxiter to limit loop count --> <xsl:param name="iter" select="1" /> <!-- Set this up to ensure against infinite loops --> <xsl:param name="maxiter" select="10" /> <xsl:choose> <xsl:when test="$try * $try = $number or $iter > $maxiter"> <xsl:value-of select="$try" /> </xsl:when> <xsl:otherwise> <xsl:call-template name="sqrt"> <xsl:with-param name="number" select="$number" /> <xsl:with-param name="try" select="$try - (($try * $try - $number) div (2 * $try))" /> <xsl:with-param name="iter" select="$iter + 1" /> <xsl:with-param name="maxiter" select="$maxiter" /> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
Code:
Summe: 2430 Anzahl: 18 Durchschnitt: 135 Wurzel: 11.70469991071962611.6189500386222511.48912529307605711.66190378969060111.7473401244707311.48912529307605711.57583690279022511.57583690279022511.44552314225959811.78982612255159511.66190378969060111.53256259467079711.53256259467079711.7473401244707311.57583690279022511.6189500386222511.66190378969060111.704699910719626
Gruß Michael
Comment