

































|
| | |
拡張要素と拡張関数は、Xalan のようなXSLT処理系が、拡張によってあなたの出来ることを簡単にするための、強力なメカニズムを提供する。XMLオープンソース開発者コミュニティからの貢献によって、われわれはXalan-Javaで同梱された拡張ライブラリに含まれる便利な拡張を配置する作業を行っている。もしあなたにアイディアや貢献したいことがあれば、Xalan Development Mailing Listでわれわれにメールを送ってほしい。
|
| | |
われわれは、それが意味をなすかぎりで、新しい Xalan 拡張を org.apache.xalan.lib.Extensions クラスに置いて、このクラスにネームスペースを定義した:
http://xml.apache.org/xalan
もし Xalan-Java が提供する拡張を呼び出すなら、このネームスペースをあなたのスタイルシート要素中で定義して、あなたがそれに関連付けたネームスペース プレフィックスを使ってこの拡張を呼び出すことをお勧めするよ。こうすると、もしわれわれが後で Xalan-Java で提供する拡張をどういう風に保存することにしたとしても、あなたのスタイルシートを修正する必要はないだろう。
この名前空間の使用例については、nodeset 拡張関数の例を見てくれ。
|
| | |
標準のXSL変換処理は、単一のXSLスタイルシート、単一のXMLソースツリー、そして変換結果ツリーからなる。この変換処理は完全な結果を単一のorg.apache.trax.Result オブジェクトに送る。
Redirect エクステンション
(org.apache.xalan.xslt.extensions.Redirect) は、あなたが変換出力の一部を複数のファイルにリダイレクトするように使うことが出来る3つの拡張要素を提供している: <open>, <write>, <close> だ。もし<write> 要素を単独で使用すれば、このエクステンションはファイルを開いて、それを書き込んで、すぐにファイルを閉じる。もし明示的にファイルのオープンとクローズを制御したければ、<write> をこの <open> や <close> の要素と結びつけて使うんだ。
これらの要素はそれぞれ、出力ファイルを指定する file 属性や select 属性をもっている。file 属性は文字列を取るので、ここに出力ファイル名を直接指定する。select 属性ならXPath式を取るので、あなたは動的に出力ファイルを生成することが出来る。もし両方の属性を指定したら、Redirect エクステンションはまず select 属性を評価して、もしこれが有効なファイル名を返さなかった場合は、続いてfile 属性を評価する。
|
| | |
org.apache.xalan.lib.NodeInfo は、ソースドキュメント中のノードの位置情報を取得するための拡張要素を提供する:
| | |
org.apache.xalan.lib.NodeInfoに実装されている
lineNumber() はカレントノードのソースドキュメント内での行番号を返し、
lineNumber(node-set) はnode-set中の最初のノードのソースドキュメント内での行番号を返す。
 | この関数は、行番号が未知である(たとえばソースがDOMのDocumentだった場合)には -1 を返す。 |
|
| | |
org.apache.xalan.lib.NodeInfoに実装されている
columnNumber() はカレントノードのソースドキュメント内での列番号を返し、
columnNumber(node-set) はnode-set中の最初のノードのソースドキュメント内での列番号を返す。
 | この関数は、列番号が未知である(たとえばソースがDOMのDocumentだった場合)には -1 を返す。 |
|
|
| | |
JDBCデータソースへの接続のための拡張関数を提供する。これはクエリを実行して、「ストリーム可能な」結果セットを通して、累積的に動作する。ストリーミング(単一の行ノードを、結果セットのトラバース[たどり]に再利用する)が、操作のデフォルトモードになっている。もし完全な結果セットに無制限のアクセスをしたいなら、クエリの結果セットをキャッシュすることが出来る(結果セット中のそれぞれの行に1行のノードとなる)。
もしあなたがストリーミングモードを使うなら(デフォルト)、同時的には1つの行要素にのみ、結果セットは順次にのみ、アクセスできる。たとえば、結果セット中のノードを別の方法で返すような、スタイルシート中でのXPath式の利用は、予期しない結果を生成しうる。
 | SQLライブラリの多くの機能は、コネクション プーリングやパラメータ付きクエリ、キャッシング、XMLソースドキュメントからの接続情報やクエリ パラメータの展開のサポートも含めて、John Gentilin (johnglinux@eyecatching.com)の功績が大きい。彼は数多くのSQL library samplesも作ってくれた。 |
org.apache.xalan.lib.sql.XConnection は、あなたがスタイルシート中で使えるような、数多くの拡張関数を提供している。
- new() -- XConnectionコンストラクタを使ってデータソースに接続し、XConnectionオブジェクトを返す。スタイルシートがデータソースから取得できるコネクションプールから接続を生成するコンストラクタを使うことができる。コネクションプールの使用をサポートするには、SQLライブラリがConnectionPool のインターフェースと実装 DefaultConnectionPool をインクルードしていなければならない。あなた自身のConnectionPoolの実装を使ったっていい。
- query() -- XConnection オブジェクトの query() メソッドを使って、row-setノードの形で「ストリーム可能な」結果セットを返す。row-setで同時に作業する行は1つにしてくれ。同じ行の要素は何度も使われるから、あなたは完全な結果セットが返ってくる前に、row-setを「変換」し始めることができる。
- pquery(), addParameter(), addParameterFromElement(), clearParameters() -- XConnection の pquery() メソッドを他のメソッドと連携して使って、パラメータ付きのクエリをセットアップして実行する。
- enableStreamingMode() を使って、結果セットを通じて1つの行ノードを「ストリーム」するのに使う。そして disableStreamingMode() はクエリ結果セットをキャッシュする。
- close() -- XConnection オブジェクトの close() メソッドを使って、接続を切断する。
query() と pquery() 拡張関数は、column-header 要素の配列(を必要なだけ)、反復的に使われる1つのrow要素、そしてcol要素の配列を含む Document を返す。column-header要素のそれぞれは(row-set中のcolumnにつきひとつ)、ResultSetMetaDataオブジェクト中のそれぞれの列の記述子についての属性 (ColumnAttribute) を含む。それぞれの col 要素は、現在の行のその列の値のテキスト表現を含むテキストノードを含んでいる。
|
| | |
org.apache.xalan.lib.PipeDocumentで実装されている
pipeDocument 拡張要素は、1つ以上の、一連の変換処理を通してXML文書をパイプする。
それぞれの変換の出力は次の変換処理にパイプされる。最後の変換処理がターゲット ファイルを生成する。
たとえば、あなたが、変換されるべき文書を指定するような要素をもつ、"book"ドキュメントを処理するスタイルシートを持っているとしよう。この主要なスタイルシートはこの本の目次を生成する。それぞれのソースドキュメントについては、pipeDocument 拡張要素を使って、1つ以上の一連の変換処理を通して文書をパイプする。
|
| | |
org.apache.xalan.lib.Extensionsで実装されている
evaluate (xpath-expression) 関数は、xpath-expression を現在のXPath式コンテキストで評価した結果を返す(自動的にエクステンションのメカニズムによって渡される)。
evaluation 拡張関数は、実行する時になるまで式の値が分からない(訳注 - つまり動的に式を変えたい)場合に使おう。
|
| | |
org.apache.xalan.lib.Extensionsで実装されている
tokenize (tokenize-string, delimiters)
あるいは
tokenize (tokenize-string) の関数は、tokenize-string のそれぞれのトークンにつき1つのテキストノードを含むnode-setを返す。
delimiters は、tokenize-string をそれぞれのトークンに切り離すために使われる文字を決定する。もしあなたがdelimiters 引数を含めなければ、この関数はタブ(	), 改行 (
), 復改 (
), 空白 ( ) をデリミタとして使用する。tokenize-string が空文字列だったら、あるいはdelimiters しか含まなかったら、その結果は空のnode-set となる。
|
| | |
これからやる。 共通の値についてアイテムの十分なグループ化を提供する。
|
| | |
これからやる。 スキーマまたはDTDの型を表す文字列を返す。
|
| | |
これからやる。 文字列を入力として、日付を表す長い値を返す。
|
| | |
これからやる。 文字列をとって、それを指定したとおりに書式化する。
|
| | |
これからやる。 grep機能を実行して部分文字列を返す。
|
| | |
これからやる。 文字列をトークン化して、それぞれをDOMのTextノードとして、sub-template を実行する。
|
|
|