条件、アクション、およびトークンの中には、引数でXPath 1.0の式を使用するものがあります。XPathは、XSLTおよびXPointerとで共有される機能に対し、共通の構文とセマンティックを提供するために開発された言語です。主にXMLドキュメントのアドレス指定で使用されますが、文字列、数値およびブールなどのデータ操作を行う基本的な機能も備わっています。
XPathの仕様では、埋め込みアプリケーションが、情報を定義された複数のアプリケーションにコンテキストを提供する必要があります。DirXMLスクリプト(セクション 4.1, DirXMLスクリプトを参照)では、XPathは次のコンテキストで評価されます。
式の記述で特に指定されていない限り、コンテキストノードが現在の操作になる。
コンテキストの位置とサイズが1。
使用可能な変数が次のように複数ある。
Identity Manager内でスタイルシートのパラメータとして使用可能なもの(現在のところ、fromNDS、srcQueryProcessor、destQueryProcessor、srcCommandProcessor、destCommandProcessorおよびdnConverter)。
グローバル設定変数。
ローカルポリシーの変数。
複数の変数ソース間で名前が競合する場合、優先順位はローカル(ポリシースコープ)、ローカル(ドライバスコープ)、グローバルの順になる。
XPathの構文のため、名前にコロン文字が含まれる変数にはXPathからはアクセスできない。
利用できるネームスペース定義が複数ある。
XMNS:prefixを使用して<policy>要素で明示的に宣言されたネームスペース。
暗黙的に定義された次のネームスペース(同じプレフィックスが明示的に定義されている場合を除く)。
xmlns:js=“http://www.novell.com/nxsl/ecmascript”
xmlns:es=“http://www.novell.com/nxsl/ecmascript”
xmlns:query=“http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsQueryProcessor”
xmlns:cmd=“http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsCommandProcessor”
xmlns:jdbc=“urn:dirxml:jdbc”
別途マップされていないネームスペースプレフィックスは自動的にhttp://www.novell.com/nxsl/java/ <prefix>にマップされる(プレフィックスが、イントロスペクションを使用して利用可能なJavaクラスに解決できるJavaクラスの完全修飾クラス名である場合のみ)。
プレフィックスをJavaクラスに関連付けるためのネームスペース宣言は、ポリシー要素で宣言する必要がある。
使用可能な関数が次のように複数ある。
組み込まれているXPath 1.0のすべての関数。
NXSLで提供されているJava拡張関数。
Java拡張関数にアクセスするには、http://www.novell.com/nxsl/java/ <fully-qualified-class-name>というフォームのURIにマップされているネームスペースプレフィックスを使用します。
利便性のため、別途マップされていないプレフィックスはすべてhttp://www.novell.com/nxsl/java/ <prefix>にマップされます(プレフィックスが、イントロスペクションによって検出できるJavaクラスの完全修飾クラス名である場合)。
NXSLで提供されているECMAScript拡張関数
ECMAScript拡張関数定義は、ドライバに関連付けられているECMAScriptリソースのセットから利用します。
ECMAScript拡張関数にアクセスするには、URI http://www.novell.com/nxsl/ecmascriptにマップされているネームスペースプレフィックスを使用します。
利便性のため、プレフィックスjsおよびesは、別途明示的に定義しない限り、どちらも暗黙的にhttp://www.novell.com/nxsl/ecmascriptにマップされます。
XPathの詳細情報は、W3 Webサイトで参照できます。