修飾子
軸修飾子は次のように複数あります。
parent
Type1/parent::Type2
タイプ Type1 のノードはタイプ Type2 の親を持つことを意味します。
ancestor
Type1/ancestor::Type2
タイプ Type1 のノードはタイプ Type2 の祖先を持つことを意味します。
descendant
Type1/descendant::Type2
タイプ Type1 のノードはタイプ Type2 の子孫を持つことを意味します。
descendant-or-self
Type1/descendant-or-self::Type2
1) Type1 はタイプ Type2 のスーパータイプであるか、2) タイプ Type1 のノードはタイプ Type2 の子孫を持つことを意味します。特に、この軸は Type1 の代わりに '*' が使用されている場合に役立ちます。
following-sibling
Type1/following-sibling::Type2
2 つのノードが同じリストの子に属し、このリストではタイプが Type2 のノードがタイプ Type1 のノードの後 (直後または推移的) に続くことを意味します。
next-sibling
Type1/next-sibling::Type2
2 つのノードが同じリストの子に属し、このリストではタイプが Type2 のノードがタイプ Type1 のノードの直後に続くことを意味します。
child_name
Type1/<child_name>::Type2
Type1 ノードの子 child-name はタイプ Type2 であることを意味します。そのような子を持つ AST タイプがない場合は、エラーが報告されます。
sibling_indexafter a child name
Type1/<child name>[<sibling_index>]::Type2
タイプ Type1 のノードが、タイプ Type2 のノードのリストの子の sibling_index-th 要素であることを意味します。
sibling qualifierafter a child name
//ExprCall/Params[*]::ExprBinary
角括弧の間に数値ではなくアスタリスクが指定されている場合、対応するリストの子で最初に一致する要素が使用されます。上の式は、関数呼び出しにタイプ 'ExprBinary' の引数が少なくとも 1 つある場合に一致します。