Mozilla搭載のXSLTプロセッサxsltpを使う

ページ情報
制作日
2004-02-16
最終更新日
2004-02-16
参照用URI
http://www.arielworks.net/articles/2004/0216a
分野

Mozillaが搭載しているXSLTプロセッサ機能「TransforMiix」を利用したXULアプリケーション「xsltp」について。

内部処理用?

まず変換に使うサンプルファイルを用意する。今回はXBELによる簡単なリンク集をサンプルとした。

最初にPHPが使用しているライブラリ「Sablotron」で変換してみる。

result_sab(一部)
<?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)で同じファイルを使い変換してみる。

result_xsltp(Sablotronの結果と同じ部分)
<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変換に使えない事は間違いない。

連絡先、リンク、転載や複製などについては「サイト案内」をご覧ください。Powered by HIMMEL