(C) IBM Corp. 2000
Net Search Extender 管理およびユーザーズ・ガイド
XML データ・モデルに従えば、XML 文書は、以下の種類のノードを含むツリーのように見えます。
- ルート・ノード
- エレメント・ノード
- テキスト・ノード
- 属性ノード
- ネーム・スペース・ノード
- 処理命令ノード
- コメント・ノード
これらのノード間のリンク、言い換えればツリー構成リレーションシップは、XML 文書の直接の包含リレーションシップを反映しています。
ルート・ノードはルートにのみ存在することができ、ツリーの他の場所には存在できません。このノードには、子として、文書エレメント、オプションのコメント、および処理命令が含まれます。
エレメント・ノードには、ルート・ノード以外のあらゆる種類の
ノードが含まれます。その他の種類のノードは、ツリーの端末ノードにしか、なることが
できません。
「子」、「属性」、および「ネーム・スペース」の、3 つの種類の包含リンクがあります。
「属性」および「ネーム・スペース」の
包含リンクは、それぞれ属性ノードおよびネーム・スペース・ノードにつながっている必要があります。
言い換えれば、エレメント・ノードの子にアクセスするには (グラフ理論からすれば)、「属性」リンクに従ってすべての包含属性を見つけ、「ネーム・スペース」リンクに従って
すべての包含ネーム・スペース宣言を見つけ、さらに、「子」リンクに従って
包含されたエレメント、テキスト・ノード、処理命令、およびコメントを見つける必要があります。
XPath 式はコンテキスト・ノードを基準にして解釈する必要があり、一連のノードを表します。Net Search Extender セレクター・パターンとして使用する場合、コンテキスト・ノードは自由です。つまり、相対パス・パターン p は //p として解釈されます。
Net Search Extender XPath セレクター・パターンを以下に示します。
- コンテキスト N での Pattern '|' LocationPathPattern は、両方とも
コンテキスト N にある Pattern および LocationPathPattern に一致するノードの和集合を表します。
- コンテキスト N での '/'RelativePathPattern は、この RelativePathPattern が
ルート・コンテキストで表すすべてのものを表します。
- コンテキスト N での '//'RelativePathPattern は、ルートの子孫 (子軸上の) であるすべてのコンテキストで、この RelativePathPattern が
表すと解釈されるものの和集合を表します。
- RelativePathPattern '/' StepPattern はコンテキスト N 内のノードに
一致します。ただし、そのノードがその親のコンテキストでの StepPattern に一致し、さらに、その親ノードがコンテキスト N での RelativePathPattern に一致する場合に限られます。
- RelativePathPattern '//' StepPattern はコンテキスト N 内のノードに
一致します。ただし、そのノードがその親のコンテキストでの StepPattern に一致し、さらに、コンテキスト N での RelativePathPattern に一致する上位ノードをもつ場合に
限られます。
- コンテキスト N での 'child'::NodeTest (省略構文: NodeTest) は、N の子 (子軸上の) であり、NodeTest を満たすノードに一致します。
- コンテキスト N での 'attribute'::NodeTest (省略構文: @NodeTest) は、N の属性であり、NodeTest を満たすノードに一致します。
- NodeType '(' ')' は、指定したタイプのノードの場合のみ条件を満たします。
- 'processing-instruction' '(' Literal ')' は、リテラルを名前として持つすべての処理命令タイプのノードを満たします。
- '*' は、すべてのエレメント・ノードまたは
属性ノード (エレメント名の名前マスク) を満たします。
- NCName ':' '*' は、名前の接頭部として NCName をもつ
すべてのエレメント・ノードを満たします。
- QName は、指定した名前をもつすべてのノードを満たします。
注 |
---|
NameTest の形式の NodeTest では、ノードは選択した軸上の基本タイプ、つまり、属性軸上の属性タイプおよび子軸上の子タイプであると想定されます。
したがって、NameTest が使用できるのは、子ノードおよび属性ノードを選択する場合のみです。コメント・ノードまたは処理命令ノードの選択には使用できません。さらに、このパターンは、ネーム・スペース・ノード以外のあらゆる種類のノードの選択に使用できますが、軸指定子「ネーム・スペース」が許可されていないため、ネーム・スペース・ノードの選択には使用できません。 |
パターン例は以下のとおりです。
- chapter | appendix は、すべての章エレメントおよび付録エレメント
を表します。
- table はすべての表エレメントを表します。
- * はすべてのエレメントを表します (これは child::* の省略形です)。
- ulist/item は、ulist 親をもつすべての項目エレメントを表します。
- appendix//subsection は上位の付録をもつすべてのサブセクションを表します。
- / はルート・ノードのみを含む singleton セットを表します。
- comment() はすべてのコメント・ノードを表します。
- processing-instruction() はすべての処理命令を表します。
- attribute::* (または @*) はすべての属性ノードを表します。
以下は、ロケーター・エレメントの構文です。
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
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]