Comment detail

与えられた数字のケタ数 (Nested Flatten)
負数にも対応させてみました。

出力結果:
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&lt;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> の位です。&#xA;</xsl:text>
  </xsl:template>

</xsl:stylesheet>

Index

Feed

Other

Link

Pathtraq

loading...