QUERY コマンドを使って、現時点で XPath 式よりロードされた XML ドキュメントに含まれる値を任意で問い合わせることができます。

結果の値はプログラムに返されるので、この QUERY コマンドと一緒に作業リストを提供する必要があります。  この作業リストはゼロと1 つ以上のエントリーによって埋められます。選択されたノードに対するエントリーは 1 つです (NODES キーワードのクエリからの結果)。

作業リストには少なくとも 1 つのフィールドが含まれていなければいけません。このフィールドに NODESVALUE1 キーワードにより指定されたノードが置かれます。

また、NODESVALUE2 から NODESVALUE5 までのキーワードに値が指定された場合は、それぞれに対して追加のフィールドが 1 つ含まれていなければいけません。  例えば、NODESVALUE1 から NODESVALUE5 まで、5 つのキーワードをすべて指定した場合、選択された各ノードの結果値を受け取るために、作業リストには 5 つのフィールドがなければいけません。

構文:

コマンド

キーワード

開発者用メモ

QUERY










NODES

xpath 式

返される値の対象となるドキュメント内で 1 つ以上のノードを識別するために適切に作成された XPath 式を指定します。
このXPath 式は"現在の"ノードのコンテキストで評価されます。  デフォルトでは、"現在の"ノードはドキュメント・ノードですが、これは変更される可能性があります。  "現在の"ノードの設定に関する情報は、SET コマンドを参照してください。
また、XMLQueryService と共に使用する XPath 式の詳細については、「5.35.8 XMLQueryService で使用する XPath 式」を参照してください。
XPath 式の評価時にノードが選択されていない場合は、エラーとして扱われません。  この場合、コマンドは正常に終了 (戻りステータス OK) しますが、作業リストは空になります。

NODESVALUE1








xpath 式

任意。 NODESVALUE1 キーワードは、"選ばれた"各ノード (NODES キーワードに指定された XPath 式の評価により選択された各ノード) に対して提供された作業リストの「最初の」列に返す値を識別します。
NODES キーワードで指定された XPath 式が返される値のエレメント、もしくは属性のセットを完全に識別する場合は、NODESVALUE1 キーワードを指定する必要はありません。 実際、デフォルト値'.' は、コンテキスト・ノード (この場合は "選択された" 各ノード) の値が使用されることを指定する XPath 式です。
このキーワードを指定する場合、"選ばれた"各ノードのコンテキストで評価される XPath 式をさらに指定する必要があります。この XPath 式は、返す値が含まれるノードに関連する単一のエレメントまた属性値を識別します。
また、XMLQueryService と共に使用する XPath 式の詳細については、「5.35.8 XMLQueryService で使用する XPath 式」を参照してください。

*LOCALNAME

名前空間の接頭辞 (ある場合) が無い"選ばれた"ノードのノード名 (通常はエレメント名または属性名) を返します。

*NAMESPACEPREFIX

"選ばれた"ノードの名前空間の接頭辞を返します。

*NAMESPACEURI

"選ばれた"ノードの名前空間のURI を返します。

*NODENAME

"選ばれた"ノードのノード名 (通常はエレメント名または属性名)を返します。

*NODEVALUE

"選ばれた"ノードの値を返します。これは、XPath 式 '.' を利用した時の値と同じです。

*XPATH

この 2 つの値はどちらも XML ドキュメント内の"選ばれた"ノードを一意に識別する、生成された XPath 式を返します。  この生成された XPath 式は多くの場合は序数表記を使用しているため、特定のドキュメント・インスタンスの特定のノード・インスタンスに対してのみ有効です。  ただし、このような生成された式は、引き続き QUERY コマンドを使ってドキュメントを反復処理する際に使用することができます。 
2 番目の形式では、特にドキュメントが名前空間認識モードで処理する際などに、より簡潔な式 (人間には読みづらい) が生成されます。  この簡潔な形式は、クライアント・アプリケーションが処理できないような長さの XPath 式が生成される可能性がある、非常に複雑なXML ドキュメントなどの場合、使用する必要があります。

*XPATH_CONCISE

NODESVALUE2 NODESVALUE3 NODESVALUE4 NODESVALUE5

*LOCALNAME

任意。 NODESVALUE1 で説明されている形式で、4 つまで追加の XPath 式を指定できます。
"選ばれた"ノードは、それぞれ対応する作業リスト列に返されます。
サービスは最初のキーワードが使用されていないと、その後は検索を停止するため、これらのキーワードは連続で指定する必要があります。  例えば、NODESVALUE1 と NODESVALUE3 を指定した場合、NODESVALUE2 が使用されていないため、NODESVALUE3 は無視されます。

例:

以下の例は、今ロードされたドキュメントの <SalesOrder> エレメントごとにクエリを行う QUERY コマンド実行の例です。各クエリで以下が返されます。

  • @SONumber 属性 (売上注文番号) の値、および
  • 含まれる <Customer> エレメントの @CustNumber 属性 (顧客番号) の値

この 2 つの値は、ORDERS 作業リスト内の"選ばれた"ノードに対して返されます。

RDMLX の例

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)

  • No labels