by Hippo2000(1999/9/29)
kbd.xslは、よく雑誌なんかに載っている「Yes/Noで答える性格診断テスト」みたいなものをIEで実現しようというXSLなのです。ああいうものをなんと読んでいいのか分からないので、とりあえず「診断テスト」と読んでみました。(何かよい呼び方があったら教えて下さい)
IEを利用しているのでマルチメディアな表現も簡単です。さらにExcel97を利用してkbd.xslに対応したXMLを作成するプログラムの使い方も一緒に説明します。このファイルやサンプル・プログラム、kbdtemp.xlsなどはまとめてダウンロードできます。ダウンロード
以下のようなインチキな「血液型占い」を作ってみます。

これをXMLで以下のように表現します。
<?xml version="1.0" encoding="Shift_JIS"?>
<?xml:stylesheet type="text/xsl"
href="kbd.xsl"?>
<KBD><Rule>
<Item ID="NODE181">
<Body>明るい性格ですね</Body>
<Case Name="Oval 84" Text="Yes" ID="NODE25"/>
<Case Name="Oval 85" Text="No" ID="NODE30"/>
</Item>
<Item ID="START">
<Body>あなたの血液型は?</Body>
<Case Name="Oval 35" Text="A型" ID="NODE15"/>
<Case Name="Oval 36" Text="B型" ID="NODE181"/>
<Case Name="Oval 40" Text="O型" ID="NODE18"/>
<Case Name="Oval 42" Text="AB型" ID="NODE20"/>
</Item>
<Item ID="NODE15">
<Body>几帳面でしょう</Body>
<Case Name="Oval 86" Text="Yes" ID="NODE25"/>
<Case Name="Oval 87" Text="No" ID="NODE30"/>
</Item>
<Item ID="NODE18">
<Body>親分肌でしょう</Body>
<Case Name="Oval 74" Text="Yes" ID="NODE25"/>
<Case Name="Oval 75" Text="No" ID="NODE30"/>
</Item>
<Item ID="NODE20">
<Body>分裂症ですね?</Body>
<Case Name="Oval 58" Text="Yes" ID="NODE25"/>
<Case Name="Oval 59" Text="No" ID="NODE30"/>
</Item>
<Item ID="NODE30">
<Body>もう一度、血液型を
検査してもらいなはれ</Body>
</Item>
<Item ID="NODE25">
<Body>大当たり</Body>
</Item>
</Rule></KBD>
|
画面は以下のようなものが表示され、ボタンがクリックされるたびに遷移していきます。


IEを使っているのでイメージを表示させたり、フォントを指定したりすることができます。
以下のようなXMLを表現します。
<?xml version="1.0" encoding="Shift_JIS"?>
<?xml:stylesheet type="text/xsl"
href="kbd.xsl"?>
<KBD><Rule>
<Item ID="NODE21">
<Body>
<IMG SRC="toba/manaty_up.jpg"/>
こっちに来たぁ</Body>
<Case Name="Oval 217" Text="アシカShowやってんで" ID="NODE26"/>
</Item>
<Item ID="NODE261">
<Body>
<IMG SRC="toba/manaty.jpg"/>
魚と遊んでるよ</Body>
<Case Name="Oval 198" Text="こっち来い" ID="NODE21"/>
</Item>
<Item ID="NODE25">
<Body>
<IMG SRC="toba/asika_j.jpg"/>
<H1>ジャンプ!</H1></Body>
<Case Name="Oval 64" Text="オタリア見た?" ID="NODE7"/>
<Case Name="Oval 65" Text="パンダイルカ" ID="NODE22"/>
</Item>
<Item ID="NODE26">
<Body>
<IMG SRC="toba/asika_wa.jpg"/>
輪くぐり</Body>
<Case Name="Oval 52" Text="次" ID="NODE30"/>
</Item>
<Item ID="NODE22">
<Body>
<IMG SRC="toba/panda.jpg"/>
ほぉー</Body>
<Case Name="Oval 47" Text="アシカShowやってるよ" ID="NODE26"/>
</Item>
<Item ID="START">
<Body>水族館めぐり。どこにいく?</Body>
<Case Name="Oval 6" Text="オタリア" ID="NODE7"/>
<Case Name="Oval 16" Text="パンダイルカ" ID="NODE22"/>
<Case Name="Oval 200" Text="マナティ" ID="NODE261"/>
</Item>
<Item ID="NODE7">
<Body>
<IMG SRC="toba/otaria.jpg"/>
寝てんで。</Body>
<Case Name="Oval 11" Text="アシカShowやってるよ" ID="NODE26"/>
</Item>
<Item ID="NODE30">
<Body>
<IMG SRC="toba/asika_3.jpg"/>
三輪車</Body>
<Case Name="Oval 90" Text="次" ID="NODE25"/>
</Item>
</Rule></KBD>
|
画面は以下のようなものが表示されます。

kbd.xslを用いるXMLには、以下のようにタグになります。
<?xml version="1.0" encoding="Shift_JIS"?>
<?xml:stylesheet type="text/xsl"
href="kbd.xsl"?>
<KBD><Rule>
<Item ID="START" [TITLE="タイトル"] [BGCOLOR="背景色"] [BACKGROUND="背景"]>
<Body>表示内容</Body>
<Case Name="条件名1" Text="表示文字列1" ID="遷移先1"/>
<Case Name="条件名2" Text="表示文字列2" ID="遷移先2"/>
</Item>
<Item ID="遷移先1" [TITLE="タイトル"] [BGCOLOR="背景色"] [BACKGROUND="背景"]>
<Body>表示内容</Body>
</Item>
</Rule></KBD>
|
| タグ | 説 明 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| KBD | KBD.xslに対応するXMLの一番外側の要素です。子供としてRule要素を1つ持ちます | |||||||||
| Rule | 遷移ルール全体の表す要素です。子供として複数のItem要素を持ちます。 | |||||||||
| Item | 画面に表示される1つの単位を表します。子供としてBody要素を1つ、0または1つ以上のCase要素を持ちます。 属性は以下の1つを持ちます。
|
|||||||||
| Body | 画面に表示される内容を表します。子供にはXHMLのBODYと同じ要素が指定できます。 属性は以下の3つを持ちます。これらの属性は指定されなければ現在の値のままになります。
|
|||||||||
| Case | 選択肢を表します。子供はありません。属性は以下の3つを持ちます。
|
kbdtemp.xlsはExcel97によりKBD.XSLに対応するようなXMLを出力するプログラムです。ダウンロード
Win95、Win98のExcel97で動作を確認しています。

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。