IBM Books
(C) IBM Corp. 2000

Net Search Extender 管理およびユーザーズ・ガイド


ロケーター (XPath) 式のセマンティクス

XML データ・モデルに従えば、XML 文書は、以下の種類のノードを含むツリーのように見えます。

これらのノード間のリンク、言い換えればツリー構成リレーションシップは、XML 文書の直接の包含リレーションシップを反映しています。

ルート・ノードはルートにのみ存在することができ、ツリーの他の場所には存在できません。このノードには、子として、文書エレメント、オプションのコメント、および処理命令が含まれます。

エレメント・ノードには、ルート・ノード以外のあらゆる種類の ノードが含まれます。その他の種類のノードは、ツリーの端末ノードにしか、なることが できません。

「子」、「属性」、および「ネーム・スペース」の、3 つの種類の包含リンクがあります。 「属性」および「ネーム・スペース」の 包含リンクは、それぞれ属性ノードおよびネーム・スペース・ノードにつながっている必要があります。 言い換えれば、エレメント・ノードの子にアクセスするには (グラフ理論からすれば)、「属性」リンクに従ってすべての包含属性を見つけ、「ネーム・スペース」リンクに従って すべての包含ネーム・スペース宣言を見つけ、さらに、「子」リンクに従って 包含されたエレメント、テキスト・ノード、処理命令、およびコメントを見つける必要があります。

XPath 式はコンテキスト・ノードを基準にして解釈する必要があり、一連のノードを表します。Net Search Extender セレクター・パターンとして使用する場合、コンテキスト・ノードは自由です。つまり、相対パス・パターン p//p として解釈されます。

Net Search Extender XPath セレクター・パターンを以下に示します。

NameTest の形式の NodeTest では、ノードは選択した軸上の基本タイプ、つまり、属性軸上の属性タイプおよび子軸上の子タイプであると想定されます。 したがって、NameTest が使用できるのは、子ノードおよび属性ノードを選択する場合のみです。コメント・ノードまたは処理命令ノードの選択には使用できません。さらに、このパターンは、ネーム・スペース・ノード以外のあらゆる種類のノードの選択に使用できますが、軸指定子「ネーム・スペース」が許可されていないため、ネーム・スペース・ノードの選択には使用できません。

パターン例は以下のとおりです。

以下は、ロケーター・エレメントの構文です。

Locator     ::= LocationPathPattern
           | Locator '|'  LocationPathPattern
 LocationPathPattern  ::= '/' RelativePathPattern ?
           | '//'? RelativePathPattern
 RelativePathPattern  ::= StepPattern
           | RelativePathPattern '/' StepPattern
           | RelativePathPattern '//' StepPattern
 StepPattern    ::= ChildOrAttributeAxisSpecifier NodeTest
 ChildOrAttributeAxisSpecifier ::=
           ('child' | 'attribute') '::'
           | '@'?
 NodeTest    ::= NameTest
           | NodeType '(' ')'
           | 'processing-instruction' '(' Literal ')'
 NameTest    ::= '*' | NCName ':' '*' | QName
 NodeType    ::= 'comment' | 'processing-instruction'

NCName および QName は、XML 命名の推奨で定義されたとおりです。

NCName
コロンを含まない XML 名

QName
NCName を先行させることができる NCName で、先行する NCName の後にはコロンが続きます。 例: NCName:NCName


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]