前へ

目次

ボトムへ     

次へ     


5. 特性の洗練及び解決

洗練に際して,フォーマット化オブジェクトに適用される特性の集合は,フォーマット化の結果に関する制約を定義する特色の集合に変換される。多くの特色について,特性との1対1対応がある。その他の特色については,変換はさらに複雑になる。変換に関する詳細については,後に記述する。

特定のフォーマット化オブジェクトの洗練の第1段階は,オブジェクトに適用される各特性の実効値を獲得することとする。フォーマット化オブジェクトに指定される簡略記述特性は,個々の特性に拡張される。これについては,[5.2 簡略記述拡張]でさらに詳細に記述する。オブジェクトに指定されなかったどの特性についても,継承値([5.1.4 継承]を参照)又は初期値が,適用可能であるので実効値として使用される。第2段階は,この特性集合を特色に変換することとする。

備考 洗練の処理は一連の段階で記述されるが,これは,説明上の便宜だけのためあり,適合するどの実装でも,分離した段階として実装されなければならないという意味ではない。適合する実装は,同一の効果を達成することだけが求められる。

5.1 指定値, 計算値, 実際値及び継承

与えられるフォーマット化オブジェクトに適用可能なすべての特性について,特性の値を決定する必要がある。特性値には指定値,計算値,及び実際値という三つの異なる可変値が存在する。"指定値"とは,木構築の処理中に,フォーマット化オブジェクト上に配置される値である。指定値は,直接使用できる形式でなくてもよい。例えば,パーセント又は絶対値に変換しなければならないその他の式であってもよい。これらの変換の結果生じる値を"計算値"と呼ぶ。最後に,計算値は出力メディアで認識できなくてもよく,レンダリングでの使用に優先して調整が必要な場合もある。例えば,出力メディアの画素が整数になるように,行の幅を調整してもよい。この調整値を"実際値"という。

5.1.1 指定値

特性の指定値は,次の機構を使用して決定される。優先順位の高い方から示す。

  1. 木構築処理がフォーマット化オブジェクト上に特性を配置した場合,その特性の値を指定値として使用する。これを"明示的規定"と呼ぶ。

  2. そうでない場合には,特性が継承可能であれば, 親フォーマット化オブジェクトからのその特性の値,一般的には計算値を使用する(次を参照)。

  3. そうでない場合に,特性の初期値があれば,それを使用する。各特性の初期値は,特性の定義で示される。初期値が存在しなければ,その特性は, フォーマット化オブジェクトに指定されない。一般に,これはエラーとする。

それは親をもたないので, 結果木の根は,その親フォーマット化オブジェクトからの値を使用できない。この場合,必要であれば,初期値を使用する。

5.1.2 計算値

指定値は, 絶対値(即ち,"red"又は"2mm"などの,他の値に対して相対的に指定されない値)であってよく,相対値(即ち, "auto","2em", "12%"などの,他の値に対して相対的に指定される値)であってもよく, 式であってもよい。ほとんどの絶対値については, 計算値を見つけるための計算を必要としない。一方,相対値は, 計算値に変換されなければならない。パーセントは, 参照値で乗算されなければならない(各特性は,それがどの値であるかを定義する。)。相対単位(em)のついた値は,適切なフォントサイズで乗算することによって,絶対値に変換されなければならない。"auto"値は,各特性で与えられる式によって,計算されなければならない。("smaller","border"などの)ある特性値は,その定義に従って置換されなければならない。境界のスタイルが"none"である境界幅を制御するどんな特性の計算値も, "0pt"に強制される。

特性値の指定方法が一つ以上存在する特性もある。このような特性のうち,最も単純な例は,padding-beforeなどの表記方向に関連する方向,又はpadding-topなどの表示域の絶対幾何方向による方向のいずれかにより指定できる特性である。これら二つの特性を,それぞれ,相対特性及び絶対特性という。二つをまとめて"対応特性"という。

ある特性に値を指定することによって,指定された特性にも対応特性にも計算値が決定する。どの相対特性がどの絶対特性に対応するかは表記方向に依存する。例えば,文書の上位での"表記方向"が"lr-tb"である場合,"padding-start"は"padding-left"に対応する。しかし,"表記方向"が"rl-tb"である場合は,"padding-start"は"padding-right"に対応する。対応特性の値の計算方法に関する厳密な規定は[5.3 対応特性の値の計算]で解説している。

ほとんどの場合, 要素が計算値を継承する。しかし,"line-height"特性に指定する値など,その指定値が継承される特性も存在する。子要素が計算値を継承しない場合,これは特性定義で記述される。

5.1.3 実際値

主として計算値を使用するようになっているが,利用者エージェントが値を利用できない環境も存在する。例えば,利用者エージェントが,整数の画素幅でしか境界をレンダリングできないことがあり,その場合は,計算幅をメディア画素の整数値に調整しなければならない。実際値は, これらのすべての調整を適用した後の計算値とする。

5.1.4 継承

フォーマット化オブジェクトに適用できる特性には,"継承可能な"ものもある。このような特性は,特性記述でそれと識別される。継承可能特性は,どのフォーマット化オブジェクトにも配置できる。継承可能特性は,親から各子へと,フォーマット化オブジェクト木を下に向かって伝播されていく。これらの特性は,結果木の根で,その初期値に指定される。継承可能特性の中には,その特性が子に存在する場合,特性の値がその子,及び,それより下の子孫で明白に再設定されるまではその子孫に使用されるものもある。それ以外の場合は,子に指定されたその特性の指定値は,親フォーマット化オブジェクト上のその特性の計算値である。このため,すべてのフォーマット化オブジェクトに対するすべての継承可能な特性に定義される指定値は,常に存在することになる。

5.2 簡略記述拡張

XSLには,二種類の簡略記述特性が存在する。"border"など,CSSから生じたものと,"page-break-inside"など,CSSの特性を切り離したり,結合して生じたものである。XSLでは,簡略記述特性については,両者とも同じ取り扱いを受ける。

備考 簡略記述は,最高のXSL適合レベル"complete"でしか取り込まれない。

各特性の適合レベルは[C.3 特性表 II]で示している。

簡略記述特性は,親の簡略記述からは継承するわけではない。代わりに,簡略記述が拡張する個々の特性が継承してもよい。

相互関係があるCSS簡略記述も存在する。その拡張には,共通する個々の特性が一つ以上ある。CSSでは,複数の相関簡略記述及び個々の相関特性の組合せについては,処理の順序を利用者が指定しなければならない。XMLでは,属性は順序付けされないものと定義されている。この問題を解決するために,複数の相関簡略記述特性又は簡略記述特性,及び相関個別特性を指定する場合には,XSLは優先順位を定義する。

これらの特性は,一層厳密に処理される。例えば,"border-top"は"border"よりも厳密であり,"border-top-color"は"border-top"よりも厳密である。個別特性は,簡略特性の中で常に最も厳密である。残りの不明確な場合のXSLの順序付け定義を次に示す。

  1. "border-top", "border-bottom", "border-right",及び"border-left"は,

  2. "border-style", "border-color", 及び"border-width"よりも厳密である。

概念上の処理過程を次に示す。

  1. 初期値にすべての特性の実効値を設定する。

  2. 一層厳密にすべての簡略記述を処理する。

    簡略記述を"inherit"に設定する場合,簡略記述によって親の対応特性の計算値に設定が可能な各特性の実効値を設定する。

    簡略記述の値が"inherit"ではない場合,どの個別特性を設定するかを決定し,初期値を指定値に由来する計算値で置換する。

  3. 指定された個別特性をすべて処理する。

  4. 第1段階の値以外の値に提供されなかった特性について,すべての継承を実行する。

備考 例えば, "background"特性及び"background-color"特性の両特性が与えられるフォーマット化オブジェクト上に指定される場合,まず"background"簡略記述特性を処理し,その後"background-color"特性を処理する。

5.3 対応特性の値の計算

"padding-left"及び"padding-start"などの対応特性が存在する場合,すべての対応特性に対して計算値が決定される。与えられるフォーマット化オブジェクトに対する計算値の決定方法は,対応特性のうちどれがそのオブジェクトに指定されるかに依存する。下記を参照のこと。

絶対特性から相対特性までの対応付けを次に記述する。

ブロック進行方向の"writing-mode"を"top-to-bottom"に指定する場合,"top"は"before"にマップし, "bottom"は"after"にマップする。

ブロック進行方向の"writing-mode"を"bottom-to-top"に指定する場合,"top"は"after"にマップし, "bottom"は"before"にマップする。

ブロック進行方向の"writing-mode"を"left-to-right"に指定する場合,"left"は"before"にマップし, "right"は"after"にマップする。

ブロック進行方向の"writing-mode"を"right-to-left"に指定する場合,"left"は"after"にマップし, "right"は"before"にマップする。

行内進行方向の"writing-mode"を"left-to-right"に指定する場合,"left"は"start"にマップし, "right"は"end"にマップする。

行内進行方向の"writing-mode"を"right-to-left"に指定する場合,"left"は"end"にマップし, "right"は"start"にマップする。

行内進行方向の"writing-mode"を"top-to-bottom"に指定する場合,"top"は"start"にマップし, "bottom"は"end"にマップする。

行内進行方向の"writing-mode"を"bottom-to-top"に指定する場合,"top"は"end"にマップし, "bottom"は"start"にマップする。

行内進行方向の"writing-mode"が奇数行に"left-to-right"と指定され,偶数行に"right-to-left"と指定される場合,"left"は"start"にマップし, "right"は"end"にマップする。

備考 "reference-orientation"は回転であり,対応付けには影響しない。

5.3.1 境界特性及びパディング特性

対応特性の最も単純なクラスは,対応上,絶対特性及び相対特性という二つの可変値しか存在しないクラスである。"border-left-color"及び"border-start-color"など,特性名は,絶対指定か相対指定かの選択だけにおいて異なる。

このクラスについては,対応特性の計算値の決定は次のとおりである。特性の対応絶対可変値をフォーマット化オブジェクトに指定する場合,その計算値は対応相対特性の計算値の設定に使用される。対応絶対特性が明示的に指定されない場合は,絶対特性の計算値は,対応相対特性の計算値に設定される。

絶対特性も相対特性も明示的に指定されない場合,指定値の決定規則は,それが特性又は初期値に定義されれば,継承にも使用される点に注意すること。候補となるすべての対応特性について,初期値は同じでなければならない。絶対特性も対応相対特性も明示的に指定される場合,上記規則は絶対特性を優先し,対応相対特性の指定値は,対応特性の計算値の決定の際,無視される。

上記規則を使用して,計算値を決定する対応特性を次に示す。

5.3.2 マージン特性, スペース特性及び字下げ特性

"space-before"特性及び"space-after"特性(ブロックレベルフォーマット化オブジェクト), "space-start"特性及び "space-end" 特性(行内レベルフォーマット化オブジェクト)は,直上の特性と同じ方法で取り扱われるが,対応絶対特性は,"margin-top", "margin-bottom", "margin-left", 及び"margin-right"の集合内にある。マージン特性から決定されるどんなspace-before又はspace-afterの.conditionality構成要素も, "retain"に設定される。

備考 .conditionality構成要素の扱いは, CSS2との互換性のためである。
備考 "auto"として指定されるブロック進行寸法におけるCSS2マージンの計算値は, 0ptとする。"auto"のマージン値から決定されるどんなspace-before又はspace-afterも, 0ptに設定される。

さまざまな絶対"margin"特性に対応するもう二つの特性, "end-indent"及び"start-indent"(ブロックレベルフォーマット化オブジェクト)がある。これらの特性に関しては,対応はもっと複雑であり, 対応する"border-X-width"特性及び"padding-X"特性を含む。ここでXは, "left", "right", "top"又は"bottom"の一つとする。これらの対応特性の計算値は, 次のとおり決定される。

対応絶対"margin"特性がフォーマット化オブジェクトに指定され, フォーマット化オブジェクトが参照領域を生成するとき, マージンの計算値が, 対応する"Y-indent"特性の計算値を計算するのに用いられる。ここでYは, "start"又は"end"のどちらかとする。"start-indent"及び"end-indent"の式を次に示す。

start-indent = margin-corresponding + padding-start + border-start-width

end-indent = margin-corresponding + padding-end + border-end-width

対応絶対"margin"特性がフォーマット化オブジェクトに指定され, フォーマット化オブジェクトが参照領域を生成しないとき, マージンの計算値並びに対応する"border-X-width"特性及び"padding-X"特性の計算値が, 対応する"Y-indent"特性の計算値を計算するのに用いられる。"start-indent"及び"end-indent"の式を次に示す。

start-indent = inherited_value_of(start-indent) + margin-corresponding + padding-corresponding + border-corresponding-width

end-indent = inherited_value_of(end-indent) + margin-corresponding + padding-corresponding + border-corresponding-width

対応絶対margin特性が明示的に指定されないか, 又は対応相対特性がフォーマット化オブジェクトに指定され, 絶対特性だけが簡略記述の拡張によって指定されるとき, 対応絶対margin特性は, 次の式に従って計算される。

margin-corresponding = start-indent - inherited_value_of(start-indent) - padding-corresponding - border-corresponding-width

margin-corresponding = end-indent - inherited_value_of(end-indent) - padding-corresponding - border-corresponding-width

備考 "start-indent"特性又は"end-indent"特性が指定されないとき, それらの継承された値がこれらの式において用いられる。

5.3.3 高さ特性及び幅特性

フォーマット化オブジェクトに有効な表記方向に基づき,"height"特性, "min-height"特性, 及び"max-height"特性,又は"width"特性,"min-width"特性, 及び "max-width" 特性のいずれかは,対応するブロック進行寸法又は行内進行寸法に変換される。

"height"特性は絶対値であり,"上" から"下"までの寸法を示している。width特性は,"左"から"右"までの寸法を示している。

"writing-mode"が"top-to-bottom"又は"bottom-to-top"のブロック進行方向を指定する場合, 変換は次のとおりとする。

"writing-mode"が"left-to-right"又は"right-to-left"のブロック進行方向を指定する場合, 変換は次のとおりとする。

5.3.4 過制約の幾何

開始字下げ, 終了字下げ, 及び領域の内容長方形の行内進行寸法の合計は,最も近い先祖の参照領域の内容長方形の行内進行寸法に等しいのが望ましい。規定により,それらが異なる結果となる場合,終了字下げ(従って,対応マージンも)は,同等が真であるように調整される。

5.4 特色マッピングに対する単純特性

特性の大部分は同じ名前の特色にマップする。同様に,これらのほとんどは,特性からの値をコピーするにすぎない。これらは,[C.3 特性表 II]で示した特性表内の"レンダリング","フォーマット化","規定","フォント選択","参照"及び"動作"として分類される。例えば, 特性font-style="italic"は,値が"italic"であるfont-style特色に洗練される。

値が特性の値とは異なる特色も存在する。これらは,特性表の"値変換"に分類される。例えば,特性background-position-horizontal="left"は,値が"0pt"であるbackground-position-horizontal特色に洗練される。これらの特色に対する値のマッピングを次に示す。

5.4.1 Background-position-horizontal特性及びbackground-position-vertical特性

"top", "bottom", "left", "right", 又は"center"の値は,特性定義で指定する長さに変換される。

5.4.2 Column-number特性

この特性が適用されるフォーマット化オブジェクトに値を指定していない場合,初期値は特性定義で指定するとおり,計算される。

5.4.3 Text-align特性

"left", 又は"right"の値は,特性定義で指定するとおり,表記方向の相対値に変換される。

5.4.4 Text-align-last特性

"left", 又は"right"の値は,特性定義で指定するとおり,表記方向の相対値に変換される。

5.4.5 z-index特性

値は絶対値に変換される。例えば,詳細値は,指定値に,親フォーマット化オブジェクトが存在すれば,そのz指標の詳細値をプラスしたものとなる。

5.5 特色マッピングに対する複雑な特性

より複雑な方法で特色に影響を与える特性も少数存在する。詳細を次に示す。

5.5.1 Word-spacing特性及びLetter-spacing特性

これらの特性は,特性定義で記述するとおり,start-space特色及びend-space特色に値を設定してもよい。

5.5.2 Reference-orientation特性

reference-orientation特色は,洗練の間,reference-orientation特性からコピーされる。構成中,絶対方向が決定される([4.2.2 一般的な特色]を参照)。

5.5.3 Writing-mode特性及びDirection特性

writing-mode特色, direction特色, 及びunicode-bidi特色は,洗練の間,同じ名前の特性からコピーされる。構成中,これらは,[4.2.2 一般的な特色]に従って,block-progression-direction特色,inline-progression-direction特色,及びshift-direction特色について,絶対方向を決定する場合に使用される。

5.5.4 Absolute-position特性

absolute-position = "absolute" 又は"fixed"である場合, left-position, top-positionなどの特色の値は,"left", "top"などの特性の値から直接コピーされる。それ以外の場合,これらの特色の値は,洗練中は定義されないままであり,構成中に決定される。

5.5.5 Relative-position特性

relative-position = "relative"である場合,left-offset特色及びtop-offset特色の値は,"left"特性及び"top"特性から直接コピーされる。"right"特性は指定されるが,"left"が指定されない場合, left-offsetは"right"の負の値に設定される。 "left"も"right"も指定されない場合,left-offsetは0となる。"bottom"特性は指定されるが,"top"が指定されない場合, top-offsetは"bottom"の負の値に設定される。"top"も"bottom"も指定されない場合は,top-offsetは0となる。

5.5.6 Text-decoration特性

"text-decoration"特性の値は,blink特色,score及びscore-color特色の集合に値を提供する。指定色の値は, "text-decoration"特性が洗練されたフォーマット化オブジェクトのcolor特色の値である。

トークン"underline"を包含する特性値は,underline-score特色に"true"の値を設定し, underline-score-color特色に指定色の値を設定する。

トークン"overline"を包含する特性値は, overline-score特色に"true"の値を設定し, overline-score-color特色に指定色の値を設定する。

トークン"line-through"を包含する特性値は, through-score特色に"true"の値を設定し, through-score-color特色に指定色の値を設定する。

トークン"blink"を包含する特性値は,blink特色に"true"の値を設定する。

トークン"no-underline"を包含する特性値は, underline-score特色に"false"の値を設定し,underline-score-color特色に指定色の値を設定する。

トークン"no-overline"を包含する特性値は, overline-score特色に"false"の値を設定し, overline-score-color特色に指定色の値を設定する。

トークン"no-line-through"を包含する特性値は, through-score特色に"false"の値を設定し,through-score-color特色に指定色の値を設定する。

トークン"no-blink"を包含する特性値は,blink特色に"false"の値を設定する。

5.5.7 Font特性

領域のフォント特色は,フォント特性の組合せから間接的に派生し、フォント及びそのフォントからのフォント表を選択するために使用される。

XSLがフォントに想定する抽象モデルについては,[7.7.1 フォント及びフォントデータ]で解説する。

特定のフォントを指定するためのXSLの機構は存在しない。代わりに,選択基準の集合に基づき,利用者エージェントに利用できるフォントから選択フォントが選択される。選択基準とは,フォント特性 "font-family", "font-style", "font-variant", "font-weight", "font-stretch", 及び "font-size", さらに,いくつかのフォーマット化オブジェクト,一つ以上の文字である。選択基準の使用方法については,"font-selection-strategy" 特性で詳細に指定している( [7.7.3 "font-selection-strategy"]参照)。

nominal-font特色は,選択フォントに設定される。選択フォントが存在せず,'欠落文字'グリフが表示される場合は, nominal-font特色はそのグリフを包含するフォントに設定され,それ以外の場合,例えば,その他の機構を使用して,文字が非表示であることを示す場合などは,nominal-fontはシステムフォントとなる。

dominant-baseline-identifier特色及びactual-baseline-table特色は,"dominant-baseline"特性の値から派生する。この特性の値は,三つの構成要素をもつ複合値である。三つの構成要素とは,主要ベースラインに対するベースライン識別子,ベースライン表及びベースライン表のフォントサイズをいう。dominant-baseline-identifier特色は最初の構成要素から設定される。ベースライン表フォントサイズは,ベースライン表からのベースラインの位置を基準化するために使用され,主要ベースラインの位置はその他のベースラインの位置から減算され,主要ベースラインから相対的に表をずらす。この表は,actual-baseline-table特色の値である。

5.6 非特性ベースの特色生成

is-reference-area特色は,フォーマット化オブジェクトである"simple-page-master", "title", "region-body", "region-before","region-after", "region-start", "region-end", "block-container", "inline-container", "table", "table-caption", 及び"table-cell"について,"true"に設定され,その他のすべてのフォーマット化オブジェクトについては,"false"に設定される。

5.7 特性ベースの変換

5.7.1 Text-transform特性

この特性を指定すると,洗練の間,適切に"character"特性の値を変更することによって,ケースの変更が実行される。

備考 "text-transform"特性は,国際化問題が深刻であるため,XSLではその使用を禁止している。

5.8 Unicode BIDI処理

スクリプトによっては,右から左に向かって,横に文字が書き込まれるものもある。文書の中には,特に,アラビア語又はヘブライ語で書かれた文書,言語が混合している文脈などでは,視覚的に表示される単一のブロック内のテキストは,方向性が混同した状態で現れることがある。この現象を双方向性,又は短縮して"bidi"と呼ぶ。

Unicode規格[UNICODE] は,テキストの適正な方向性を決定するために,複合アルゴリズムであるUnicode Bidiアルゴリズム[UNICODE TR9]を定義している。アルゴリズムは,埋め込み及び上書きのための明示的な制御と同様に,文字特性ベースの暗黙的な部分にも基づいている。

洗練の最終段階では,このアルゴリズム及び各文字のUnicode双方向性文字型を使用して,テキストの暗黙的な方向性をフォーマット化オブジェクトによる明示的なマーク付けに変換する。例えば,英語以外の段落で,アラビア文字のサブシーケンスが現れると,その内容として,アラビア文字をもつ行内フォーマット化オブジェクトを生成することになる。この場合,"direction"特性は"rtl"となり,"unicode-bidi"特性は "bidi-override"となる。フォーマット化オブジェクトにより,事前に右から左に暗黙に決められていたアラビア文字の位置が明示的になる。

[UNICODE UAX #9]で定義されるとおり, Unicode Bidiアルゴリズムは,テキストの流れを入力として受け取り,主に三つの段階で進行する。

  1. 入力テキストを段落に分割する。残りのアルゴリズムは,段落の区切り記号間のテキストにだけ影響する。

  2. テキストの埋め込みレベルを解決する。この段階では,双方向性の文字型は,それにUnicode方向フォーマット化コードをプラスして,解決埋め込みレベルの生成に使用される。各文字に対応する標準双方向性文字型は,Unicode文字データベース[UNICODE 文字データベース]で指定される。

  3. 一旦,テキストが行に分割されると,解決埋め込みレベルを使用して,行ごとに表示用にテキストを並べ替える。

上述のとおり,アルゴリズムには,XSL処理モデルに適合させるための適応が必須である。まず,最終段階のテキスト並べ替えは,洗練の間は実行されない。代わりに,フォーマット化の間,並べ替えに相当するXSLの処理が実行される。各グリフの行内進行方向は,[4.2.5スタック制約]で記述されるグリフのスタックを制御するために使用される。 行内進行方向は,ブロックレベルで, "writing-mode"特性により決定されるが,ブロック内の行内フォーマット化オブジェクトの内部では,"direction"特性及び"unicode-bidi"特性によって決定される。これら二つの特性は木構築が生成する行内フォーマット化オブジェクト上に指定されるか,又は,洗練のこの段階により導入される行内フォーマット化オブジェクト上に存在するかのいずれかである。 詳細は後に記述する。

次に, アルゴリズムは,一つ以上のフォーマット化オブジェクトの内容から生じる文字のシーケンスに適用される。文字のシーケンスは,フォーマット化オブジェクト木の素片の処理によって生成される。素片とは,木内のいくつかのフォーマット化オブジェクトの子の隣接するすべてのシーケンスである。シーケンスは, fo:characterレベルまで素片の昇順たどりを実施することによって生成される。昇順たどりの間,すべてのfo:characterフォーマット化オブジェクトはシーケンスに文字を追加する。さらに,昇順の走査で,値が"embed"又は"override"である"unicode-bidi"特性をもつノードに遭遇する場合は, "direction"特性及び"unicode-bidi"特性の値に適応するように,シーケンスにUnicodeRLO/LRO文字又はRLE/LRE文字を常に追加すること。内容の走査後,そのノードに戻る際には,UnicodePDF文字を追加すること。この場合,フォーマット化オブジェクト木素片は,文字のシーケンスに平板化される。この文字のシーケンスを後に文字の平板化シーケンスという。

さらに,XSLでは,アルゴリズムは,段落ではなく,区切りテキスト範囲に適用される。区切りテキスト範囲は,文字のシーケンスを最大に平板化したものであり,いかなる区切り文字も包含しない。ブロック領域を生成するフォーマット化オブジェクトはすべて区切り文字である。区切りテキスト範囲は,その内容について区切り文字として動作し,その親の内容についても区切り文字として動作する。即ち,親が文字内容をもつ場合,ブロック領域を生成するその子フォーマット化オブジェクトは,その文字内容を 各々が区切りテキスト範囲である匿名ブロックに分割するために動作する。 同様に,fo:multi-caseフォーマット化オブジェクトは,その内容及びその親の内容について,区切り文字として動作する。最後に,その方向が主要ベースラインに垂直ではないテキストは,主要ベースラインに垂直なテキストに対して,区切り文字として動作する。テキストの文字に対応するグリフの向きがすべて主要ベースラインに垂直である場合,テキストの方向は主要ベースラインに垂直であるという。

備考 ほとんどの場合, 区切りテキスト範囲は最大の文字シーケンスであり,一つ以上の行領域のシーケンスにフォーマットされることになる。fo:multi-case及びその方向が主要ベースラインに垂直なテキストの場合,区切り範囲は,行又は行のシーケンスのサブシーケンスであってもよい。例えば,下向きの表記方向でフォーマット化された日本語では,回転するラテンテキスト及びアラビアテキストは,ラテン及びアラビアテキストを隣接して囲む下向きの日本文字によって区切られることになる。行内領域を生成したフォーマット化オブジェクトはいずれも,区切りテキスト範囲の決定に影響しない。

それぞれの区切りテキスト範囲については, ブロック領域を生成する最も近い先祖(自身を含む)であるフォーマット化オブジェクトの行内進行方向は,Unicode Bidiアルゴリズムで使用される段落埋め込みレベルを決定する。 これは,区切りテキスト範囲に関する埋め込みレベルのデフォルトである。

埋め込みレベルは,テキストの組込みの深さを示す数値であり,そのレベルでのテキストのデフォルト方向である。テキストの埋め込みレベルの最小値はゼロであり,最大埋め込みレベルはレベル61である。埋め込みレベルが61を超える場合はエラーである。XSLプロセサはエラーを通知してもよい。エラーを通知しない場合は,埋め込みレベルの最大値をそれより高くすることによって,エラーから回復しなければならない。

Unicode Bidiアルゴリズムの第2段階は,解決埋め込みレベルの区切りテキスト範囲内の各文字を分類することである。各文字の解決埋め込みレベルは,段落埋め込みレベルより大きいか又は同じになる。右向きのテキストは,常に奇数レベルで終わり,左向きのテキストは,常に偶数レベルで終わる。さらに,数値テキストは,常に段落レベルよりも高いレベルで終わる。

一旦,解決埋め込みレベルが区切りテキスト範囲に決定されると,"direction" 特性及び"unicode-bidi"特性に適正な値を指定する新しいfo:bidi-overrideフォーマット化オブジェクトは,次の制約を満たすように,区切りテキスト範囲に平板化されたフォーマット化オブジェクト木素片内に挿入される。

  1. 区切りテキスト範囲内の文字はいずれも,文字の行内進行方向がその解決埋め込みレベルと対応しなければならない。

  2. 段落埋め込みレベルから最大の解決埋め込みレベルまでの各解決埋め込みレベルL,及び,各文字の解決埋め込みレベルがLより大きいか又は等しい各文字の最大隣接シーケンスSについては,

    1. その内容として,Sに平板化するフォーマット化オブジェクト木素片をもち,解決埋め込みレベルLと一致する"direction"特性をもつ行内フォーマット化オブジェクトFが存在する。

      備考 現存のフォーマット化オブジェクトによって,又は現存のフォーマット化オブジェクトの"direction"特性及び"unicode-bidi"特性に値を指定することによって,制約が満たされる場合は,Fは挿入フォーマット化オブジェクトでなくてもよい。
    2. シーケンスSのすべての部分を包含するフォーマット化オブジェクトは,すべて適正にFに組み込まれ,新しいフォーマット化オブジェクトの挿入に優先して,フォーマット化オブジェクト内に存在する組込み関係を維持する。

      備考 この制約を満たすことにより,各フォーマット化オブジェクト木内の現存のフォーマット化オブジェクトの一つ以上を,元の未分割のフォーマット化オブジェクトと同じ計算特性値の集合をもつ各フォーマット化オブジェクトの対に分割することが必須となる場合もある。対の一つは,Fの開始前で終了するか,又は Fの終了後に開始することになる。もう一つは,Fの開始前に開始するか,又はFの終了前に終了することになる。生成された対は,この制約を満たすために,適正に組込みを続行しなければならない。例えば,右向きのテキストが"L"という文字で表現され,左向きのテキストは"R"という文字で表現されるとする。副木を次に示す。

       <fo:block>
         LL
         <fo:inline ID="A">LLLRRR</fo:inline>
         RR
       </fo:block>
      

      段落埋め込みレベルが"0"とすると,解決埋め込みレベルは次の挿入及び複写構造を必須とする。

       <fo:block>
         LL
         <fo:inline ID="A">LLL</fo:inline>
         <fo:bidi-override direction="rtl">
           <fo:inline ID="A+">RRR</fo:inline>
           RR
         </fo:bidi-override>
       </fo:block>
      

      IDが"A"に等しいfo:inlineが二つのfo:inlineに分割されている点に注意すること。最初のfo:inlineは,IDが"A"で分割前の指定と同じだが,二番目のfo:inlineはIDが"A+"と指定されている。二つのIDは一意でなければならないため,すべてのID特性又はKey特性の計算値は,対のうちの二番目のメンバで複写されてはならない。"A+"の値は実例を示すために使用されたに過ぎない。

  3. 挿入が可能なfo:bidi-overrideで,上の制約を満たすものはほとんど存在しない。 即ち,木構築の間に生成されたフォーマット化オブジェクトの他,文書に存在する埋め込みレベルを表現するのに必要なだけのfo:bidi-overrideフォーマット化オブジェクトを詳細フォーマット化オブジェクト木だけに追加すること。

5.9 式

XSLスタイルシート内の属性における特性値規定はすべて,式で表現することができる。これらの式は指定される特性の値を表現する。式は,最初に評価され,その結果生じた値が,特性の値の決定に使用される。

5.9.1 特性文脈

特性は,特性固有の文脈と対照して,評価される。この文脈は次を提供する。

備考 すべての型に変換が必要なわけではない。変換が指定されない場合は,エラーである。

文字列,キーワード,数値などの型インスタンスが式で認識される場合は,特性文脈と対照して評価される。これは,固有の値に能力を提供して,特性文脈の固有アルゴリズムを用いて変換するか,又は,全体として式の評価に使用する変換を用いて変換される。

例えば, ある特性に指定された"auto"列挙トークンは,計算値である。こういったトークンは,特性定義で指定されたアルゴリズムを介して,固有の型インスタンスに変換されることになる。このような場合,結果として生じた値は,フォーマット化オブジェクトのある面の幅を指定する絶対的な長さであってもよい。

さらに, これにより,相対数値など一定の型は,数学的演算に優先して,絶対数値に解決できる。

特性文脈はすべて,[5.9.12 式値変換]で指定されるとおり,変換が可能である。

5.9.2 評価順

特性の集合が,フォーマット化オブジェクト木内の固有のフォーマット化オブジェクトについて評価されている場合,特性の評価に必須である固有の順序が存在する。本質的に,"font-size"特性は,他のすべての特性の前に,まず評価されなければならない。 "font-size"特性が評価されれば,他のすべての特性は,順を問わず評価されてもよい。

"font-size"特性が評価されると,評価に使用する現フォントサイズは,親要素のフォントサイズとなる。"font-size"特性が評価されると,その値は,式をさらに評価するすべての特性値のすべての特性文脈に指定された現フォントサイズとして使用される。

5.9.3 基本機構

[1]    Expr    ::=    AdditiveExpr
[2]    PrimaryExpr    ::=    '(' Expr ')'
| Numeric
| Literal
| Color
| Keyword
| EnumerationToken
| FunctionCall

5.9.4 関数呼出し

[3]    FunctionCall    ::=    FunctionName '(' ( Argument ( ',' Argument)*)? ')'
[4]    Argument    ::=    Expr

5.9.5 数値

数値は,XSLの式に存在するすべての型の数字を表す。これらの数値は絶対値であるものもあれば,その他の値の集合に関連するものもある。これらの値はすべて浮動小数点数を使用して,その定義の数字部分を表現する。

浮動小数点数は,すべての倍精度64ビットフォーマットIEEE754値 [IEEE 754]をもつことができる。これらは,特殊な"非数値" (NaN), 正負無限大,正負ゼロを含む。[JLS] 4.2.3を参照のこと。IEEE754規格の主要規則の要約を記述している。 [JLS]

[5]    Numeric    ::=    AbsoluteNumeric
| RelativeNumeric
[6]    AbsoluteNumeric    ::=    AbsoluteLength
[7]    AbsoluteLength    ::=    Number AbsoluteUnitName?
[8]    RelativeNumeric    ::=    Percent
| RelativeLength
[9]    Percent    ::=    Number '%'
[10]    RelativeLength    ::=    Number RelativeUnitName

次の演算子は数値とともに使用してもよい。

+

加算を実行する。

-

減算又は否定を実行する。

*

乗算を実行する。

div

IEEE 754に従って,浮動小数点除算を実行する。

mod

切捨て除算から剰余を戻す。

備考 XMLは名前に-を使用することができるため,通常,UnaryExpr否定として使用されない場合,空白は-演算子を優先する必要がある。例えば,10pt - 2ptという式は,10ポイントから2ポイントを減算するという意味である。10pt-2ptという式は,10という長さの値に"pt-2pt"という単位がついていることを意味する。

備考 mod演算子の例を次に示す。

備考 mod演算子は,Java及びECMAScriptの%演算子と同じであり,IEEE剰余演算子とは異なる。この演算子は,丸め除算から剰余を返す。
数式
[11]    AdditiveExpr    ::=    MultiplicativeExpr
| AdditiveExpr '+' MultiplicativeExpr
| AdditiveExpr '-' MultiplicativeExpr
[12]    MultiplicativeExpr    ::=    UnaryExpr
| MultiplicativeExpr MultiplyOperator UnaryExpr
| MultiplicativeExpr 'div' UnaryExpr
| MultiplicativeExpr 'mod' UnaryExpr
[13]    UnaryExpr    ::=    PrimaryExpr
| '-' UnaryExpr

備考 この文法は,優先順位に影響する。最も低い優先順位から示す。:

演算子はすべて結合た状態にある。例えば,2*3 + 4 div 5は(2*3) + (4 div 5)と等しい。

AdditiveExprで非数値が使用され,その型から絶対数値への特性文脈変換が存在しない場合,式は無効であり,エラーと考えられる。

5.9.6 絶対数値

絶対数値は絶対の長さであり,Numberとべき乗されるUnitNameから構成される対である。記述された絶対の長さに単位がついていない場合,単位のべきはゼロと考えられる。このため,すべての浮動小数点数は,ゼロを1乗した長さである。

各単位名は,メータなど,共通の内部測度単位に対する内部比率に関連する。適正な式で単位が記述される場合,まず,内部測度単位に変換され,その後数学的な演算が実行される。

さらに, 演算のいずれかの側の数値が同じ単位のべきの絶対数値であるが必須なのは,法,加算及び減算の各演算子に限られる。その他の演算では,単位のべきが異なってもよく,その結果は,数学的に代数におけるべきの取り扱いに一致するのが望ましい。

特性定義は,絶対の長さを特定のべきに制約してもよい。例えば,フォントサイズを指定する際,値を"1"乗であるとしてもよい。即ち,10ptなど,単一のべき単位が指定されてもよい。

特性の最終値を計算する場合,絶対数値の結果べきは,ゼロ又は1のいずれかでなければならない。その他のべきが指定される場合,値はエラーである。

5.9.7 相対数値

相対の長さとは,他の値の集合に関連して計算された値である。式の一部として書き込まれる場合,特性文脈を介して,絶対数値に変換されるか,特性値として逐語的に渡されるかのいずれかである。

特性文脈が相対数値への利用可能な変換をもたず,加算演算内など,式評価に変換が必須である場合は,エラーである。

5.9.7.1 パーセント

パーセントは,1/100単位で計算される値である。例えば,パーセント値としての 10%は,浮動小数点数としての0.10である。絶対数値への変換の際,パーセントは,特性定義内で,既知の特性値のパーセントとして定義される。

例えば, "font-size"特性の値が"110%"であるということは,現フォントサイズの1.1倍であることを意味する。このようにパーセントに使用できる変換の定義は,特性定義上に指定される。変換が指定されない場合,結果の値はパーセントである。

5.9.7.2 相対の長さ

相対の長さとは単位ベースの値であり,font-size特性の現在値に照らして測定される。

測定の相対単位は,"em"しか存在しない。"1em"の定義は,現フォントサイズに等しい。 例えば,"1.25em"という値は,現フォントサイズの1.25倍を意味する。

em測定法が式で使用される場合,現特性の文脈のフォントサイズ値に従って変換される。式の結果は絶対の長さである。[7.7.4 "font-size"]を参照のこと。

5.9.8 文字列

文字列は,字句又は 列挙トークンのいずれかとして表示される。すべての特性文脈は,列挙トークンから文字列への変換が可能である。[5.9.12 式値変換]を参照のこと。

5.9.9 色

色は,色空間から特定の色を識別するために使用される値の集合である。現規定では,RGB (赤, 緑, 青) 及びICC (国際カラーコンソシアム)の色だけを取り扱う。

RGB色は,16進表記を使用して,式言語内で直接表示される。ICCにはicc-color関数を介してアクセスできる。system-color関数を通じて,又は,特性文脈を介してEnumerationTokenから変換されても,色へのアクセスが可能である。

5.9.10 キーワード

キーワードは,計算値又はその他の特性値にアクセスする文法内の特別なトークンである。使用可能なトークンを次で定義する。

5.9.10.1 継承

特性は,フォーマット化オブジェクトの親オブジェクトの特性と同じ計算値を取る。

備考 "継承"は, 演算と混ざった式としては許容されない。同じ機能は, 演算と混ざり得るfrom-parent()関数によって与えられる。

5.9.11 字句構造

式を処理する際, 空白(ExprWhitespace)は,文法での明示的な定義がなくとも,あらゆる式トークンの前後で使用できる。文法内のトークンを字句的に明確にするために空白が必要な場合もある。本質的に,式のトークン化が生じた後には存在しないものとして,空白を取り扱うのが望ましい。

次の特殊なトークン化規則は,文法を明確にするために,指定された順序で適用されなければならない。

式字句構造
[14]    ExprToken    ::=    '(' | ')' | '%'
| Operator
| FunctionName
| EnumerationToken
| Number
[15]    Number    ::=    FloatingPointNumber
[16]    FloatingPointNumber    ::=    Digits ('.' Digits?)?
| '.' Digits
[17]    Digits    ::=    [0-9]+
[18]    Color    ::=    '#' AlphaOrDigits
[19]    AlphaOrDigits    ::=    [a-fA-F0-9]+
[20]    Literal    ::=    '"' [^"]* '"'
| "'" [^']* "'"
[21]    Operator    ::=    OperatorName
| MultiplyOperator
| '+' | '-'
[22]    OperatorName    ::=    'mod' | 'div'
[23]    MultiplyOperator    ::=    '*'
[24]    Keyword    ::=    'inherit'
[25]    FunctionName    ::=    NCName
[26]    EnumerationToken    ::=    NCName
[27]    AbsoluteUnitName    ::=    'cm' | 'mm' | 'in' | 'pt' | 'pc' | 'px'
[28]    RelativeUnitName    ::=    'em'
[29]    ExprWhitespace    ::=    S

5.9.12 式値変換

式評価の結果である値は,特性値型に変換されてもよい。例えば,値が正当な国コードである場合など,これが単に集合構成の検査であることもあれば,値が整数など単純な型であり,変換が必須であることもある。

すべての型の変換が可能である必要はない。式値が特性値に必要な型に変換できない場合は,エラーである。

どの変換が可能であるかを表5.1に示す。

表5.1 可能な式値変換
可能な変換 制約
NCName
  • 色, system-color()関数を介する

  • 列挙値, 特性定義で定義される。

  • 字句列に対するもの。

特性に依存する正当な値の集合に照らして,値を検査してもよい。
AbsoluteNumeric
  • 整数, round()関数を介する。

  • 色, RGB色値と同じである。

RGB色値に変換する場合は,色空間にある正当な色値でなければならない。
RelativeLength
  • AbsoluteLengthに対するもの。

適用される固有の変換は特性固有であり,各特性の定義で解説されている。

備考 複合特性値の変換は, 許容されない。したがって, 例えば, space-before.optimum="inherited-property-value(space-before)" は妥当でない。例えば, space-before="inherited-property-value(space-before)" 及び space-before.optimum="inherited-property-value(space-before.optimum)" は, それらは変換を必要としないので, 許容される。

5.9.13 測定単位の定義

この規定における測定単位の定義を表5.2に示す。

表5.2 測定単位の定義
名前 定義
cm [ISO31]を参照
mm [ISO31]を参照
in 2.54cm
pt 1/72in
pc 12pt
px [5.9.13.1 画素]を参照
em [5.9.7.2 相対の長さ]を参照
5.9.13.1 画素

XSLは,フォーマッタへの要求である'px'単位を解釈し,通常のコンピュータモニタでの1画素の表示に近い装置依存の測定を選択する。この解釈を次に示す。

  1. 望ましい1'px'の定義を次に示す。

  2. しかし, 実装者は,固定変換要素を代わりに選択し,1/92"又は1/72"など,絶対測定単位として'px'を取り扱ってもよい。

備考 望ましくない影響を引き起こすため,式では,他の絶対単位と画素を混同しないほうがよい。特定の警告についても,画素を使用して指定された継承特性値とともに使用するのが望ましい。

利用者エージェントが,各軸の装置ドットの整数と対応しない'px'の測定を選択する場合,望ましくない影響を引き起こす可能性がある。その影響を次に示す。

スタイルシート作成者は,画素の実際のサイズが装置によって異なってもよいことを理解しているのが望ましい。

5.10 コア関数ライブラリ

5.10.1 数の関数

Function: numeric floor( numeric)

floor関数は,引数ほど大きくはないが,正の無限大に最も近い最大整数を返す。この関数に対する数値引数は,単位のべきがゼロでなければならない。

備考 単位のべきが1であることを要求される特性にfloor関数を使用する必要がある場合,"floor(1.4in div 1.0in)*1.0in"などの式を使用しなければならない。これは,ceiling関数, round関数, 及びその他の類似する関数で,単位のべきがゼロであることが必須であるものに適用される。

Function: numeric ceiling(numeric)

ceiling関数は,引数ほど小さくはないが,負の無限大に最も近い最小整数を返す。この関数に対する数値引数は,単位のべきがゼロでなければならない。

Function: numeric round(numeric)

round関数は,引数に最も近い整数を返す。このような数が二つ存在する場合は,正の無限大に最も近いものが返される。この関数に対する数値引数は,単位のべきがゼロでなければならない。

Function: numeric min( numeric , numeric)

min関数は,二つの数値引数のうち,小さい方を返す。これらの引数の単位のべきは同一でなければならない。

Function: numeric max(numeric , numeric)

max関数は二つの数値引数のうち,大きい方を返す。これらの引数の単位のべきは同一でなければならない。

Function: numeric abs( numeric)

abs関数は,数値引数の絶対値を返す。即ち,数値引数が負の場合,引数の否定が返される。

5.10.2 色の関数

Function: color rgb(numeric , numeric , numeric)

rgb関数は,RGB色空間に属する固有の色を返す。この関数に対するパラメタは,長さのべきがゼロである実数でなければならない。

Function: color icc-color(numeric , numeric , numeric , NCName , numeric , numeric)

icc-color関数は,ICC色プロファイルに属する固有の色を返す。色プロフィルは名前のパラメタ(第四パラメタ)によって指定される。この色プロファイルは, fo:color-profileフォーマット化オブジェクトを使用して,fo:declarationsフォーマット化オブジェクトで,宣言されなければならない。

最初の三つのパラメタは,sRGB色空間に属するフォールバック色を指定する。色プロファイルを利用できない場合に,この色を使用する。

色は,名前パラメタの後に指定される一つ以上の色値(実数)のシーケンスによって指定される。これらの値は色プロファイルに固有である。

Function: color system-color( NCName)

system-color関数は,与えられる名前のついた色を定義するシステムを返す。

5.10.3 フォントの関数

Function: object system-font( NCName , NCName)

system-font関数は,システムフォントの指数を返す。最初の引数は,システムフォントの名前であり,二番目の引数は任意であり,指数を指定する特性を名前付けする。二番目の引数が省略される場合,返される指数は,式が割り当てられる特性の名前と同じである。

例えば, "system-font(heading,font-size)" という式は, "heading"と名前付けされたシステムフォントのfont-size指数を返す。これは,特性割当て'font-size="system-font(heading)"'と等しい。

5.10.4 特性値の関数

Function: object inherited-property-value(NCName)

inherited-property-value関数は,名前が指定された引数に対応する特性の継承値を返す。 この特性が継承特性ではない場合は,エラーである。

返された"継承値"は,このオブジェクトの親のこの特性の計算値である。特に,次の例を挙げる。

<fo:list-block>
  ...
  <fo:list-item color="red">
    <fo:list-item-body background-color="green">
      <fo:block background-color="inherited-property-value(color)">
      </fo:block>
    </fo:list-item-body>
  </fo:list-item>
</fo:list-block>

fo:blockのbackground-color特性の値は"red" に割り当てられる。これは,fo:blockの親であるfo:list-item-body上のcolor特性の値のうち,background-color以外で,継承後の計算値が"red"であるためである。

Function: numeric label-end()

label-end関数は,リストについて,label-endの計算値を返す。 [7.27.3 "provisional-label-separation"]の定義を参照。

Function: numeric body-start()

body-start関数は,リストについて,body-startの計算値を返す。[7.27.4 "provisional-distance-between-starts"]の定義を参照。

備考 この関数がリスト外で使用される場合でも,指定のとおり,計算値を返す。

Function: object from-parent( NCName)

from-parent関数は,名前が指定された引数に対応する特性の計算値を返す。返される値は,式が評価されるフォーマット化オブジェクトの親に関するものである。親が存在しない場合,返される値は初期値である。引数が簡略記述特性を指定し,計算された特性に対応する引数をもつfrom-parent関数だけで式が構成される場合は,簡略記述が各特性に拡張する簡略記述の拡張として解釈され,それぞれがその特性に対応する引数をもつfrom-parentの値をもつ。簡略記述特性に対応する引数が,その他の方法で使用される場合はすべて,エラーである。

Function: object from-nearest-specified-value( NCName)

from-nearest-specified-value関数は,その名前が指定された引数に対応する特性の計算値を返す。返される値は,式が評価されるフォーマット化オブジェクトの最も近い先祖のものである。この場合,fo名前空間内のXML結果木の特性の割当てが存在する。このような先祖が存在しない場合,返される値は初期値である。引数が簡略記述特性を指定し,計算された特性に対応する引数をもつ from-nearest-specified-value関数だけで式が構成される場合は,簡略記述が各特性に拡張する簡略記述の拡張と解釈され,それぞれがその特性に対応する引数をもつ from-nearest-specified-valueの値をもつ。簡略記述特性に対応する引数がその他の方法で使用される場合はすべて,エラーである。

Function: object from-table-column( NCName)

from-table-column関数は,名前が指定された引数に対応する特性の継承値を返す。この特性は,そのcolumn-numberがこの式が評価される列に対応し,number-columns-spannedもあらゆるスパンに対応するfo:table-columに属している。number-columns-spannedに対応が存在しない場合は,1のスパンに照合される。それでもなお対応が存在しない場合は,初期値が返される。fo:table-cell又はその子孫ではないフォーマット化オブジェクトでこの関数を使用するのは,エラーである。

Function: numeric proportional-column-width( numeric)

proportional-column-width関数は,プロポーショナル測定のN単位を返す。この場合の Nは,この関数に提供された引数である。列幅は,最初に,プロポーショナル測定を無視して決定される。表の幅と列幅の合計との差は,有効なプロポーショナル幅である。プロポーショナル測定の一単位は,プロポーショナル要素の合計によって分割される有効なプロポーショナル幅である。fo:table-column以外のフォーマット化オブジェクトでこの関数を使用するのは,エラーである。固定表配置を使用しない場合に,この関数を使用するのもエラーである。

Function: object merge-property-values( NCName)

merge-property-values関数は,名前が引数に対応する特性の値を返す。返される値は,親fo:multi-propertiesの最後のfo:multi-property-setで,利用者エージェントの状態に適用される指定値である。このような値が存在しない場合,親fo:multi-propertiesの計算値が返される。

備考 利用者エージェントの状態の適用能力に関する検査は,"active-state"特性を使用して,指定される。

fo:multi-propertiesの子であるfo:wrapper以外のフォーマット化オブジェクトにこの関数を使用するのはエラーである。

5.11 特性データ型

複合データ型,許容される数値,又は特定のセマンティクスをもつ文字列によって,記述される特性値も存在する。

空間などの複合データ型は,複数の属性として結果木に表示される。これらの属性の名前は,特性名から構成される。特性名の後ろにはピリオドが続き,その後には構成要素名が続く。例えば, "space-before"特性の指定は次であってもよい。

space-before.minimum="2.0pt"
space-before.optimum="3.0pt"
space-before.maximum="4.0pt"
space-before.precedence="0"
space-before.conditionality="discard"

データ型に<length>構成要素がいくつか存在する場合,及びデータ型が<keep> である場合は,簡略形式の複合値規定を使用してもよい。前者の場合,規定は,名前が特性名と対応する属性に<length>値を指定する。このような規定は,その値を各<length>構成要素に指定し,初期値を<length>以外のすべての構成要素に指定する。次に例を示す。

space-before="4.0pt"

これは, 次の指定と等価である。

space-before.minimum="4.0pt"
space-before.optimum="4.0pt"
space-before.maximum="4.0pt"
space-before.precedence="0"
space-before.conditionality="discard"
備考 "auto"とは解釈されない<percentage>値は, 妥当な<length>値でないため, それを簡略形式の中で使用してよい。

データ型が<keep>である場合,規定は,名前が特性名に対応する属性に,構成要素の妥当な値を提供する。このような規定は,その値を各構成要素に指定する。次に例を示す。

keep-together="always"

これは, 次の指定と等価である。

keep-together.within-line="always"
keep-together.within-colums="always"
keep-together.within-page="always"

完全形式とともに簡略形式を使用してもよい。完全形式は,簡略形式の拡張に優先する。次に例を示す。

space-before="4.0pt"
space-before.maximum="6.0pt"

これは, 次の指定と等価である。

space-before.minimum="4.0pt"
space-before.optimum="4.0pt"
space-before.maximum="6.0pt"
space-before.precedence="0"
space-before.conditionality="discard"

特性の複合値は,個々の構成要素としてではなく,単位として継承される。継承の後, 構成要素に関する完全フォームのどんな指定も, その値を設定するために用いられる。

対応相対特性の計算値が対応絶対特性から設定されるとき, 後者は, 前者のすべての構成要素を決定するのに用いられる。

備考 次の指定において, "top-to-bottom"のブロック進行方向が仮定される例を考える。

margin-top="10.0pt"
space-before.minimum="4.0pt"

対応相対特性の構成要素の一つを明示的に設定することは, 効果をもたない。

特性値に利用可能なデータ型を指定する構文を次に定義する。

<integer>

符号付きの整数値。任意の'+'又は'-'文字の後に数字のシーケンスが続くことによって構成される。特性は値に追加の制約を定義してもよい。

備考 '+'記号は, CSS2との互換性のために許容されない。
<number>

符号付きの実数。任意の'+'又は'-'文字に数字のシーケンスが続き,その後に任意の'.'文字と文字のシーケンスが続くことによって構成される。特性は値に追加の制約を定義してもよい。

<length>

符号付きの長さの値。この場合,'length'は実数に単位修飾を加えたものである。特性は値に追加の制約を定義してもよい。

<length-range>

minimum, optimum, maximumの構成要素をもつ複合データ型。各構成要素は <length>である。特性は値に追加の制約を定義してもよい。

<length-conditional>

length, conditionalityの構成要素をもつ複合データ型。lengthの構成要素は<length>である。conditionalityの構成要素は, "discard"又は"retain"のいずれかである。特性は値に追加の制約を定義してもよい。

<length-bp-ip-direction>

block-progression-direction及び inline-progression-directionの構成要素をもつ複合データ型。各構成要素は<length>である。特性は値に追加の制約を定義してもよい。

<space>

minimum, optimum, maximum, precedence及びconditionalityの構成要素をもつ複合データ型。minimum, optimum, 及びmaximum構成要素は,<length>である。precedenceの構成要素は,"force"又は<integer>のいずれかである。conditionalityの構成要素は,"discard"又は"retain"のいずれかである。

<keep>

within-line, within-column, 及び within-pageを構成要素にもつ複合データ型。各構成要素の値は,"auto", "always", 又は<integer>のいずれかである。

<angle>

角度の表示は,任意の'+'又は'-'文字の直後に<number>が続き,その直後に角度の単位識別子が続く。角度の単位識別子は'deg' (度の省略形), 'grad' (グラードの省略形), 及び'rad' (ラジアンの省略形)である。指定値は,0度から360度までの範囲に標準化される。特性は値に追加の制約を定義してもよい。

<percentage>

符号付きの実パーセント。これは,任意の'+'又は'-'文字の後ろに数字のシーケンスが続き,その後に任意の'.'文字と数字のシーケンス,その後に'%'が続くことによって構成される。特性は値に追加の制約を定義してもよい。

<character>

単一のUnicode文字。

<string>

文字シーケンス。

<name>

名前を表示する文字列。[W3C XML Names]NCNameの定義に適合しなければならない。

<family-name>

フォントを識別する文字列。

<color>

キーワードを表示する文字列,又は,[5.10.2 色関数]で定義される色関数のいずれかである。キーワード色名のリストは,aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white及びyellowである。

<country>

ISO 3166国コードに適合する文字列。

<language>

ISO 639 3-文字コードに適合する文字列。

<script>

ISO 15924スクリプトコードに適合する文字列。

<id>

[W3C XML]Nameの定義に適合し,スタイルシート内で一意である文字列。

<idref>

Name in [W3C XML]Nameの定義に適合し,スタイルシート内で使用されるID特性値に一致する文字列。

<uri-specification>

"url("の後に任意の空白,その後に任意の1重引用符(')又は2重引用符("),さらに [RFC2396]で定義されるURI参照が続き,その後に1重引用符(')又は2重引用符("),任意の空白, さらに")"が続く文字のシーケンス。二つの引用符は同じでなければならず,両方とも存在するか又両方とも存在しないかでなければならない。URI参照の中に1重引用符がある場合は,引用符が二つ存在しなければならず,さらに2重引用符でなければならない。

<time>

時間単位識別子がその直後にくる<number>。 時間単位識別子は, 'ms'(ミリ秒)及び's'(秒)とする。

<frequency>

周波数単位識別子がその直後にくる<number>。 周波数単位識別子は, 'Hz'(ヘルツ)及び'kHz'(キロヘルツ)とする。


       

前へ

目次

トップへ          

次へ