turugina #6633(2008/07/01 03:37 GMT) [ XSLT ] Rating0/0=0.00
負数にも対応させてみました。 出力結果: 2469 は 4 桁で、最大桁は 1000 の位です。 600 は 3 桁で、最大桁は 100 の位です。 1 は 1 桁で、最大桁は 1 の位です。 -65536 は 5 桁で、最大桁は -10000 の位です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" > <xsl:output method="text" encoding="sjis" /> <xsl:template match="/" > <xsl:call-template name="digit"> <xsl:with-param name="n" select="2469" /> </xsl:call-template> <xsl:call-template name="digit"> <xsl:with-param name="n" select="600" /> </xsl:call-template> <xsl:call-template name="digit"> <xsl:with-param name="n" select="1" /> </xsl:call-template> <xsl:call-template name="digit"> <xsl:with-param name="n" select="-65536" /> </xsl:call-template> </xsl:template> <xsl:template name="digit"> <xsl:param name="n" as="xs:integer" /> <xsl:variable name="is_negative" as="xs:boolean" select="$n<0" /> <xsl:variable name="n_" as="xs:string"> <xsl:choose> <xsl:when test="$is_negative"> <xsl:value-of select="xs:string(-1 * $n)" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="xs:string($n)" /> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:value-of select="$n" /> <xsl:text> は </xsl:text> <xsl:value-of select="string-length($n_)" /> <xsl:text> 桁で、最大桁は </xsl:text> <xsl:if test="$is_negative"> <xsl:text>-</xsl:text> </xsl:if> <xsl:text>1</xsl:text> <xsl:for-each select="1 to string-length($n_)-1"> <xsl:text>0</xsl:text> </xsl:for-each> <xsl:text> の位です。
</xsl:text> </xsl:template> </xsl:stylesheet>
Rating0/0=0.00-0+
[ reply ]
turugina
#6633()
[
XSLT
]
Rating0/0=0.00
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" > <xsl:output method="text" encoding="sjis" /> <xsl:template match="/" > <xsl:call-template name="digit"> <xsl:with-param name="n" select="2469" /> </xsl:call-template> <xsl:call-template name="digit"> <xsl:with-param name="n" select="600" /> </xsl:call-template> <xsl:call-template name="digit"> <xsl:with-param name="n" select="1" /> </xsl:call-template> <xsl:call-template name="digit"> <xsl:with-param name="n" select="-65536" /> </xsl:call-template> </xsl:template> <xsl:template name="digit"> <xsl:param name="n" as="xs:integer" /> <xsl:variable name="is_negative" as="xs:boolean" select="$n<0" /> <xsl:variable name="n_" as="xs:string"> <xsl:choose> <xsl:when test="$is_negative"> <xsl:value-of select="xs:string(-1 * $n)" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="xs:string($n)" /> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:value-of select="$n" /> <xsl:text> は </xsl:text> <xsl:value-of select="string-length($n_)" /> <xsl:text> 桁で、最大桁は </xsl:text> <xsl:if test="$is_negative"> <xsl:text>-</xsl:text> </xsl:if> <xsl:text>1</xsl:text> <xsl:for-each select="1 to string-length($n_)-1"> <xsl:text>0</xsl:text> </xsl:for-each> <xsl:text> の位です。
</xsl:text> </xsl:template> </xsl:stylesheet>Rating0/0=0.00-0+
[ reply ]