XPath/XQuery についてよくある質問

www.altova.com すべてを展開/折りたたむ このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  XPath/XQuery: 式、関数、変数 > XPath/XQuery 式と関数 >

XPath/XQuery についてよくある質問

 

XPath 式がテーブルの繰り返し行にある場合、テーブルの行に対応する要素はコンテキストノードです。例えば、 Row の場合。

 

絶対パスを使用する場合、例えば、 $XML/Row/@id、XPath 式は、すべての Row 要素の @id 値を返します。 アトミック値を期待する操作を使用する場合、操作はエラーを生成します。
相対パスを使用する場合、例えば、 @id、 すべての繰り返し行が、コンテキスト $XML/ 行を持つため、XPath 式は、現在の Row 要素の1つの @id 属性の単一のアトミック値を返します。

 

 

 

混在したコンテンツ (テキストと要素)付きの要素が XPath ロケーター式によりロケートされる場合、混在したコンテンツ要素のテキストコンテンツのみが返されます。子孫要素のテキストコンテンツは無視されます。

 

ノードの更新アクションの例により最もよく説明されています。下のスクリーンショットで定義される ノードの更新アクション を熟考してください。

XPathMixedElementNonCompliance

XML ツリーが次の構造とコンテンツを持つ場合:

 

<Element1>

   <source>AAA

      <subsource>BBB</subsource>

  </source>

  <target></target>

</Element1>

 

子要素 subsource のコンテンツを無視する一方、混在コンテンツ要素 source のテキストコンテンツと共に、target 要素が更新されます。target という名のノードは、<target>AAA</target>に更新されます。

 

メモ:子孫ノードのテキスト コンテンツを含みたい場合、空の文字列付きの concat 関数を第 2 番目の引数として使用します。上の XML 例を使用することにより、たとえば、式 concat($XML1/Element1/source, '')"AAABBB" を返します。

 

メモ:XPath 対応メソッドのシリアル化を使用するチャート: 混在コンテンツ要素が XPath ロケーター式を使用してロケートされる場合、子孫要素のテキスト コンテンツもシリアル化されます。

 

 

 


(C) 2019 Altova GmbH