Scriptタグを使う

・比較演算子などそのまま記述できるようにするため、ScriptコードをCDATAセクション内に記述する。
・<Script>タグ未対応のプラウザ用に<xsl:comment>を使いHTML文書でコメント扱いにする。

[サンプルXML文書を表示](下のフレームに)

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="script02.xsl"?>
<root>
<title>2003年11月05日の東証株式第一部情報</title>
<info><name>銘柄</name><end>終値(円)</end><total>出来高(千株)</total></info>
<data>
<kabu><name code="6752">松下</name><end>1529</end><total>12302</total></kabu>
<kabu><name code="6753">シャープ</name><end>1786</end><total>3964</total></kabu>
<kabu><name code="6758">ソニー</name><end>4030</end><total>8220</total></kabu>
<kabu><name code="6764">三洋</name><end>516</end><total>7551</total></kabu>
<kabu><name code="6501">日立</name><end>692</end><total>21896</total></kabu>
<kabu><name code="6502">東芝</name><end>440</end><total>17832</total></kabu>
<kabu><name code="6701">NEC</name><end>1027</end><total>19229</total></kabu>
<kabu><name code="6702">富士通</name><end>708</end><total>16634</total></kabu> </data>
<end>以上です(2004/6/7)</end>
</root>

XSLソース

<?xml version="1.0" encoding="Shift_Jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS"/>

<xsl:template match="/">
<HTML>
<HEAD>
<Script language="JavaScript">
<xsl:comment>
<![CDATA[

var timeID;
function Now(){
d = new Date();
h = (d.getHours() >= 10) ? d.getHours() : "0" + d.getHours();
m = (d.getMinutes() >= 10) ? d.getMinutes() : "0" + d.getMinutes();
s = (d.getSeconds() >= 10) ? d.getSeconds() : "0" + d.getSeconds();
timeID = setTimeout("Now()",1000);
var aph = (d.getHours() < 12) ? "am "+d.getHours() : "pm "+parseInt(d.getHours()-12);
var fmt =aph + ":" + m + ":" + s;
time.innerText=d.getYear()+'年'+(d.getMonth() + 1)+'月'+d.getDate()+'日'+" "+fmt;
}
function Code(c){
alert(c + "番です");
}
function All(e,t){
var all = e * t;
alert("総取引高は:" + all + "千円です");
}
]]>
</xsl:comment>
</Script>

</HEAD>
<BODY>
<center><H4>Scriptタグを使った例</H4></center>
<xsl:apply-templates select="root/data"/>
<button>
<xsl:attribute name="onclick">Now()</xsl:attribute>
現在の日付と時刻を表示
</button>・・・・→ <span id="time">(ここに時刻を表示)</span>
</BODY>
</HTML>
</xsl:template>

<xsl:template match="data">
<button>
<xsl:attribute name="onclick"> Code(<xsl:value-of select="kabu[position()=1]/name/@code"/>)</xsl:attribute>
松下銘柄のコード番号は?
</button><br/>
<button>
<xsl:attribute name="onclick">All(<xsl:value-of select="kabu[position()=3]/end"/>, <xsl:value-of select="kabu[position()=3]/total"/>)</xsl:attribute>
ソニーの総取引高は?
</button><br/>
</xsl:template>
</xsl:stylesheet>

end(04/6/7)