Ich habe XML wie diese,XSLT - unter Verwendung round() Funktion
<doc>
<p>20</p>
<p>20</p>
<p>20</p>
<p>100</p>
<t>160</t>
</doc>
Es gibt 4 <p>
Elemente mit Zahlen enthalten und <t>
stellen die insgesamt über 4 <p>
Elemente.
was mein Ziel ist berechnen Prozent dieser <p>
Elemente und Anzeige.
Dies ist xsl Code, den ich für sie geschrieben habe,
<xsl:variable name="val1" select="abc:get-int-value(doc/p[1]/text())" as="xs:double"/>
<xsl:variable name="val2" select="abc:get-int-value(doc/p[2]/text())" as="xs:double"/>
<xsl:variable name="val3" select="abc:get-int-value(doc/p[3]/text())" as="xs:double"/>
<xsl:variable name="val4" select="abc:get-int-value(doc/p[4]/text())" as="xs:double"/>
<xsl:variable name="valTotal" select="abc:get-int-value(doc/t/text())" as="xs:double"/>
<xsl:variable name="precentage1" select="round(($val1 div $valTotal)*100)" as="xs:double"/>
<xsl:variable name="precentage2" select="round(($val2 div $valTotal)*100)" as="xs:double"/>
<xsl:variable name="precentage3" select="round(($val3 div $valTotal)*100)" as="xs:double"/>
<xsl:variable name="precentage4" select="round(($val4 div $valTotal)*100)" as="xs:double"/>
<xsl:template match="doc">
<xsl:value-of select="$precentage1"/>
<xsl:text> </xsl:text>
<xsl:value-of select="$precentage2"/>
<xsl:text> </xsl:text>
<xsl:value-of select="$precentage3"/>
<xsl:text> </xsl:text>
<xsl:value-of select="$precentage4"/>
</xsl:template>
<xsl:function name="abc:get-int-value" as="xs:double">
<xsl:param name="text" as="xs:string"/>
<xsl:analyze-string select='$text' regex='\d+'>
<xsl:matching-substring>
<xsl:sequence select="number(.)"/>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:function>
Aber es gibt Prozentwerte wie, 13,13,13 und 63. So Summe dieser Zahlen sind 102 (wörtlich sollte es sei 100, 99 oder 101). es scheint der Prozentwert von p [4] hat sich auf 63 statt 62 abgerundet.
Warum passiert das und wie kann ich das beheben?
Danke für die Antwort. Genaue Prozentwerte sind 12.51, 12,51, 12,51 und 62,25 .. Also 62,25 sollte auf 62 aufgerundet werden? – sanjay
@sanjay, wie kommt es? '100' ist genau' 62.5% 'von' 160' –
@sanjay Woher hast du diese Prozentwerte? Die richtigen Werte sind 12,5, 12,5, 12,5 und 62,5. – JLRishe