image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« ピックアップ:スライドショーのようにテキストを読むGreasemonkeyスクリプト, 「iPod touch」の日本語入力は「ことえり」じゃない, etc... | トップページ | ピラミッドを作る (xvcd) »

2007-09-08

ピラミッドを作る (xslt)

- http://ja.doukaku.org/8/
> > ピラミッドを作る どう書く?org
を xfy/xvcd でかいてみようと思った。

その前に xslt で書いてみた。
動作させるには 2.xml を firefox や safari で open すればよい。

$ cat 2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="2.xsl" ?>
<ex1:input xmlns:ex1="http://www.example.com/ex1">10</ex1:input>

$ cat 2.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:ex1="http://www.example.com/ex1"
  xmlns="http://www.w3.org/1999/xhtml">

<xsl:template match="/">
  <html>
    <head><title>ピラミッド</title></head>
      <xsl:variable name="stars">
        <xsl:call-template name="stars-str">
      <xsl:with-param name="n" select="ex1:input"/>
    </xsl:call-template>
      </xsl:variable>

    <body>
      <pre>
        <xsl:call-template name="pyr">
        <xsl:with-param name="n" select="ex1:input" />
          <xsl:with-param name="padding" select="''" />
          <xsl:with-param name="stars" select="$stars" />
        </xsl:call-template>
      </pre>
    </body>
  </html>
</xsl:template>

<!-- 再帰処理のルーチン  -->
<xsl:template name="stars-str">
  <xsl:param name="n" />
  <xsl:if test="$n = 1">
    <xsl:text>*</xsl:text>
  </xsl:if>
  <xsl:if test="$n &gt; 1">
    <xsl:call-template name="stars-str">
      <xsl:with-param name="n" select="$n - 1"/>
    </xsl:call-template>
    <xsl:text>**</xsl:text>
  </xsl:if>
</xsl:template>

<!-- 再帰処理のルーチン  -->
<xsl:template name="pyr">
  <xsl:param name="n" />
  <xsl:param name="padding" />
  <xsl:param name="stars" />

  <xsl:if test="$n &gt;= 1">
    <xsl:call-template name="pyr">
      <xsl:with-param name="n" select="$n - 1"/>
      <xsl:with-param name="padding" select="concat($padding,' ')" />
      <xsl:with-param name="stars" select="substring($stars, 3, string-length($stars))" />
    </xsl:call-template>

    <xsl:value-of select="$padding"/>
    <xsl:value-of select="$stars"/>
    <xsl:value-of select="$padding"/>
      <xsl:text>&#xa;</xsl:text>
  </xsl:if>
</xsl:template>

</xsl:stylesheet>

ここまで作って疲れてしまった。
xfy/xvcd に変換するのは明日にしよう。

« ピックアップ:スライドショーのようにテキストを読むGreasemonkeyスクリプト, 「iPod touch」の日本語入力は「ことえり」じゃない, etc... | トップページ | ピラミッドを作る (xvcd) »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/184434/16383345

この記事へのトラックバック一覧です: ピラミッドを作る (xslt):

« ピックアップ:スライドショーのようにテキストを読むGreasemonkeyスクリプト, 「iPod touch」の日本語入力は「ことえり」じゃない, etc... | トップページ | ピラミッドを作る (xvcd) »

mokuji

2013年12月
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        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク