教えてください><
JavaScriptを使って
XSLTに変数(key)を渡し、XMLをHTMLに変換
その結果を表示したいと思っています。
しかし、うまく表示してくれません。
XSLTをXMLに変換してHTMLするところに関しては正常に動いているので、
おそらくJavaScriptに問題があると思います。
どこがおかしいか教えていただけないでしょうか?
以下ソース
<html>
<head>
<title>好きな本
</title>
</head>
<body onLoad="load()">
<script type="text/javascript">
var xml, xslt, xslProc;
function load() {
// 読み込む前に空のドキュメントを生成
if(!document.all) { // ブラウザ判別
// Mozilla
xml = document.implementation.createDocument("", "", null);
xslt = document.implementation.createDocument("", "", null);
}
else {
// Internet Explorer
xml = new ActiveXObject("Msxml2.DOMDocument");
xml.async = false;
xslt = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
xslt.async = false;
}
// 読み込み(*.xml,*.xsl)
xml.load("xmldata.xml");
xslt.load("seiseiform.xsl");
// XSLTプロセッサにスタイルシート(*.xsl)をセット
if(!document.all) { // ブラウザ判別
// Mozilla
xslProc = new XSLTProcessor();
xslProc.importStylesheet(xslt);
}
else {
// Internet Explorer
var xslTemp = new ActiveXObject("Msxml2.XSLTemplate");
xslTemp.stylesheet = xslt;
xslProc = xslTemp.createProcessor();
xslProc.input = xml;
}
}
function transform(in) {
// XSLTプロセッサにパラメータを与えて変換、結果はresult要素に
if(!document.all) { // ブラウザ判別
// Mozilla
xslProc.setParameter(null, "key", in);
var fragment = xslProc.transformToFragment(xml, document);
document.getElementById('result').innerHTML = "";
document.getElementById('result').appendChild(fragment);
}
else {
// Internet Explorer
xslProc.addParameter("key",in);
try {
xslProc.transform;
document.getElementById('result').innerHTML = xslProc.output;
}
catch(e)
{
document.getElementById('result').innerHTML = e.description;
}
}
}
</script>
<form>
<p><input type="text" name="in" size="40"/></p>
<br></br>
<p><input type="submit" value="検索" onClick="transform(in.value)"/>
</p>
</form>
<div id="result"></div>
</body>
</html>
お礼
回答ありがとうございます。 参考URLを読んでみましたら、XML文書に、 <?xml-stylesheet type="text/xsl" href="XXX.xsl"?> という一文を付ければ良いのですね。今読んでいる本にはそういったことが書いてないのでわからなかったです。 ありがとうございました。