XML変換言語
XML変換言語とは、XML文書を入力とし、何らかの目的に適合したXML文書(に必ずしも限らない)を出力するような変換を行う変換言語である。
XML から XML への変換
編集XML から XML への変換では、XML文書が出力される。このような変換を組み合わせるとXMLパイプラインが形成される。
XML から XML 以外への変換
編集XML からデータへの変換では、何らかのバイトストリームが出力される。最も重要なものとしてXMLからHTMLへの変換がある(HTML文書は必ずしもXML文書ではない)。
XSLTは、XML記述を基に、一般のプログラミング言語のソースコードを生成する、といったことも行うことができるように設計されている。
実際の言語
編集- XSLT
- 最も有名なXML変換言語。XSLT 1.0 のW3C勧告は1999年、XPath 1.0 と共に公開され、それ以降広く実装されている。XSLT 2.0 は2007年1月にW3C勧告となり、Saxon XSLT のように既にそれを実装したソフトウェアも出回っている。
- XQuery
- 名前に "query"(クエリ)とあるが、汎用言語としての機能を持つ。ゼロックスのウェブプログラミングモデルを起源とし、マイクロソフト、オラクル、IBMなどが採用していたデファクトスタンダードだったが、W3C勧告として採用された。XPath 2.0 に基づいている。XQuery のプログラムは XSLT と同様に副作用がなく、機能的にもほぼ同じだが(変数や関数の宣言、W3Cスキーマ型を使った繰り返しなど)、文法は大きく異なる。XQuery はロジック駆動型であり、FOR、WHERE、関数合成(例えば fn:concat("<html>", generate-body(), "</html>"))などを使う。一方、XSLTはデータ駆動型であり、入力文書が条件を満たすとテンプレートが起動される形式であり、コードが書かれている順序に実行されるわけではない。
- STX
- STX (Streaming Transformations for XML) は XSLT に触発された言語だが、ストリーミングを乱さないように変換をワンパスで行うよう設計されている。Javaによる実装 (Joost) と Perlによる実装 (XML::STX) がある。
- XML Script
- Perl に触発された命令型スクリプト言語であり、XML の構文を使う。XPath と同時に独自の DSLPath を入力木構造からノードを選択するのに使う。
- FXT
- Standard ML で実装された関数型XML変換ツール。
- XDuce
- XSLT に比較して文法が軽量化された型付き言語。実装はMLで行われている。
- CDuce
- XDuce を汎用関数型言語に拡張したもの。
- XStream
- XML文書用の関数型変換言語。ストリーミングで使うことができ、入力文書の構文解析が完了する以前から出力を次の処理に渡すことが可能。場合によってはメモリに収まりきらない巨大なXML文書の変換も可能である。XStream のコンパイラは CeCILL というフリーソフトウェアのライセンスで提供されている。
- Xtatic
- XDuce の手法を C# に適用したもの。
- HaXml
- Haskellで書かれたXML変換のためのライブラリとツールの集まり。一貫性のある強力なアプローチである。こちらのIBMの文書も参照。新しい類似のソフトウェアとして HXML や Haskell XML Toolbox (HXT) がある。
- XMLambda
- Erik Meijer と Mark Shields が1999年の論文で解説した言語だが、実装したソフトウェアは存在しない。
- FleXML
- Kristofer Rose が実装したXML処理言語。XML DTD に変換規則を追加する手法を採用している。