[2004-12-29]

microsoft XML Dom

microsoftDOMを使うと、XMLの文書を動的に整形することができます。
(指定された条件で抽出するとか、ソート条件を変えるとか)

欠点は、Microsoftの拡張機能であるという事に尽きます。


HTMLの中のJavaScriptから使用

HTMLの中に書かれているJavaScriptからXML・XSLファイルを読み込み、HTML内の特定の場所を書き換えることで動的にHTMLが変更できます。

サンプル.html:

<html lang="ja">

<head>
<script type="text/JavaScript">
function changeHTML(val){
	//XSLファイルを読み込む
	var stl = new ActiveXObject("Microsoft.XMLDom");
	stl.async=false;
	stl.load("dom.xsl");

	//「test」という属性が入っているタグを検索する
	//すなわち、dom.xslの中で最初にある<xsl:if test="条件">属性が取得できる
	var testfield = stl.selectSingleNode("//@test");

	//test属性の値をセットする。
	//すなわち、<xsl:if test="条件">に対する条件を指定できる
	testfield.value = "名前[.='" + val + "']";

	//XMLファイルを読み込む
	var doc = new ActiveXObject("Microsoft.XMLDom");
	doc.async=false;
	doc.load("dom.xml");

	targetID.innerHTML=doc.documentElement.transformNode(stl); //HTMLを生成し直す
}
</script>
</head>

<body>
	<p><button onClick="changeHTML('ひしだま')">ボタン</button></p>
	<div id="targetID"/> <!--この位置のHTMLが動的に変わる-->
</body>

</html>

実際にこの仕組みを使った例は条件指定メモにあります。


XSLの中のJavaScriptから使用

<script "text/JavaScript">
<xsl:comment>
<![CDATA[
function changeXML(val){

	var stl = document.XSLDocument; //自分のXSLドキュメントを取得する
	var testfield = stl.selectSingleNode("//@test");
	confirm(testfield.value);

	var doc = document.XMLDocument; //自分のXMLドキュメントを取得する
	〜
}
]]>
</xsl:comment>
</script>

技術メモへ戻る
メールの送信先:ひしだま