Streaming Transformations for XML

Streaming Transformations for XML(略: STX)は、XSLTバージョン1.0および2.0に代わる高速かつ低メモリ消費量を意図したXML変換言語である。XSLT 3.0に関する現在の作業にはストリーミング機能が含まれている。

## 概要

[編集]

STXは、ストリームベースのXMLを効率的に処理するためのXML標準である。 基本的なXSLTはストリームベースの処理にはあまり適しておらず、STXがこのニッチを埋める。

従来のXML処理では、使用するためにXMLドキュメント全体をメモリにロードする必要がある。対照的に、SAXは「要素を開く」、「要素を閉じる」、「テキスト・ノード」などのXMLイベントをストリーミング（英語版）するため、他のソフトウェアはファイルの終わりに到達する前に情報の解釈をすぐに開始できる。残念ながら、一部のソフトウェアではこの方法でXMLフラグメントを効果的に使用することができず、処理を開始するためにドキュメント全体を構築する必要がある。XSLTの場合も同様である。XSLTのXPathはドキュメント全体の任意のノードを選択できる仕様のため、ドキュメント全体がメモリ内で利用可能である必要がある。

STXでは現在のノードのすぐ周囲にあるクエリのみが許可されるため、SAXイベント・ノードが到着次第すぐに変換と出力を開始できる。処理後すぐにノードを破棄できるため、メモリ使用量がXSLTより劇的に低くなる。クエリのスコープが制限されているのがSTXの特徴である。

このアーキテクチャ上の決定により、STXはニッチな言語として意図的に疎外される。実際、STXが汎用変換言語であると言うのは間違いである; ただし、変換のニーズをSTXで満たせる場合は、それが効率的で賢い選択となる。

## 仕様

[編集]

* STXのクエリ言語はSTXPathと呼ばれ、XPath 2.0（英語版）に基づいている。
* STXの実装はJavaとPerlで利用できる。

## 似たようなプロジェクト

[編集]

XML構文を使用して宣言されるSTXとは異なり、次の2つのプロジェクトはSAXイベントをコールバック関数に関連付ける:

* Xineo OAX
* SAX Adapter

## 外部リンク

[編集]

* STXのホームページ
* STXの手引き