xml2dom.xsl


xmlを「そのxmlを生成するDOMスクリプト」に変換するxslです。

ダウンロード xml2dom [ver1.02](2002/08/18)
SVGに応用したサンプル(2002/08/18) [要IE + Adobe SVG Viewer3.0]
  ダウンロード後解凍したら「sample.htm」を開いてください。

今のところの仕様

  1. 出力するのはMicrosoft JScript
  2. コメント、処理命令、xml宣言には未対応(出力せず)
  3. 名前空間(の接頭辞)付きxmlには暫定対応
  4. MSXML3/4,saxonにて動作確認しました。
    (日本語入りのxmlはMSXML系の方がいいようです。)

更新履歴

ver1.02   名前空間に仮対応。(MS JScript環境では追加できる様にした)
ver1.01   文字列、属性値に「\」「"」が含まれていたときエラーになるのを修正。
ver1.00   公開。

使用方法

ダウンロードしてファイル名をxml2dom.xslに変更してご使用下さい。

使用例として、msxsl.exe であれば、

C:\>msxsl test.xml xml2dom.xsl -o dom.js

で、test.xmlと同じ内容のxmlを生成するJScript、dom.jsが出力されます。

作成理由

Adobe SVG Viewerが3.0になりscript対応になったことで、いろいろ遊んでいたのですが、MSXMLのDOMオブジェクトをそのまま、SVG側のDOMに渡せないことがわかりました。
Set svgdom = xmldom
とすると型が違うためエラーになります。(あたりまえですが...)

また、SVGDOM側にはMSDOMのLoadXMLのようにxml文字列を読み込んでDOMとする機能がありませんでした。 SVGDOMを0から構築するには、DOM準拠のスクリプトのみで構築する必要がありました。
MSDOM→SVGDOMのためには、MSDOMを解析する必要もあったのですが、そこの作業を簡略化できないか、というのが作成の理由です。

このxml2dom.xslにより、(xml2dom.xslファイルを多少修正すれば)
  1. MSXMLをxml2dom.xslにより変換
  2. 変換結果をeval()で実行
という流れで、SVGDOM側へxmlを渡すことが可能になります。
[追記]2002/08/18:SVGに応用したサンプルをダウンロード可能にする。

変換例

-----元のxml-----
<root>
	<child att="value">テキスト</child>
</root>
-----元のxml-----


-----生成されたスクリプト-----
var xmldom = new ActiveXObject("MSXML2.DOMDocument");
xmldom.async = false;

var vIDAGAW2 = xmldom.createElement("root");
xmldom.appendChild(vIDAGAW2);

var vIDAHAW2 = xmldom.createTextNode("\n	");
vIDAGAW2.appendChild(vIDAHAW2);

var vIDAIAW2 = xmldom.createElement("child");
vIDAGAW2.appendChild(vIDAIAW2);

var vIDAIAW2IDAJAW2 = xmldom.createAttribute("att");
vIDAIAW2IDAJAW2.text = "value";
vaIDAIAW2 = vIDAIAW2.attributes;
vaIDAIAW2.setNamedItem(vIDAIAW2IDAJAW2)

var vIDAKAW2 = xmldom.createTextNode("テキスト");
vIDAIAW2.appendChild(vIDAKAW2);

var vIDALAW2 = xmldom.createTextNode("\n");
vIDAGAW2.appendChild(vIDALAW2);

WScript.Echo(xmldom.xml);
-----生成されたスクリプト-----
戻る