Xiプログラミング (1)

 XiはXSLTよりももっと多機能で、拡張性に優れたプログラミング言語です。 XMLというのを意識せず、 普通のプログラミング言語のような感じでとっついてみると、 かえってとても新鮮に感じられることでしょう。

ハロー、ワールドと変数の使用

<?xml version="1.0" encoding="Shift_JIS" ?>
<xi:program xmlns:xi="http://www.baykit.org/Xi/1.1">
<html><body>

<xi:variable name="hello">ハロー Xi ワールド。</xi:variable>

<font color="#800000"><xi:value-of select="$hello"/></font><br/>
<font color="#008000"><xi:value-of select="$hello"/></font><br/>
<font color="#000080"><xi:value-of select="$hello"/></font><br/>

</body></html>
</xi:program>

  • Xiの変数を定義するには、xi:variable (またはxi:var)タグを使います。そのタグで囲んだ中身が値となります。
  • Xiの変数を参照し、値をその場所に埋め込むには、 xi:value-ofタグを使います。

計算と変数

<?xml version="1.0" encoding="Shift_JIS" ?>
<xi:program xmlns:xi="http://www.baykit.org/Xi/1.1">
<html><body>

<xi:comment>
換算レートを定義します。
</xi:comment>
<xi:variable name="exchange_rate">122.40</xi:variable>

<xi:comment>
品目の外価単価をセットします。
</xi:comment>
<xi:variable name="dollar_price1">200</xi:variable>
<xi:variable name="dollar_price2">500</xi:variable>
<xi:variable name="dollar_price3">800</xi:variable>
<xi:variable name="yen_total_price">0</xi:variable>

<xi:comment>
円価を計算し、合計額に足していきます。
※下のように、式の途中で改行することもできます。
</xi:comment>
<xi:set select="$yen_total_price +
  $dollar_price1 * $exchange_rate" out="$yen_total_price"/>
<xi:set select="$yen_total_price +
  $dollar_price2 * $exchange_rate" out="$yen_total_price"/>
<xi:set select="$yen_total_price +
  $dollar_price3 * $exchange_rate" out="$yen_total_price"/>

合計は<xi:value-of select="$yen_total_price"/>円です。<br/>

</body></html>
</xi:program>

  • 本題とは関係ありませんが、Xiでコメントを書くには xi:commentタグを使い、それで囲んだ中に書くようにします。
  • 計算を行い、その値を変数に格納するには、 xi:setタグを使い、 そのselect属性に式を、out属性にその結果をセットする変数を指定します。

コレクション(リスト)を使う

<?xml version="1.0" encoding="Shift_JIS" ?>
<xi:program xmlns:xi="http://www.baykit.org/Xi/1.1">
<html><body>

<xi:variable name="exchange_rate">124.80</xi:variable>
<xi:variable name="yen_total_price">0</xi:variable>

<xi:for-each item="e" select="$Util.collection(200, 500, 800)">
<xi:set select="$yen_total_price + $e * $exchange_rate" out="$yen_total_price"/>
</xi:for-each>

合計は<xi:value-of select="$yen_total_price"/>円です。<br/>

</body></html>
</xi:program>

  • Xiではリスト構造のことをコレクションと呼びます。 コレクションを作るには、 関数 $Util.collection を上記の例のように使います。 上の例では、そのコレクションを使って for-each ループを実現しています。 for-eachループは xi:for-eachタグで指定し、 その属性itemで指定した変数がループ変数となります。 つまり、コレクションの要素を1つずつ順番に取り出して、 itemで指定したループ変数にセットしてから、 xi:for-eachタグで囲まれた範囲の処理をします。

Baykit and Cocoon Top

(first uploaded 2002/12/07 last updated 2002/12/07, URANO398)

PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル