microsoftDOMを使うと、XMLの文書を動的に整形することができます。
(指定された条件で抽出するとか、ソート条件を変えるとか)
欠点は、Microsoftの拡張機能であるという事に尽きます。
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>
実際にこの仕組みを使った例は条件指定メモにあります。
<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>