基本 XPath 式
XPath 式は、データにアクセスするために、または条件を満たしたかどうかを判別するために、メッセージまたは変数内の 1 つ以上のノードを識別する必要がある場合に、オーケストレーションおよびフラット・ファイル・スキーマ定義で使用されます。
XPath は、XML 文書内のノードまたはノードのセット (ノード・セットと呼ばれます) を識別するための文法を定義する XML 標準です。
以下のペインで生成される、デフォルトの XPath 式を編集できます。
- 「For Each」アクティビティーおよび「Split アクティビティー」アクティビティーの「構成」ペインでは、繰り返しエレメントを定義するための XPath 式が生成されます。 「エレメント名」フィールドに表示されるデフォルト XPath 式を編集できます。
- 「While ループ」アクティビティーおよび「If..Then」アクティビティーの「構成」ペインでは、条件を定義するための XPath 式が式ビルダーで生成されます。 「拡張」をクリックすると、表示されたデフォルト XPath 式を編集できます。
XPath 2.0 がサポートされています。
パスによるノードの選択
XPath は、URL またはローカル・ファイル・システム上のディレクトリーに類似したパスとして、XML エレメントおよび属性のロケーションを記述します。 各エレメントまたは属性は、ルート・ノードで始まるツリー内のノードです。 ルート・ノードにはツリー全体が含まれるため、ツリー内のノードはいずれも、ブランチまでのパスをたどることによって見つけることができます。
基本的な構文は次のとおりです。
/root-node/child-node/.../final-element-node/root-node/child-node/.../final-element-node/@attribute-node
メッセージを記述する XML スキーマからこのパスを判別します。
XPath は、属性を識別するために、省略表現として @ シンボルを使用します。 @、または attribute:: 接頭部のないパスは、デフォルトでエレメントを識別します。 例:
/PackingSlip/PONumber/ItemPackingSlip ルート・ノード内の PONumber で検出された「Item」エレメントを識別します。
ノード名および XML 名前空間
ノード名は、tns:OrderNumber や *:Item などの名前空間とともに示される場合もあります。 名前のコロンまでの部分は名前空間を識別する接頭部で、コロンは名前空間とノードのローカル名を区切る文字です。
名前空間は、文書が複数のスキーマからのコンテンツを共有する際に、エレメントまたは属性を一意的に識別するために使用される XML 標準です。 Cast Iron® Studio では、構成文書で使用される XML スキーマの名前空間を自動的に割り当て、管理します。
述部の条件に応じたノードの選択
何らかの条件に適合した時にのみノードを選択することが必要な場合があります。 このような選択条件は述部と呼ばれます。
述部は次のように大括弧で囲んで定義します。
/PV1/PatientDepartment[text()='Nursery']この式は、ノード内のデータが Nursery である場合にのみ、PatientDepartment ノードを選択します。
/Order/OrderDetail/Item[5]この式は、OrderDetail 内の 5 番目の Item ノードを選択します。
条件の有効な演算子
XPath 式は、true または false に評価されるブール条件にすることもできます。 このような式は、特定のノードを選択するため、または単に適合する必要のある条件を識別するために使用できます。 式ビルダーを使用すると、条件の定義に役立ちます。 式に使用できる XPath 演算子は以下のとおりです。
- = 等号
- != 不等号
- < より小
- > より大
- <= 以下
- >= 以上
XPath 式内の関数
- concat()
- 任意数のストリングとノードからのデータを、パラメーターの指定順序で結合できます。 XPath パスをパラメーターとして指定できます。 定数テキスト・ストリングは引用符で囲んで指定します。 例:
concat('New Order # ',/Orders/Order/OrdNumber)
- count()
- 指定するパラメーター内のノード数をカウントできます。
一般的には、パラメーターは、複数のノード (PODetail の子であるすべての Item ノードなど) を識別する XPath パス式です。
例:
count(/Orders/Order)
- normalize-space()
- すべての先行スペース文字と末尾スペース文字を入力パラメーターからトリムし、入力内のすべてのスペースを単一スペース文字および単一改行に正規化します。 例:
normalize-space(/Job/Address/Line1)
- number()
- パラメーターを数値データ型に変換します。 この関数を使用すると、ストリングを数値として扱うことができます。 例:
number(/PurchaseOrder/POTotal)
- string()
- パラメーターをストリング・データ型に変換します。 この関数を使用すると、数値ノードまたは日付ノードをストリングとして扱うことができます。
例:
string(/PurchaseOrder/VendorID)
- translate()
- 個々の文字を、最初のパラメーターで指定した他の文字に置き換えます。 2 番目のパラメーターは置換対象の文字 (複数可) で、3 番目のパラメーターは差し替える文字です。 この関数は、例えばジョブ・キーをすべて大文字にする場合などに役立ちます。
translate(/Issue/ShortDescr,
'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
XPath 関数の完全なリストについては、XPath 仕様 (http://www.w3.org/TR/xpath) を参照してください。
XPath 式のテスト
XPath エバリュエーターを使用して、XML テスト・データに対して XPath 式をテストできます。