Mozillaが搭載しているXSLTプロセッサ機能「TransforMiix」を利用したXULアプリケーション「xsltp」について。
まず変換に使うサンプルファイルを用意する。今回はXBELによる簡単なリンク集をサンプルとした。
最初にPHPが使用しているライブラリ「Sablotron」で変換してみる。
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<title>Arielworks.netのブックマーク</title>
</head>
<body>
<h1>Arielworks.netのブックマーク</h1>
<p>試験的に作ってみたXBELによるブックマーク</p>
<dl>
<dt>サーバ運用関係</dt>
<dd>サーバ運用に関するサイト</dd>
<dd>
<dl>
<dt>
<a href="http://www.apache.org/">The Apache Software Foundation</a>
</dt>
<dd>HTTPサーバApacheを配布している。</dd>
<dt>
<a href="http://www.apache.jp/">JAPAN APACHE USERS GROUP</a>
</dt>
<dd>Apacheに関する日本語の情報。</dd>
DOCTYPE宣言は無いが、XSL文書に記述したとおりに変換されている。
次に、xsltp(0.1.20040116)で同じファイルを使い変換してみる。
<a0:html xmlns:a0="http://www.w3.org/1999/xhtml" xml:lang="ja" xmlns:xml="http://www.w3.org/XML/1998/namespace"><a0:head><a0:title>Arielworks.netのブックマーク</a0:title><a0:base href="file:///D:/SERVERS/HTTP/web/articles/2004/0216a/bookmark.xml"/></a0:head><a0:body><a0:h1>Arielworks.netのブックマーク</a0:h1><a0:p>試験的に作ってみたXBELによるブックマーク</a0:p><a0:dl><a0:dt>サーバ運用関係</a0:dt><a0:dd>サーバ運用に関するサイト</a0:dd><a0:dd><a0:dl><a0:dt><a0:a href="http://www.apache.org/">The Apache Software Foundation</a0:a></a0:dt><a0:dd>HTTPサーバApacheを配布している。</a0:dd><a0:dt><a0:a href="http://www.apache.jp/">JAPAN APACHE USERS GROUP</a0:a></a0:dt><a0:dd>Apacheに関する日本語の情報。</a0:dd>
XML宣言が無い上にindent="yes"
は無視され名前空間接頭辞も任意の値になってしまっている。
恐らくこの変換結果はMozillaが内部で扱うコードであって人間が見る事を前提にした物では無いからではないだろうか。接頭辞が任意の値だとしても結びつけられている名前空間が同じであれば計算機が読む分には等価であるし、indent
属性が無視されているのもそれを必要とするのは人間だけだ(ブラウザのレンダリングに微妙に関わってくるが)。
TransforMiixは単体で配布されている事を考えるとこれはxsltpが原因なのかもしれない。ともかく現状ではxsltpはXSL変換に使えない事は間違いない。