この規格ページの目次
7
X 4160 : 2007
| 'parent'
| 'preceding'
| 'preceding-sibling'
| 'self'
注記 構文規則内の構成子は,(存在する場合には)本文中の次の日本語と対応する。
AxisName 軸名
2.3 ノード試験
どの軸にも主ノード型がある。軸が要素を含むことができる場合,主ノード型は要素とする。そうでは
ない場合,軸が含むことができるノードの型とする。したがって,次のとおりとなる。
a) ttribute軸については,主ノード型は,attributeとする。
b) amespace軸については,主ノード型は,namespaceとする。
c) その他の軸については,主ノード型は,elementとする。
QNameであるノード試験が真であるのは,ノードの型(箇条5参照)が,主ノード型であって,QName
によって指定される展開名に等しい展開名をもつ場合に限る。例えば,child::paraは,文脈ノードの子要
素paraを選択する。文脈ノードが子要素paraをもたない場合は,ノードの空集合を選択することになる。
attribute::hrefは,文脈ノードのhref属性を選択する。文脈ノードがhref属性をもたない場合は,ノードの
空集合を選択することになる。
ノード試験の中のQNameは,式の文脈からの名前空間宣言を使って展開名に展開される。これは,xmlns
で宣言される既定の名前空間が使われないことを除いて,開始タグ及び終了タグにおける要素型名につい
て展開がなされるのと同じ方法とする。QNameが接頭辞をもたないとき,名前空間URIはヌルとする。
これは属性名が展開されるのと同じ方法とする。QNameが,式の文脈の中で名前空間宣言のない接頭辞を
とる場合には,誤りとする。
ノード試験 * は,主ノード型のどのノードについても真とする。例えば,child::*は文脈ノードのすべ
ての子要素を選択することになり,attribute::*は文脈ノードのすべての属性を選択することになる。
ノード試験は,NCName:*という形式をもつことができる。この場合,接頭辞は,QNameをもつ場合と
同じ方法で,文脈名前空間宣言を使って展開される。式の文脈の中の接頭辞について,名前空間宣言がな
い場合には,誤りとする。ノード試験は,名前の局所部分とは無関係に,展開名が接頭辞の展開先の名前
空間URIをもつ主要な型のどのノードについても真になる。
ノード試験text()は,どのテキストノードについても真とする。例えば,child::text()は,文脈ノードの子
テキストノードを選択することになる。同様に,ノード試験comment()は,どのコメントノードについて
も真とし,ノード試験processing-instruction()はどの処理命令についても真とする。processing-instruction()
試験は,Literalである引数をもってもよい。この場合,Literalの値に等しい名前をもつどの処理命令につ
いても真とする。
ノード試験node()は,どの型をもつどのノードについても真とする。
ノード試験の構文を次に示す。
[7] NodeTest ::= NameTest
| NodeType '(' ')'
| 'processing-instruction' '(' Literal ')'
注記 構文規則内の構成子は,(存在する場合には)本文中の次の日本語と対応する。
NodeTest ノード試験
――――― [JIS X 4160 pdf 11] ―――――
8
X 4160 : 2007
NameTest 名前試験
NodeType ノード型
Literal リテラル
2.4 述部
軸は,順方向軸か逆方向軸かのどちらかとする。文脈ノード,又は文書順(箇条5参照)に文脈ノード
の後にあるノードだけしか含まない軸は,順方向軸とする。文脈ノード,又は文書順に文脈ノードの前に
あるノードだけしか含まない軸は,逆方向軸とする。したがって,ancestor軸,ancestor-or-self軸,preceding
軸,preceding-sibling軸は,逆方行軸になる。その他の軸は,すべて順方行軸になる。ただし,self軸は常
に最大で1個のノードしか含まないので,順方行軸でも逆方行軸でも差異はない。軸に関するノード集合
のメンバの近接度位置(proximity position)は,軸が順方行軸の場合は文書順に,逆方行軸の場合は逆文書順
に,順序付けられたノード集合におけるそのノードの位置と定義する。最初の位置は,1とする。
述部は,軸に関してノード集合をフィルタリングして,新しいノード集合を作る。フィルタリングされ
るノード集合の中の各ノードに対して,PredicateExprは,そのノードを文脈ノードとし,そのノード集合
のノード数を文脈サイズとし,軸に関してノード集合におけるノードの近接度位置を文脈位置として,評
価される。PredicateExprがそのノードについて真と評価される場合,そのノードは,新しいノード集合に
含まれる。そうでない場合には,それは含まれない。
PredicateExprは,Exprを評価してその結果を論理型に変換することによって,評価される。結果が数値
型である場合には,その結果は,数値型が文脈位置に等しい場合には真に変換され,それ以外の場合には
偽に変換される。結果が数値型でない場合には,結果は,boolean関数への呼出しによるものとして変換さ
れる。したがって,para[3]という位置パスは,para[position()=3]と等価になる。
述部の構文を次に示す。
[8] Predicate ::= '[' PredicateExpr ']'
[9] PredicateExpr ::= Expr
注記 構文規則内の構成子は,(存在する場合には)本文中の次の日本語と対応する。
Predicate 述部
PredicateExpr 述部式
Expr 式
2.5 短縮構文
短縮構文を使った位置パスの例を次に示す。
例
a) araは,文脈ノードの子要素paraを選択する。
b) * は,文脈ノードの子要素のすべてを選択する。
c) ext()は,文脈ノードの子テキストノードのすべてを選択する。
d) @nameは,文脈ノードのname属性を選択する。
e) @*は,文脈ノードのすべての属性を選択する。
f) para[1]は,文脈ノードの最初の子paraを選択する。
g) ara[last() ]は,文脈ノードの最後の子paraを選択する。
h) */paraは,文脈ノードの孫paraのすべてを選択する。
i) /doc/chapter[5]/section[2]は,docの5番目のchapterの2番目のsectionを選択する。
j) chapter//paraは,文脈ノードの子要素chapterの子孫要素paraを選択する。
――――― [JIS X 4160 pdf 12] ―――――
9
X 4160 : 2007
k) //paraは,文書ルートの子孫paraのすべてを選択し,したがって,文脈ノードと同じ文書の中
のpara要素のすべてを選択する。
l) //olist/itemは,親olistをもち,文脈ノードと同じ文書にあるitem要素のすべてを選択する。
m) . (ドット一つ)は,文脈ノードを選択する。
n) .//paraは,文脈ノードの子孫要素paraを選択する。
o) .. (ドット二つ)は,文脈ノードの親を選択する。
p) ../@langは,文脈ノードの親のlang属性を選択する。
q) ara[@type="warning"]は,値warningをとるtype属性をもつ,文脈ノードの子paraのすべてを
選択する。
r) ara[@type="warning"][5]は,値warningをとるtype属性をもつ,文脈ノードの5番目の子para
を選択する。
s) para[5][@type="warning"]は,文脈ノードの5番目の子paraを,それが値warningをとるtype属
性をもつときに,選択する。
t) chapter[title="Introduction"]は,文字列値(箇条5参照)がIntroductionに等しい1個以上の子title
をもつ,文脈ノードの子chapterを選択する。
u) hapter[title]は,1個以上の子titleをもつ,文脈ノードの子chapterを選択する。
v) mployee[@secretary and @assistant]は,文脈ノードの子employeeで,secretary属性及びassistant
属性の両方をもつものすべてを選択する。
最も重要な短縮形は,child::を位置ステップから省けることとする。実効的には,childは既定の軸とす
る。例えば,div/paraという位置パスは,child::div/child::paraに関する短縮になる。
属性に関する短縮形もある。attribute::は,@に短縮できる。例えば,para[@type="warning"]という位置パ
スは,child::para[attribute::type="warning"]の短縮であって,warningに等しい値をとるtype属性をもつ子para
を選択する。
// は,/descendant-or-self::node()/の短縮とする。例えば,//paraは,/descendant-or-self::node()/child::paraの
短縮であるので,文書中のどのpara要素をも選択する。文書要素ノードはルートノードの子であるので,
文書要素であるpara要素でさえ//paraによって選択されることになる。div//paraは,
child::div/descendant-or-self::node()/child::paraの短縮であるので,子divの子孫paraのすべてを選択すること
になる。
注記 //para[1]という位置パスは,位置パス /descendant::para[1] と同じものを意味しない。後者は,
最初の子孫要素paraを選択する。前者は,その親の最初の子paraであるような子孫要素para
のすべてを選択する。
. (ドット)という位置ステップは,self::node()の短縮とする。これは,//との組合せで特に有用である。
例えば,.//paraという位置パスは,self::node()/descendant-or-self::node()/child::paraの短縮であるので,文脈
ノードの子孫要素paraのすべてを選択することになる。
同様に,..という位置ステップは,parent::node()の短縮とする。例えば,../titleは,parent::node()/child::title
の短縮であるので,文脈ノードの親の子titleを選択することになる。
短縮形の構文を次に示す。
[10] AbbreviatedAbsoluteLocationPath ::= '//' RelativeLocationPath
[11] AbbreviatedRelativeLocationPath ::= RelativeLocationPath '//' Step
[12] AbbreviatedStep ::= '.'
――――― [JIS X 4160 pdf 13] ―――――
10
X 4160 : 2007
| '..'
[13] AbbreviatedAxisSpecifier ::= '@'・
注記 構文規則内の構成子は,(存在する場合には)本文中の次の日本語と対応する。
AbbreviatedAbsoluteLocationPath 短縮絶対位置パス
RelativeLocationPath 相対位置パス
AbbreviatedRelativeLocationPath 短縮相対位置パス
Step ステップ,位置ステップ
AbbreviatedStep 短縮ステップ,短縮位置ステップ
AbbreviatedAxisSpecifier 短縮軸,短縮軸指定子
3 式
3.1 基本
VariableReferenceは,文脈における変数束縛の集合の中で,変数名が束縛されている値に評価される。
変数名が,式の文脈における変数束縛の集合の中で,いかなる値にも束縛されていない場合には,誤りと
する。
括弧は,グループ化を行うために使用してよい。
式の構文を次に示す。
[14] Expr ::= OrExpr
[15] PrimaryExpr ::= VariableReference
| '(' Expr ')'
| Literal
| Number
| FunctionCall
注記 構文規則内の構成子は,(存在する場合には)本文中の次の日本語と対応する。
Expr 式
OrExpr or式
PrimaryExpr 基本式
VariableReference 変数参照
Literal リテラル
Number 数,数値,数値型
FunctionCall 関数呼出し
3.2 関数呼出し
FunctionCall式は,式評価文脈関数ライブラリの中の関数を識別するためにFunctionNameを使用し,
Argumentの各々を評価し,各引数を関数が要求する型に変換し,最後に,関数を呼び出してその変換され
た引数を関数に渡すことによって,評価される。引数の個数が間違っている場合,又は引数が要求される
型に変換できない場合には,誤りとする。FunctionCall式の結果は,呼び出される関数が返す結果とする。
引数が文字列型に変換される場合には,string関数の呼出しによって行われるのと同様に変換される。
引数が数値型に変換される場合には,number関数の呼出しによって行われるのと同様に変換される。引数
が論理型に変換される場合には,boolean関数の呼出しによって行われるのと同様に変換される。ノード集
合型ではない引数は,ノード集合に変換できない。
――――― [JIS X 4160 pdf 14] ―――――
11
X 4160 : 2007
関数呼出しの構文を次に示す。
[16] FunctionCall ::= FunctionName '(' ( Argument ( ',' Argument )* )・ ')'
[17] Argument ::= Expr
注記 構文規則内の構成子は,(存在する場合には)本文中の次の日本語と対応する。
FunctionCall 関数呼出し
FunctionName 関数名
Argument 引数
Expr 式
3.3 ノード集合型
(node-set)
位置パスは,式として使用できる。その式は,パスによって選択されるノードの集合を返す。
| 演算子は,その演算対象(オペランド)の和集合を計算するが,演算対象は,ノード集合でなければ
ならない。
Predicateは,位置パスで使用するのと同じ方法で,式をフィルタリングするために使用する。フィルタ
リングされる式がノード集合へと評価されない場合には,誤りとする。Predicateは,子軸に関してノード
集合をフィルタリングする。
注記 Predicateの意味は,どの軸を適用するかに決定的に依存する。例えば,preceding::foo[1] は,逆
文書順で最初の foo 要素を返す。これは,[1]という述部に適用される軸が先行する軸になるこ
とによる。反対に,(preceding::foo) [1] は,文書順で最初の foo 要素を返す。これは,[1]とい
う述部に適用される軸が子軸になることによる。
/ 演算子及び // 演算子は,式及び相対的位置パスを構成する。式がノード集合へと評価されない場合,
誤りとする。/ 演算子は,/ を位置パスで使用するときと同じ方法で構成を行う。位置パスにおけるのと
同様に,// は,/descendant-or-self::node()/ の短縮形とする。
ノード集合へと変換可能なオブジェクトの型は存在しない。
ノード集合の式の構文を次に示す。
[18] UnionExpr ::= PathExpr
| UnionExpr '|' PathExpr
[19] PathExpr ::= LocationPath
| FilterExpr
| FilterExpr '/' RelativeLocationPath
| FilterExpr '//' RelativeLocationPath
[20] FilterExpr ::= PrimaryExpr
| FilterExpr Predicate
注記 構文規則内の構成子は,(存在する場合には)本文中の次の日本語と対応する。
UnionExpr 合併式
PathExpr パス式
LocationPath 位置パス
FilterExpr フィルタ式
RelativeLocationPath 相対位置パス
PrimaryExpr 基本式
Predicate 述部
――――― [JIS X 4160 pdf 15] ―――――
次のページ PDF 16
JIS X 4160:2007の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.240 : 情報技術(IT)の応用 > 35.240.30 : 情報,ドキュメンテーション及び出版業務におけるITの応用
JIS X 4160:2007の関連規格と引用規格一覧
- 規格番号
- 規格名称