XSLTの読込みと適用

XSLT文書(xslファイル)もXML文書の一種なので、XML文書と同じ手順で読み込み利用できる。読み込んだXML文書にXSLファイルを適用しスタイルシート変換するにはtransformNode()メソッドを使う。

●戻り値 = XMLDocumentオブジェクト.transformNode(XSLTのDocumentオブジェクト)

・戻り値には、XSLT変換の結果が文字列として返される。

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

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<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/5/4)</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="/">
<H4><xsl:value-of select="root/title"/></H4>
<xsl:apply-templates select="root"/>
</xsl:template>
<xsl:template match="root">
<table border="1" style="margin-left:1cm;margin-top:-4mm;border:2px solid red">
<tr style="color:blue">
<td>コード番号</td>
<td><xsl:value-of select="info/name"/></td>
<td><xsl:value-of select="info/end"/></td>
<td><xsl:value-of select="info/total"/></td>
</tr>
<xsl:for-each select="data/kabu">
<tr>
<td><xsl:value-of select="name/@code"/></td>
<th style="color:green"><xsl:value-of select="name"/></th>
<td style="text-align:right"><xsl:value-of select="end"/></td>
<td style="text-align:right"><xsl:value-of select="total"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>

HTMLソース

<SCRIPT language="JavaScript"><!--
function test(){
var xmlobj=new ActiveXObject("MSXML2.DOMDocument");
xmlobj.async=false;
xmlobj.load("table01.xml");
alert("XML文書を読み込み完了しました。その内容は\n\n\n"+xmlobj.xml);
var xslobj=new ActiveXObject("MSXML2.DOMDocument");
xslobj.async=false;
xslobj.load("../well/xml02.xsl");
alert("XSL文書を読み込み完了しました。その内容は\n\n\n"+xslobj.xml);
var str = "";
str = xmlobj.transformNode(xslobj);
dv.innerHTML = str;
}
//--></SCRIPT>
</HEAD>
<BODY>
<BUTTON onclick="test()"> XML文書とXSL文書を読込み適用する</BUTTON><BR>
<DIV id="dv" style="margin-left:20px;border:1px solid green">&nbsp;&nbsp;</DIV>

end(04/5/7)