リターン式にテキスト式を指定して、XML文書中の任意のノード配下またはその要素ノードの属性ノードのデータをテキスト形式で取り出すことができます。
リターン式に単一行関数指定を指定することもできます。単一行関数指定を指定すると、rlen関数やval関数の結果をテキスト形式で取り出すことができます。
単一行関数指定の詳細については、“B.2.4 単一行関数指定”を参照してください。
例として、検索式により下記の1件のXML文書がヒットしたものとして説明します。
<doc> <employee eno="19980120" position="general manager"> <name>鈴木太郎</name> <namekana>すずきたろう</namekana> <department sno="1001">開発部</department> <phone>2201-1101</phone> <email>suzuki.taro@example.com</email> </employee> <basic date="2006年02月16日" expense="7200円"> </basic> <detail> <destination area="神奈川県横浜市港北区">本社</destination> <purpose>プロジェクト定例会</purpose> <train>6600円</train> <taxi>600円</taxi> <hotel></hotel> <comment>特になし</comment> </detail> <report>次回までに販売実績チャートの作成/報告が必要</report> </doc>
出張レポート(report)を取り出します。
/doc/report/text()
結果
次回までに販売実績チャートの作成/報告が必要
出張エリア(area)を取り出します。
/doc/detail/destination/@area
結果
神奈川県横浜市港北区
出張費用(expense)から数値を取り出します。
val(/doc/basic/@expense)
結果
7200
リターン式に、リターン項目を複数指定することができます。各リターン項目は“,”で区切ります。複数のリターン項目を指定した場合は、結果として返すそれぞれのリターン項目の値は区切り文字で区切られます。
Java APIを使用する場合は、“,”で区切られます
C APIを使用する場合は、文字コード“\001”の文字で区切られます
従業員番号(eno)、従業員氏名(name)、出張日(date)、出張目的(purpose)を取り出します。
/doc/employee/@eno,/doc/employee/name/text(),/doc/basic/@date,/doc/detail/purpose/text()
結果:Java APIの場合
19980120,鈴木太郎,2006年02月16日,プロジェクト定例会
結果:C APIの場合
19980120 \1 鈴木太郎 \1 2006年02月16日 \1 プロジェクト定例会 \1
従業員番号(eno)、部署番号(sno)および出張日(date)を取り出します。
/doc/employee/@eno,/doc/employee/department/@sno,/doc/basic/@date
結果:Java APIの場合
19980120,1001,2006年02月16日
結果:C APIの場合
19980120 \1 1001 \1 2006年02月16日 \1
参考
ソート式を指定している場合は、検索結果がソート式に従って並べ替えられて返却されます。
注意
リターン項目を複数指定する場合は、すべてのリターン項目は、テキスト式または単一行関数指定でなければなりません。パス式(XML形式での返却)と混在して指定することはできません。