QUERY コマンドを使って、現時点で XPath 式よりロードされた XML ドキュメントに含まれる値を任意で問い合わせることができます。
結果の値はプログラムに返されるので、この QUERY コマンドと一緒に作業リストを提供する必要があります。 この作業リストはゼロと1 つ以上のエントリーによって埋められます。選択されたノードに対するエントリーは 1 つです (NODES キーワードのクエリからの結果)。
作業リストには少なくとも 1 つのフィールドが含まれていなければいけません。このフィールドに NODESVALUE1 キーワードにより指定されたノードが置かれます。
また、NODESVALUE2 から NODESVALUE5 までのキーワードに値が指定された場合は、それぞれに対して追加のフィールドが 1 つ含まれていなければいけません。 例えば、NODESVALUE1 から NODESVALUE5 まで、5 つのキーワードをすべて指定した場合、選択された各ノードの結果値を受け取るために、作業リストには 5 つのフィールドがなければいけません。
コマンド | キーワード | 値 | 開発者用メモ |
|---|---|---|---|
QUERY | NODES | xpath 式 | 返される値の対象となるドキュメント内で 1 つ以上のノードを識別するために適切に作成された XPath 式を指定します。 |
NODESVALUE1 | xpath 式 | 任意。 NODESVALUE1 キーワードは、"選ばれた"各ノード (NODES キーワードに指定された XPath 式の評価により選択された各ノード) に対して提供された作業リストの「最初の」列に返す値を識別します。 | |
*LOCALNAME | 名前空間の接頭辞 (ある場合) が無い"選ばれた"ノードのノード名 (通常はエレメント名または属性名) を返します。 | ||
*NAMESPACEPREFIX | "選ばれた"ノードの名前空間の接頭辞を返します。 | ||
*NAMESPACEURI | "選ばれた"ノードの名前空間のURI を返します。 | ||
*NODENAME | "選ばれた"ノードのノード名 (通常はエレメント名または属性名)を返します。 | ||
*NODEVALUE | "選ばれた"ノードの値を返します。これは、XPath 式 '.' を利用した時の値と同じです。 | ||
*XPATH | この 2 つの値はどちらも XML ドキュメント内の"選ばれた"ノードを一意に識別する、生成された XPath 式を返します。 この生成された XPath 式は多くの場合は序数表記を使用しているため、特定のドキュメント・インスタンスの特定のノード・インスタンスに対してのみ有効です。 ただし、このような生成された式は、引き続き QUERY コマンドを使ってドキュメントを反復処理する際に使用することができます。 | ||
*XPATH_CONCISE | |||
NODESVALUE2 NODESVALUE3 NODESVALUE4 NODESVALUE5 | *LOCALNAME | 任意。 NODESVALUE1 で説明されている形式で、4 つまで追加の XPath 式を指定できます。 |
以下の例は、今ロードされたドキュメントの <SalesOrder> エレメントごとにクエリを行う QUERY コマンド実行の例です。各クエリで以下が返されます。
この 2 つの値は、ORDERS 作業リスト内の"選ばれた"ノードに対して返されます。
define field(#ORDERNUM) type(*CHAR) length(10) colhdg('Order' 'Number')define field(#CUSTNUM) type(*CHAR) length(10) colhdg('Customer' 'Number')def_list name(#ORDERS) fields(#ORDERNUM #CUSTNUM) type(*WORKING) entrys(100)....clr_list named(#ORDERS)#jsmcmdx := 'query nodes(//SalesOrder) nodesvalue1(@SONumber) nodesvalue2(Customer/@CustNumber) 'use builtin(JSMX_COMMAND) with_args(#jsmcmdx) to_get(#jsmsts #jsmmsg #orders)