2
X 4160 : 2007
a) ノード集合型(ノードの重複のない順序なし集合)
b) 論理型(真又は偽)
c) 数値型(浮動小数点数)
d) 文字列型(UCS文字の列。[ISO/IEC 10646]参照。)
式の評価は,文脈に関して行われる。XSLT及びXpointerの規定は,それぞれXSLT及びXPointerで用
いるXPath式について,文脈をどのように決定するかを示す。文脈は,次のもので構成する。
a) ノード(文脈ノード)
b) 0でない正の整数の対(文脈位置及び文脈サイズ)
c) 変数束縛の集合
d) 関数ライブラリ
e) その式の有効範囲内にある名前空間宣言の集合
文脈位置は,常に文脈サイズ以下とする。
変数束縛は,変数名から変数値への対応付けから成る。変数の値は,オブジェクトであって,式の値と
して可能な任意の型をもつことができ,この規格に規定していない追加の型であってもよい。
関数ライブラリは,関数名から関数への対応付けから成る。各関数は,0個以上の引数をとり,単一の
結果を返す。この規格は,すべてのXPath実装が提供しなければならない主要関数ライブラリ(箇条4参
照)を定義する。主要関数ライブラリの関数について,引数及び結果は,四つの基本的な型のいずれかを
もつ。XSLT及びXPointerのどちらも,追加の関数を定義することによって,XPathを拡張する。これら
の関数の幾つかは,四つの基本的な型を操作し,他の関数はXSLT及びXPointerが定義する追加のデータ
型を操作する。
名前空間宣言は,接頭辞から名前空間URIへの対応から成る。
部分式を評価するのに使う変数束縛,関数ライブラリ及び名前空間宣言は,部分式を含む式を評価する
のに使うものと常に同じとする。部分式を評価するのに使う文脈ノード,文脈位置及び文脈サイズは,部
分式を含む式を評価するのに使うものとは異なることがある。幾つかの種類の式は, 文脈ノードを変更す
る。述部だけが,文脈位置及び文脈サイズを変更する(2.4参照)。ある種類の式の評価が記述される場合,
部分式の評価で文脈ノード,文脈位置及び文脈サイズが変わるとき,それは常に明示的に示される。文脈
ノード,文脈位置及び文脈サイズについて何も示していない場合,その種類の式の部分式の評価では,こ
れらは変更されない。
XPath式は,XMLの属性の中に現われることが多い。この規格で規定する文法は,XML 1.0の正規化の
後の属性値に適用する。したがって,例えば,文法が文字“<”を用いるとき,これはXMLソースの中で
“<”として現れてはならず,例えば < としてそれを入れることによって,XML 1.0の規則に従って引
用されなければならない。式の中では,リテラル列は一重引用符又は二重引用符によって区切られるが,
それらは,XMLの属性を区切るのにも使われる。式の中の引用符が,属性値を終端しているとXMLプロ
セサによって解釈されることを避けるために,引用符は,文字参照(" 又は ')として入れる
ことができる。これに代えて,XMLの属性が二重引用符で区切られているときには,式は一重引用符を使
うことができ,その逆もできる。
重要な種類の式の一つに,位置パスがある。位置パスは,文脈ノードに対して相対的に,ノードの集合
を選ぶ。位置パスになっている式を評価した結果は,その位置パスによって選ばれるノードを含むノード
集合とする。位置パスは,ノードの集合をフィルタリングするのに使われる式を再帰的に含むことができ
る。位置パスは,生成規則LocationPathに一致する。
――――― [JIS X 4160 pdf 6] ―――――
3
X 4160 : 2007
以下の文法において,非終端記号のQName及びNCNameは,JIS X 4158で定義し,Sは,JIS X 4159
で定義される。文法は,JIS X 4159と同じEBNF記法を用いる。ただし,文法の記号は,常に先頭に大文
字をもつことを除く。
式は,まず解析対象の文字列をトークンに分割し,それから結果のトークン列を解析することによって,
構文解析される。トークンの間には空白を自由に使うことができる。トークン化処理は,3.7に示す。
なお,便宜上,JIS X 4159及びJIS X 4158,すなわち,XML 1.0及びXML Names 1.0への参照を常に使
用する。しかし,実装は,JIS X 4159及びJIS X 4158の字句規定,又は[XML 1.1]及び[XML Names 1.1]の
字句規定の採用を選択してよい。したがって,同様に,URIへの参照が常に使用されるが,IRIを提供し
てもよい。XML 1.0及びXML 1.1の定義が,全く同じ場合もある。
2 位置パス
位置パスは,XPath言語の中で最も一般的な文法的構成子ではない(LocationPathは,Exprの特別な場
合である。)が,最も重要な構成子なので,最初にそれを示す。
位置パスはどれも,直接的ではあるが少しばかり面倒な構文を使って表現できる。共通の場合を簡潔に
表現できる多くの構文的短縮形もある。箇条2は,非短縮構文を使って,位置パスの意味を説明する。そ
の後で,短縮構文を,それがどのように非短縮構文に展開されるかを示すことによって規定する(2.5参照)。
次に,非短縮構文を使った位置パスの例を示す。
例
a) hild::paraは,文脈ノードの子要素paraを選択する。
b) hild::*は,文脈ノードの子要素のすべてを選択する。
c) hild::text()は,文脈ノードの子テキストノードのすべてを選択する。
d) hild::node()は,文脈ノードの子のすべてを,ノード型を問わずに選択する。
e) ttribute::nameは,文脈ノードのname属性を選択する。
f) attribute::*は,文脈ノードのすべての属性を選択する。
g) escendant::paraは,文脈ノードの子孫要素paraを選択する。
h) ncestor::divは,文脈ノードの祖先divのすべてを選択する。
i) ancestor-or-self::divは,文脈ノードの祖先divを選択し,文脈ノードがdiv要素である場合には,
その文脈ノードも選択する。
j) descendant-or-self::paraは,文脈ノードの子孫要素paraを選択し,文脈ノードがpara要素である
場合には,その文脈ノードも選択する。
k) elf::paraは,文脈ノードがpara要素である場合にはその文脈ノードを選択し,そうでない場合
には何も選択しない。
l) child::chapter/descendant::paraは,文脈ノードの子要素chapterの子孫要素paraを選択する。
m) hild::*/child::paraは,文脈ノードの孫paraのすべてを選択する。
n) / は,文書のルート(常に文書要素の親)を選択する。
o) /descendant::paraは,文脈ノードと同じ文書にあるpara要素のすべてを選択する。
p) /descendant::olist/child::itemは,親olistをもち,文脈ノードと同じ文書にあるitem要素のすべて
を選択する。
q) hild::para[position()=1]は,文脈ノードの子の中の最初paraを選択する。
注記 以下では,これを“最初の子para”などという。
――――― [JIS X 4160 pdf 7] ―――――
4
X 4160 : 2007
r) hild::para[position()=last() ]は,文脈ノードの最後の子paraを選択する。
s) child::para[position()=last()-1]は,文脈ノードの最後から2番目の子paraを選択する。
t) child::para[position()>1]は,文脈ノードの最初の子paraを除き,文脈ノードの子paraのすべてを
選択する。
u) ollowing-sibling::chapter[position()=1]は,文脈ノードの次の兄弟chapterを選択する。
v) receding-sibling::chapter[position()=1]は,文脈ノードの前の兄弟chapterを選択する。
w) /descendant::figure[position()=42]は,文書中の42番目のfigure要素を選択する。
x) /child::doc/child::chapter[position()=5]/child::section[position()=2]は,doc文書要素の5番目の
chapterの2番目のsectionを選択する。
y) hild::para[attribute::type="warning"]は,値がwarningであるtype属性をもつ,文脈ノードの子
paraのすべてを選択する。
z) hild::para[attribute::type='warning'][position()=5]は,値がwarningのtype属性をもつ,文脈ノード
の5番目の子paraを選択する。
aa) hild::para[position()=5][attribute::type="warning"]は,文脈ノードの5番目の子paraを,それが値
warningをとるtype属性をもつ場合に,選択する。
ab) hild::chapter[child::title='Introduction']は,文脈ノードの子chapterで,文字列値(箇条5参照)
がIntroductionに等しい1個以上の子titleをもつものを選択する。
ac) hild::chapter[child::title]は,文脈ノードの子chapterで,1個以上の子titleをもつものを選択す
る。
ad) hild::*[self::chapter or self::appendix]は,文脈ノードの子chapter及びappendixを選択する。
ae) hild::*[self::chapter or self::appendix][position()=last() ]は,文脈ノードの最後の子chapter又は
appendixを選択する。
位置パスには,相対位置パス及び絶対位置パスの2種類がある。
相対位置パスは,“/” で分離された1個以上の位置パスの列から成る。相対位置パスの中のステップは,
左から右へ一つに構成される。各ステップは順次,文脈ノードに対して相対的にノードの集合を選択する。
ステップの初期列は,次のとおりに後続ステップとともに一つに構成される。ステップの初期列は,文脈
ノードに対して相対的にノードの集合を選択する。その集合の各ノードは,次のステップの文脈ノードと
して使う。そのステップによって特定されるノードの集合は,一つに統合される。ステップの構成によっ
て特定されるノードの集合は,統合されて一つになる。例えば,child::div/child::paraは,文脈ノードの子
要素divの子要素paraを選択する。言い換えると,親divをもつ孫要素paraを選択する。
絶対位置パスは,“/” から成り,任意選択で相対位置パスが後続する。“/” はそれ自体で,文脈ノー
ドを含む文書のルートノードを選択する。その後に相対位置パスが続く場合には,その位置パスは,文脈
ノードを含む文書のルートノードに対して相対的な相対位置パスによって選択することになるノードの集
合を選択する。
位置パスの構文を次に示す。
[1] LocationPath ::= RelativeLocationPath
| AbsoluteLocationPath
[2] AbsoluteLocationPath ::= '/' RelativeLocationPath・
| AbbreviatedAbsoluteLocationPath
[3] RelativeLocationPath ::= Step
――――― [JIS X 4160 pdf 8] ―――――
5
X 4160 : 2007
| RelativeLocationPath '/' Step
| AbbreviatedRelativeLocationPath
注記 構文規則内の構成子は,(存在する場合には)本文中の次の日本語と対応する。
LocationPath 位置パス
RelativeLocationPath 相対位置パス
AbsoluteLocationPath 絶対位置パス
AbbreviatedAbsoluteLocationPath 短縮絶対位置パス
Step ステップ,位置ステップ
AbbreviatedRelativeLocationPath 短縮相対位置パス
2.1 位置ステップ
位置ステップは,次の三つの部分をもつ。
a) 位置ステップによって選択されるノードと文脈ノードとの木関係を指定する軸。
b) 位置ステップによって選択されるノードのノード型及び展開名(箇条5参照)を指定するノード試験。
c) 位置ステップによって選択されるノードの集合を更に洗練するために,任意の式を用いる0個以上の
述部。
位置ステップの構文は,二重コロンによって分けられた軸の名前及びノード試験であり,それぞれ角括
弧でくくられた0個以上の式が続く。例えばchild::para[position()=1]では,childが軸の名前,paraがノード
試験,[position()=1]が述部になる。
位置ステップによって選択されるノード集合は,軸及びノード試験から初期ノード集合を生成し,その
後にそのノード集合を述部のそれぞれによって順次フィルタリングした結果のノード集合とする。
初期ノード集合は,軸によって指定される文脈ノードとの関係をもち,ノード試験によって指定するノ
ード型及び展開名(箇条5参照)をもつノードから成る。例えば,位置ステップdescendant::paraは,文脈
ノードの子孫要素paraを選択する。ここでdescendantは,初期ノード集合にある各ノードが文脈の子孫で
なければならないことを指定し,paraは,初期ノード集合にある各ノードがparaと名付けられる要素でな
ければならないことを指定する。利用可能な軸は,2.2で示す。利用可能なノード試験は,2.3で示す。ノ
ード試験には,その意味が軸に依存するものがある。
初期ノード集合は,最初の述部によってフィルタリングされて,新しいノード集合を生成する。その後
この新しいノード集合は,2番目の述部を使ってフィルタリングされ,以降同様とする。最終ノード集合
は,位置ステップが選択するノード集合になる。軸は,各述部の式がどのように評価されるかに影響を与
えるので,述部の意味は,軸に関して定義される(2.4参照)。
位置ステップの構文を次に示す。
[4] Step ::= AxisSpecifier NodeTest Predicate*
| AbbreviatedStep
[5] AxisSpecifier ::= AxisName '::'
| AbbreviatedAxisSpecifier
注記 構文規則内の構成子は,(存在する場合には)本文中の次の日本語と対応する。
Step ステップ,位置ステップ
AxisSpecifier 軸,軸指定子
NodeTest ノード試験
Predicate 述部
――――― [JIS X 4160 pdf 9] ―――――
6
X 4160 : 2007
AbbreviatedStep 短縮ステップ,短縮位置ステップ
AxisName 軸名
AbbreviatedAxisSpecifier 短縮軸,短縮軸指定子
2.2 軸
次に示す軸が利用できる。
a) hild軸は,文脈ノードの子を含む。
b) escendant軸は,文脈ノードの子孫を含む。子孫とは,子,子の子,子の子の子など,以降同様とす
る。そのため,descendant軸が属性ノード又は名前空間ノードを含むことは決してない。
c) arent軸は,文脈ノードの親(箇条5参照)が存在する場合,それを含む。
d) ncestor軸は,文脈ノードの祖先を含む。文脈ノードの祖先とは,文脈ノードの親,親の親,親の親
の親など,以降同様とする。そのため,ancestor軸は,文脈ノードがルートノードでない場合には,
常にルートノードを含む。
e) ollowing-sibling軸は,文脈ノードのすべての後続する兄弟を含む。文脈ノードが属性ノード又は名前
空間ノードの場合,following-sibling軸は空とする。
f) preceding-sibling軸は,文脈ノードのすべての先行する兄弟を含む。文脈ノードが属性ノード又は名前
空間ノードの場合,preceding-sibling軸は空とする。
g) ollowing軸は,文書順で文脈ノードの後にある,文脈ノードと同じ文書の中のすべてのノードを含む。
ただし,すべての子孫を除き,属性ノード及び名前空間ノードを除く。
h) receding軸は,文書順で文脈ノードの前にある,文脈ノードと同じ文書の中のすべてのノードを含む。
ただし,すべての祖先を除き,属性ノード及び名前空間ノードを除く。
i) attribute軸は,文脈ノードの属性を含む。文脈ノードが要素でない場合には,軸は空になる。
j) namespace 軸は,文脈ノードの名前空間ノードを含む。文脈ノードが要素でない場合には,軸は空に
なる。
k) elf軸は,(現在の)文脈ノードそれ自体だけを含む。
l) descendant-or-self軸は,文脈ノード及び文脈ノードの子孫を含む。
m) ncestor-or-self軸は,文脈ノード及び文脈ノードの祖先を含む。したがって,ancestor-or-self軸は,常
にルートノードを含む。
注記 ancestor, descendant, following, preceding及びselfの軸は,(属性ノード及び名前空間ノードを
無視して)文書を区分する。これらは重なり合うことはなく,一緒になって文書中のすべて
のノードを含む。
軸の構文を次に示す。
[6] AxisName ::= 'ancestor'
| 'ancestor-or-self'
| 'attribute'
| 'child'
| 'descendant'
| 'descendant-or-self'
| 'following'
| 'following-sibling'
| 'namespace'
――――― [JIS X 4160 pdf 10] ―――――
次のページ PDF 11
JIS X 4160:2007の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.240 : 情報技術(IT)の応用 > 35.240.30 : 情報,ドキュメンテーション及び出版業務におけるITの応用
JIS X 4160:2007の関連規格と引用規格一覧
- 規格番号
- 規格名称