気の向くままに辿るIT/ICT/IoT
XSL

【Property Refinement / Resolution / プロパティの洗練と解決】XSL 1.1 XSL Extensible Stylesheet Language Version1.1

ホーム前へ次へ
XSLプロパティの洗練と解決とは?

【Property Refinement / Resolution / プロパティの洗練と解決】XSL 1.1 XSL Extensible Stylesheet Language Version1.1

XSL 1.1プロパティの洗練と解決とは

 W3C勧告XSLの「Property Refinement / Resolution / プロパティの洗練と解決」とは

 Extensible Stylesheet Language (XSL) Version 1.1 / W3C Recommendation 05 December 2006の目次に沿った日本語訳です。

 当サイト管理人が2008年09月、意訳したものですが、構文解釈の違いや翻訳の違いが含まれるかもしれません。正式文書はW3C 各種仕様書(英語版)である事を予めご了承ください。

XSL 1.1プロパティの洗練と解決目次


5 属性・プロパティの改善と解決

 5.1 指定値、算出値、実体値と値継承
  5.1.1 指定値
  5.1.2 算出値
  5.1.3 実体値
  5.1.4 値継承

 5.2 略記法

 5.3 属性・プロパティと対応する算出値
  5.3.1 [ Border ], [ Padding ]プロパティ
  5.3.2 [ Margin ], [ Space ], [ Indent ]プロパティ
  5.3.3 [ Height ], [ Width ]プロパティ
  5.3.4 Overconstrained Geometry

 5.4 シンプルな特徴をマッピングするプロパティ
  5.4.1 [ Background-position-horizontal ], [ background-position-vertical ]プロパティ
  5.4.2 [ Column-number ]プロパティ
  5.4.3 [ Text-align ]プロパティ
  5.4.4 [ Text-align-last ]プロパティ
  5.4.5 [ z-index ]プロパティ
  5.4.6 [ Language ]プロパティ

 5.5 複雑な特徴をマッピングするプロパティ
  5.5.1 [ Word spacing ] and [ Letter spacing ]プロパティ
  5.5.2 [ Reference-orientation ]プロパティ
  5.5.3 [ Writing-mode ] and [ Direction ]プロパティ
  5.5.4 [ Absolute-position ]プロパティ
  5.5.5 [ Relative-position ]プロパティ
  5.5.6 [ Text-decoration ]プロパティ
  5.5.7 [ Font ]プロパティ

 5.6 プロパティがないものはその特色に基づく Non-property Based Trait Generation

 5.7 変換に基づくプロパティ
  5.7.1 [ Text-transform ]プロパティ

 5.8 UnicodeのBIDI(左書き・右書き・縦書き・横書き)処理 Unicode BIDI Processing

 5.9 式 Expressions
  5.9.1 プロパティ文脈 Property Context
  5.9.2 評価指定 Evaluation Order
  5.9.3 基本 Basics
  5.9.4 機能呼び出し Function Calls
  5.9.5 数値による文字(進数表現) Numerics
  5.9.6 絶対値進数表現 Absolute Numerics
  5.9.7 相対値進数表現 Relative Numerics
   5.9.7.1 比率 Percents
   5.9.7.2 相対長(相対的な長さ) Relative Lengths
  5.9.8 文字・文字列 Strings
  5.9.9 色・カラー Colors
  5.9.10 キーワード Keywords
   5.9.10.1 継承 inherit
  5.9.11 語彙構造 Lexical Structure
  5.9.12 式値変換 Expression Value Conversions
  5.9.13 計測単位の定義 Definitions of Units of Measure
   5.9.13.1 ピクセル値 Pixels

 5.10 核となる関数ライブラリ Core Function Library
  5.10.1 数値関数 Number Functions
  5.10.2 色・カラー関数 Color Functions
  5.10.3 フォント関数 Font Functions
  5.10.4 属性値関数 Property Value Functions

 5.11 プロパティデータタイプ


5 属性・プロパティの改善と解決

 5.1 指定値、算出値、実体値と値継承
  5.1.1 指定値
  5.1.2 算出値
  5.1.3 実体値
  5.1.4 値継承

【5 属性・プロパティの改善と解決】

 フォーマット型は常にフォーマット型として仕様化されなければいけませんが、フォーマット型クラスというのは、フォーマットプロパティ型が使用されるサブセットに限定され、フォーマット型は、そのクラスから提供されるものです。

 フォーマット型に提供されるプロパティ設定を洗練化している間は、フォーマットの結果に制約されると定義されている特性の設定として解釈されます。

 多くの特性は、プロパティに1対1で対応し、その他の解釈は、もっと複雑です。

 解釈についての詳細は、以下に記述されています。

 固有のオブジェクト型の洗練化の第一段階は、オブジェクトに設定する各プロパティの設定値ごとの効果を得る事です。

 いくつかの略記可能なプロパティは、フォーマット型が、独立したプロパティによって増強されます。

 これは、「5.2 略記記述法」で記述されています。

 プロパティの中には継承(「5.1.4 継承」参照)されたオブジェクトや適用可能な継承値が、有効な値として使われるという記述がないプロパティがいくつかあります。

 固有のオブジェクト型の洗練化の第二段階は、このプロパティが特性を設定する解釈についてです。

※とはいえ、洗練化のプロセスは、段階を踏んで記述されており、これは、単に解説の利便性の為であり、必ずこの分割された段階通りにしなければいけないという意味ではなく、対応しなければいけないのは、唯一、同じ効果をもたらさなければならないという事です。

【5.1 指定値、算出値、実体値と値継承】

 プロパティというものは、常にオブジェクト型に適用できるものとして与えられ、この事は、プロパティの値を決めるにあたって必要なことです。

 プロパティ値としては、「指定値」、「算出値」、「実体値」の3種類が代表的です。

 「指定値」は、ツリー構築プロセス中にオブジェクト型に適用されます。

 ある指定値は、直接利用され、例えば、絶対値に変換されなければならない比率や他の式などのように値がフォームにはない場合もあります。

 このような変換による結果としての値は、「算出値」と呼ばれます。

 最後に算出値は、中間出力に実在しない場合もあり、描画に利用する為に優先して調整される必要がある場合もあります。

 たとえば、ある線の幅が、中間出力のピクセル値としての数値にする為に調整される場合もあります。

 この結果として調整された値が、「実体値」です。

【5.1.1 指定値】

 プロパティの値の仕様は、優先指定内の次に続くメカニズムによって利用が決定されます。


  1. もし、ツリー構築プロセスがオブジェクト型のプロパティを設定した場合には、指定値としてプロパティの値を利用し、これは明示的な仕様(explicit specification)と呼ばれます。
  2. その他、もし、プロパティが継承される場合には、親オブジェクト型のプロパティの値を利用し、通常は算出値がこれにあたります(下記参照)
  3. その他プロパティが既定値を持つ場合には、既定値を利用します。各プロパティの既定値はプロパティ定義によって示されます。もし、既定値がない場合には、プロパティはオブジェクト型を仕様化しません。概してこれはエラーになります。

 参照する親がない時、結果ツリーのルートは、親オブジェクト型の値を利用できず、この場合には、もし必要であれば、既定値が利用されます。

【5.1.2 算出値】

 仕様化された値は、絶対値(たとえば、他の値との関係が仕様化されない「赤」と「12mm」という無関係な値)、または、相対値(他の値との関係が仕様化されている[auto][2em][12%]など)や式である場合があります。

 算出しない絶対値とは、たいていは、算出値を見つける為に必要になります。

 他方で相対値は、比率では、値が定義されたプロパティごとの参照値による掛け算をしなければなりませんし、関係するユニット(単位:em)を持つ値では、フォントサイズに対応する絶対値を掛け算によって算出しなければいけませんし、[ auto ]では、各プロパティに与えられた公式によって算出しなければいけませんし、[ smaller ][ bolder ]などは、正確なプロパティ値を算出する為に、それらの定義によって置き換えなければいけないというような場合に利用されます。

 改めて言うと[ border ]が[ none ]というスタイル設定は、線の幅が[ 0pt ]を強制する操作プロパティの算出値という事もできます。

【5.1.3 実体値】

 算出値は、利用される事が原則ですが、ユーザーエージェントは与えられた環境下で値の利用ができない場合もあります。

 例えば、ユーザーエージェントが、ピクセル幅を持つ線を描画するだけの場合などですが、ただ、この場合でもメディアごとのピクセル値に幅を算出して調整しなければいけません。

 実体値は、算出値のこのような調整が行われた後の値です。

【5.1.4 値継承】

 オブジェクト型に適用できるいくつかのプロパティは、継承可能です。

 このようなプロパティは、プロパティ説明に明記されています。

 継承プロパティは、オブジェクト型に設定する事ができます。

 継承プロパティは、親から子へオブジェクト型ツリーの階層下に伝播されます。

 これらのプロパティは、結果ツリーのルートに初期値が与えられます。

 継承プロパティを受け取るというのは、もし、子があるプロパティを持っている場合、そのプロパティ値は子(と下位の子孫でリセットされるまではその子孫)の為に利用されます。

 一方、子が持つプロパティの仕様化された値というのは、親オブジェクト型が持つプロパティの算出値です。

 したがって、これら仕様値は常に継承値ごとに、またオブジェクト型ごとに定義されます。


 5.2 略記法

【5.2 略記法】

 XSLでは、[ border ]のようなCSSに由来する2種類の略記法があり、部分的にそしてまたCSSプロパティと結合した[ page-break-inside ]があります。

 XSLでは、これらの略記は共に同じ方法で扱われます。

※略記は、XSLの最新バージョンにのみ含まれています(「8 対応」参照)。

※プロパティの対応順応レベルは、「B.3 プロパティテーブルⅡ」参照

 略記プロパティは、親の略記の継承を受けません。

 略記表記された個別のプロパティの代替が継承される場合もあります。

 CSSの略記のいくつかは、1つ以上の共通の個別プロパティを持ち継承されます。

 CSSは、ユーザーが複数の関連する略記の組み合わせとして処理の指示を明記し、個別にプロパティを継承しなければならないものとしています。

 XMLでは、属性は未指定として定義されています。

 この問題を解決する為には、複数の継承略記プロパティや略記プロパティと継承される個別のプロパティが明記された時には、先行してXSL定義を指定します。

 これらは、正確性が増します(つまり、[ border ]は、[ border-top ]や[ border-top-color ]に比し正確性という点で劣ります)。

 個別のプロパティは、常に省略された場合よりも正確です。

 2通り以上の解釈を許容するためにXSLでは、下記のような指定を定義しています。


  1. [ border-style ]、[ border-color ]、[ border-width ]は、以下よりも正確性が低い。
  2. [ border-top ]、[ border-bottom ]、[ border-right ]、[ border-left ]

 処理は、次のようなステップであるという考え方です。


  1. 初期値に全てのプロパティの値を適用。
  2. 正確性を増す全ての略記を処理。
  3.  もし、略記が継承するように設定されている場合には、それぞれのプロパティの適用される値は、親のプロパティと対応する算出値の為の略記によって設定する事ができます。

     もし、略記が継承されないように設定されている場合には、個別のプロパティが設定され、明記されている値から伝送される算出値と共に初期値と置き換えられます。

  4. 明記された個別のプロパティを全て処理。
  5. プロパティの継承を取り出し、最初のステップによって他の値を与えないようにする。

※例えば、もし、[ background ]と[ background-color ]という両方のプロパティが与えられたオブジェクト型に設定されている場合には、[ background ]略記を処理してから[ background-color ]プロパティを処理します。


 5.3 属性・プロパティと対応する算出値
  5.3.1 [ Border ], [ Padding ]プロパティ
  5.3.2 [ Margin ], [ Space ], [ Indent ]プロパティ
  5.3.3 [ Height ], [ Width ]プロパティ
  5.3.4 Overconstrained Geometry

5.3 属性・プロパティと対応する算出値

 [ padding-left ]や[ padding-start ]のようにプロパティが対応するものがある場合があり、算出値は全ての対応するプロパティの為に決定されます。

 どのようにオブジェクト型に与えられる算出値が決められるかについては、オブジェクト上に明記されている対応するプロパティに依存します(下記説明参照)。


 その関係するプロパティへの絶対的な対応マッピングは以下のようになります。

 もし、[ writing-mode ]が、[ top-to-bottom ]という[ block-progression-direction ]であると明記されている場合には、[ top ]は[ before ]に、[ bottom ]は[ after ]にマップされます。

 もし、[ writing-mode ]が、[ bottom-to-top ]という[ block-progression-direction ]であると明記されている場合には、[ top ]は[ after ]に、[ bottom ]は[ before ]にマップされます。

 もし、[ writing-mode ]が、[ left-to-right ]という[ block-progression-direction ]であると明記されている場合には、[ left ]は[ before ]に、[ right ]は[ after ]にマップされます。

 もし、[ writing-mode ]が、[ right-to-left ]という[ block-progression-direction ]であると明記されている場合には、[ left ]は[ after ]に、[ right ]は[ before ]にマップされます。

 もし、[ writing-mode ]が、[ left-to-right ]という[ inline-progression-direction ]であると明記されている場合には、[ left ]は[ start ]に、[ right ]は[ end ]にマップされます。

 もし、[ writing-mode ]が、[ right-to-left ]という[ inline-progression-direction ]であると明記されている場合には、[ left ]は[ end ]に、[ right ]は[ start ]にマップされます。

 もし、[ writing-mode ]が、[ top-to-bottom ]という[ inline-progression-direction ]であると明記されている場合には、[ top ]は[ start ]に、[ bottom ]は[ end ]にマップされます。

 もし、[ writing-mode ]が、[ bottom-to-top ]という[ inline-progression-direction ]であると明記されている場合には、[ top ]は[ end ]に、[ bottom ]は[ start ]にマップされます。

 もし、[ writing-mode ]が、奇数行が[ left-to-right ]で、偶数行が[ right-to-left ]という[ inline-progression-direction ]であると明記されている場合には、[ left ]は[ start ]に、[ right ]は[ end ]にマップされます。



※[ reference-orientation ]は、循環であり、対応するマッピングには影響を受けません。

5.3.1 [ Border ], [ Padding ]プロパティ

 対応するプロパティの最も単純なクラスは、対応するうちの絶対値プロパティと相対値プロパティという2つの違いだけで、例えば、[ border-left-color ]と[ border-start-color ]のようにそのプロパティ名は、絶対値か相対値のいずれを選択するかだけの違いです。

 このクラスにとっての対応するプロパティの算出値は、次のように決まります。

 もし、その対応するプロパティの異なる絶対値がオブジェクト型に設定されている場合には、その算出値は、対応する関連プロパティとして算出値をセットする為に利用されます。

 もし、対応する関連プロパティがオブジェクト型に設定されていて、略記の表記によって絶対値プロパティが指定されているだけであれば、その絶対値プロパティの算出値は、対応する関連プロパティの算出値をセットする為に利用されます。

 もし、絶対値と相対値プロパティ共に明記されていなければ、値設定を決めるルールでは、プロパティに定義されたものか、初期値かのいずれかを継承します。

 初期値は、すべての利用可能な対応するプロパティの為に同一でなければいけません。

 もし、絶対値プロパティと対応する相対値プロパティが共に明記されている場合には、ルール上は、絶対値プロパティが優先して適用される事になっており、対応する相対値プロパティとして設定された値は、対応するプロパティの算出値を決めるにあたり、無視されます。

 対応するプロパティは、以下のプロパティの算出値を決定する過程で利用されます。


  • border-after-color
  • border-before-color
  • border-end-color
  • border-start-color
  • border-after-style
  • border-before-style
  • border-end-style
  • border-start-style
  • border-after-width
  • border-before-width
  • border-end-width
  • border-start-width
  • padding-after
  • padding-before
  • padding-end
  • padding-start

5.3.2 [ Margin ], [ Space ], [ Indent ]プロパティ

 [ 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 ]と設定されている[ block-progression-dimension ]内のCSS2マージン算出値は、[ 0pt ]であり、[ auto ]というマージン値によって決まる[ space-before ]や[ space-after ]は、[ 0pt ]としてセットされます。

 これらは、2つ以上のプロパティがあり、ブロックレベルオブジェクト型の[ end-indent ]と[ start-indent ]は、様々な絶対値[ margin ]プロパティに対応します。

 これらのプロパティにとっては、対応がもっと複雑で、対応する[ border-X-width ]と[ padding-X ]プロパティを必然的に伴い、Xには、[ left ]、[ right ]、[ top ]、[ bottom ]のいずれか1つが入ります。

 これらの対応するプロパティの算出値は、次のようにして決められます。


 もし対応する絶対値[ margin ]プロパティがオブジェクト型に明記され、オブジェクト型が生成するマージンの算出値を持つ参照領域が、対応する[ Y-indent ]プロパティの算出値を計算する為に利用され、Yが[ start ]か[ end ]である場合。

 絶対値[ margin ]プロパティの算出値は、プロパティの説明とこれらのプロパティによって参照されるCSS勧告の関連セクション(「10.3」)のCSSによって決められます。

 [ start-indent ]、[ end-indent ]の算出式は、

 [ start-indent ] = [ margin-corresponding ] + [ padding-corresponding ] + [ boder-corresponding-width ]

 [ end-indent ] = [ margin-corresponding ] + [ padding-corresponding ] + [ boder-corresponding-width ]


 もし対応する絶対値[ margin ]プロパティがオブジェクト型に明記され、オブジェクト型が参照領域を生成せず、マージンの算出値と対応する[ border-X-width ]と[ padding-X ]の算出値が、対応する[ Y-indent ]プロパティの算出値を計算する為に利用される場合。

 [ start-indent ]、[ end-indent ]の算出式は、

 [ start-indent ] = [ inherited-property-value(start-indent) ] + [ margin-corresponding ] + [ padding-corresponding ] + [ boder-corresponding-width ]

 [ end-indent ] = [ inherited-property-value(end-indent) ] + [ margin-corresponding ] + [ padding-corresponding ] + [ boder-corresponding-width ]


 もし対応する絶対値[ margin ]プロパティが明記されていない、または、もし、対応する相対値プロパティがオブジェクト型に明記され、略記表記によって限定的に明記される時は、対応する絶対値マージンプロパティは、次の算出式によって算出されます。

 [ margin-corresponding ] = [ start-indent ] - [ inherited-property-value(start-indent) ] - [ padding-corresponding ] - [ boder-corresponding-width ]

 [ margin-corresponding ] = [ end-indent ] - [ inherited-property-value(end-indent) ] - [ padding-corresponding ] - [ boder-corresponding-width ]


※もし、[ start-indent ]または[ end-indent ]プロパティが、これらの算出式に利用される継承値を明記していない場合は・・・(翻訳時点で原文には以降の文言がありません。)

5.3.3 [ Height ], [ Width ]プロパティ

 オブジェクト型への効果の中で[ writing-mode ]に基づく[ height ]、[ min-height ]、[ max-height ]プロパティや[ width ]、[ min-width ]、[ max-width ]プロパティは、対応する[ block-progression-dimension ]や[ inline-progression-dimension ]に変換されます。

 [ height ]プロパティは、絶対値であり、[ top ]から[ bottom ]までの寸法を、[ width ]プロパティは、絶対値であり、[ left ]から[ right ]までの寸法を示します。

 もし、[ writing-mode ]が、[ top-to-bottom ]または、[ bottom-to-top ]という[ block-progression-direction ]として明記されている場合の変換は次のようになります。


◆[ height ]、[ min-height ]、[ max-height ]が明記されている場合
  ・[ height ]が明記されている場合には最初のセットは、
    block-progression-dimension.minimum=<height>
    block-progression-dimension.optimum=<height>
    block-progression-dimension.maximum=<height>



  ・[ height ]が明記されていない場合には最初のセットは、
    block-progression-dimension.minimum=auto
    block-progression-dimension.optimum=auto
    block-progression-dimension.maximum=auto

  ・その時、[ min-height ]が明記されいる場合にはリセットされ、
    block-progression-dimension.minimum=<min-height>

  ・その時、[ max-height ]が明記されいる場合にはリセットされ、
    block-progression-dimension.maximum=<max-height>

  ・その時、[ max-height ]が明記されいる場合にはリセットされ、
    block-progression-dimension.maximum=<max-height>

  ・しかしもし、[ max-height ]が[ none ]と明記されいる場合にはリセットされ、
    block-progression-dimension.maximum=auto


◆[ width ]、[ min-width ]、[ max-width ]が明記されている場合
  ・[ width ]が明記されている場合には最初のセットは、
    inline-progression-dimension.minimum=<width>
    inline-progression-dimension.optimum=<width>
    inline-progression-dimension.maximum=<width>



  ・[ width ]が明記されていない場合には最初のセットは、
    inline-progression-dimension.minimum=auto
    inline-progression-dimension.optimum=auto
    inline-progression-dimension.maximum=auto

  ・その時、[ min-width ]が明記されいる場合にはリセットされ、
    inline-progression-dimension.minimum=<min-width>

  ・その時、[ max-width ]が明記されいる場合にはリセットされ、
    inline-progression-dimension.maximum=<max-width>

  ・しかしもし、[ max-width ]が[ none ]と明記されいる場合にはリセットされ、
    inline-progression-dimension.maximum=auto

[ writing-mode ]が[ left-to-right ]、[ right-to-left ]という[ block-progression-direction ]である場合の変換


◆[ height ]、[ min-height ]、[ max-height ]が明記されている場合
  ・[ height ]が明記されている場合、最初のセットは、
    inline-progression-dimension.minimum=<height>
    inline-progression-dimension.optimum=<height>
    inline-progression-dimension.maximum=<height>



  ・[ height ]が明記されていない場合には最初のセットは、
    inline-progression-dimension.minimum=auto
    inline-progression-dimension.optimum=auto
    inline-progression-dimension.maximum=auto

  ・その時、[ min-height ]が明記されいる場合にはリセットされ、
    inline-progression-dimension.minimum=<min-height>

  ・その時、[ max-height ]が明記されいる場合にはリセットされ、
    inline-progression-dimension.maximum=<max-height>

  ・しかしもし、[ max-height ]が[ none ]と明記されいる場合にはリセットされ、
    inline-progression-dimension.maximum=auto


◆[ width ]、[ min-width ]、[ max-width ]が明記されている場合
  ・[ width ]が明記されている場合には最初のセットは、
    block-progression-dimension.minimum=<width>
    block-progression-dimension.optimum=<width>
    block-progression-dimension.maximum=<width>



  ・[ width ]が明記されていない場合には最初のセットは、
    block-progression-dimension.minimum=auto
    block-progression-dimension.optimum=auto
    block-progression-dimension.maximum=auto

  ・その時、[ min-width ]が明記されいる場合にはリセットされ、
    block-progression-dimension.minimum=<min-width>

  ・その時、[ max-width ]が明記されいる場合にはリセットされ、
    block-progression-dimension.maximum=<max-width>

  ・しかしもし、[ max-width ]が[ none ]と明記されいる場合にはリセットされ、
    block-progression-dimension.maximum=auto

5.3.4 制約を超える幾何学 Overconstrained Geometry

 領域内にある内容矩形の[ start-indent ]、[ end-indent ]、[ inline-progression-dimension ]の合計は、閉じた先祖にあたる参照領域の内容矩形の[ inline-progression-dimension ]と等しくなるべきです。

 そのケースでは、仕様は、異なる[ end-indent ]を導く場合もあり、こうした場合には、対応するマージンが等しくなるよう調整がなされます。


 5.4 シンプルな特徴をマッピングするプロパティ
  5.4.1 [ Background-position-horizontal ], [ background-position-vertical ]プロパティ
  5.4.2 [ Column-number ]プロパティ
  5.4.3 [ Text-align ]プロパティ
  5.4.4 [ Text-align-last ]プロパティ
  5.4.5 [ z-index ]プロパティ
  5.4.6 [ Language ]プロパティ

5.4 シンプルな特徴をマッピングするプロパティ

 プロパティの大部分は、同じ名前の特性にマップします。

 これらの内ほとんどは、プロパティから単純に値をコピーします。

 これらは、「B.3 プロパティテーブルⅡ」のプロパティテーブルにある[ Rendering ]、[ Formatting ]、[ Specification ]、[ Font selection ]、[ Reference ]、[ Action ]としてクラス化されます。

 たとえば、[ font-style="italic" ]は、[ "italic" ]という値を持つ[ font-style ]です。

 いくつかの特性は、プロパティの値と異なる値を持つものがあります。

 これらは、プロパティテーブルの中の[ Value change ](値変更)としてクラス化されます。

 例えば、[ font-position-horizontal="left" ]は、[ 0pt ]という値を持つ[ background-position-horizontal ]特性です。

 これらの特性とマッピングする値は以下(5.4.1~)のように与えられます。

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 ]の値は、プロパティ定義にある相対値[ writing-mode ]に変換されます。

5.4.4 [ Text-align-last ]プロパティ

 [ left ]または、[ right ]の値は、プロパティ定義にある相対値[ writing-mode ]に変換されます。

5.4.5 [ z-index ]プロパティ

 ある値に変換された値は、絶対値です。

 例えば、洗練化された値は、仕様化された値に親オブジェクト型の[ z-index ]の値に洗練された値を加えます。

5.4.6 [ Language ]プロパティ

 [ISO639]に対応する[ 2-letter ](2文字)コードがある値は、[ISO639-2]の[ 3-letter ](3文字)専門術語コードに変換され、図書目録コード[ISO639-2]に対応する[ 3-letter ](3文字)コードは、[ 3-letter ](3文字)専門術語コードに変換され、[ none ]や[ mul ]という値は、[ und ]に変換されます。


 5.5 複雑な特徴をマッピングするプロパティ
  5.5.1 [ Word spacing ] and [ Letter spacing ]プロパティ
  5.5.2 [ Reference-orientation ]プロパティ
  5.5.3 [ Writing-mode ] and [ Direction ]プロパティ
  5.5.4 [ Absolute-position ]プロパティ
  5.5.5 [ Relative-position ]プロパティ
  5.5.6 [ Text-decoration ]プロパティ
  5.5.7 [ Font ]プロパティ

5.5 複雑な特徴をマッピングするプロパティ

 プロパティの小さな数字は、もっと複雑な作法である特性(詳細は5.5.1~)に作用します。

5.5.1 [ Word spacing ] and [ Letter spacing ]プロパティ

 これらのプロパティが、プロパティ定義に示されるような[ space-start ]と[ space-end ]特性の為の値をセットする場合がります。

5.5.2 [ Reference-orientation ]プロパティ

 [ Reference-orientation ]特性は、洗練化中に[ reference-orientation ]プロパティからコピーされ、構築されている間、絶対値オリエンテーションが決められます(「4.2.2 共通特性」参照)。

5.5.3 [ Writing-mode ] and [ 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 ]プロパティが洗練化されているオブジェクト型のカラー特性の値を持ちます。


トークン[ underline ]を含むプロパティ値は、[ underline-score ]特性に[ true ]という値を設定し、[ underline-color ]特性に仕様色を設定します。

トークン[ overline ]を含むプロパティ値は、[ overline-score ]特性に[ true ]という値を設定し、[ overline-color ]特性に仕様色を設定します。

トークン[ line-through ]を含むプロパティ値は、[ through-score ]特性に[ true ]という値を設定し、[ through-color ]特性に仕様色を設定します。

トークン[ blink ]を含むプロパティ値は、[ blink ]特性に[ true ]という値を設定します。


トークン[ no-underline ]を含むプロパティ値は、[ underline-score ]特性に[ false ]という値を設定し、[ underline-color ]特性に仕様色を設定します。

トークン[ no-overline ]を含むプロパティ値は、[ overline-score ]特性に[ false ]という値を設定し、[ overline-color ]特性に仕様色を設定します。

トークン[ no-line-through ]を含むプロパティ値は、[ through-score ]特性に[ false ]という値を設定し、[ through-color ]特性に仕様色を設定します。

トークン[ no-blink ]を含むプロパティ値は、[ blink ]特性に[ false ]という値を設定します。

5.5.7 [ Font ]プロパティ

 ある領域におけるフォント特性は、そのフォントから成るフォントテーブルのフォントを選択するために利用されるフォントプロパティの結合によって間接的に伝播されます。

 フォントにおけるXSLの仮定する絶対的モデルについては、「7.9.1 フォントとフォントデータ」に記述されています。

 これら[ font-familiy ]、[ font-style ]、[ font-variant ]、[ font-weight ]、[ font-stretch ]、[ font-size ]や加えていくつかのオブジェクト型、1つ以上の文字など固有のフォント仕様についてのXSLメカニズムはありません。

 どのように選択基準が利用されるかについては、[ font-selection-strategy ](「7.9.3 font-selection-strategy」参照)に明記されています。

 [ nominal-font ]特性は、フォントを選択する為に設定されます。

 フォントが選択されておらず、不完全な象形が表示されているケースでは、その[ nominal-font ]特性は、象形を含むフォントを設定し、一方、いくつかの他のメカニズムで文字が表示されない事を示すために利用される[ nominal-font ]はシステムフォントです。

 [ dominant-baseline-identifier ]と[ actual-baseline-table ]特性は、[ dominant-baseline ]プロパティの値から伝播されます。

 このプロパティの値は、[ dominant-baseline ]の為の[ baseline-identifier ]や[ baseline-table ]と[ baseline-table ]の[ font-size ]といった3つのコンポーネントを持つ複合値です。

 [ dominant-baseline-identifier ]は、最初のコンポーネントから設定されます。

 [ baseline-table ]の[ font-size ]は、基準となるテーブルから基準位置を計測する為に利用され、その時の[ dominant-baseline ]の位置は、優先基準から得たオフセットのテーブルを導く為に他の基準線の位置から減じられます。

 このテーブルは[ actual-baseline-table ]特性の値です。


 5.6 プロパティがないものはその特色に基づく Non-property Based Trait Generation

5.6 プロパティがないものはその特色に基づく Non-property Based Trait Generation

 [ is-reference-area ]特性は、仕様化されたオブジェクト型の為に[ true ]が設定されます。

 これらのオブジェクト型の説明は、明確に仕様化され、このセクションはそのケースにあたります。

 これにあたらない他のオブジェクト型には、すべて[ false ]が設定されます。


 5.7 変換に基づくプロパティ
  5.7.1 [ Text-transform ]プロパティ

5.7 Text-transform

5.7.1 Text-transform

 [ text-transform ]プロパティによる仕様変更のケースでは、適した文字プロパティの値に変更する洗練化中に見い出されます。

※[ text-transform ]プロパティの利用は、国際化問題の為にXSLでは、非推奨とされています。


 5.8 UnicodeのBIDI(左書き・右書き・縦書き・横書き)処理 Unicode BIDI Processing

5.8 UnicodeのBIDI(左書き・右書き・縦書き・横書き)処理 Unicode BIDI Processing

 とある書式にある文字は、右から左に水平に書かれます。

 いくつかの文書では、固有のアラビア語やヘブライ語書式で書かれ、いくつかの混合言語文脈では、単独の視覚的に表示されたブロックにあるテキストが混合した方向で現れる場合があります。

 この事象は、bidirectionality、これを略してBIDIと呼ばれます。

 Unicode BIDIアルゴリズム(「UNICODE UAX #9」)は、テキストの妥当な方向を決める為の混合アルゴリズムと定義されています。

 そのアルゴリズムは、暗黙の了解と文字プロパティの両方にに基づいており、埋め込みと上乗せの為の明確な操作と同様です。

 洗練化の最後の段階は、このアルゴリズムとオブジェクト型と明確にマークアップするテキストの暗黙の方向に変換する為の各文字のUnicode混合方向文字タイプの利用です。

 たとえば、英語の段落中にあるアラビア文字の[ sub-sequence ]というのは、[ rtl ](right to left/右から左)という[ direction ]プロパティと[ bidi-override ]という[ unicode-bidi ]プロパティを持つ文書のようにアラビア文字を持つインラインオブジェクト型の作成を伴う場合もあります。

 このような場合、オブジェクト型は、予めアラビア文字として暗黙的に右から左に記述するという事を明記します。

UNICODE UAX #9」で定義されているようにUnicode BIDIアルゴリズムは入力としてテキストストリームを受け取り、3つの主なフェーズを処理します。


  1. 段落中の入力テキストを分割
    ※この時アルゴリズムとしてゆだねられているのは段落区切り文字間にあるテキストだけに作用する事です。
  2. テキストの埋め込みレベルの解決
    ※この段階では、混合文字方向タイプに加え、Unicodeの方向コード型は、解決された埋め込みレベルを生成して利用されます。
    ※各文字の混合文字方向タイプの規定は、Unicode文字列データベース[Unicode Character Database]に明記されています。
  3. 解決された埋め込みレベルの利用に基づく線から線までにある表示の為のテキスト再指定をして、すぐにテキストを行に分割

 上記に記述されているようにアルゴリズムは、XSL処理形式に対応するという適合を要求します。

 最初は、その最後であるテキスト再指定段階が洗練化中には行われません。

 代わりにXSLの[ re-ordering ]と同様に、領域ツリー生成中に行われます。

 [ inline-progression-direction ]は、[ writing-mode ]によってブロックレベルで決められ、[ direction ]と[ unicode-bidi ]は、ツリー構築中、またはこの洗練化の段階で生成されるインラインオブジェクト型として明記されるかいずれかです(詳細は下記)。

 2番めにアルゴリズムは1つ以上のオブジェクト型の内容にある文字に順次供給されます。

 文字の順番はオブジェクト型ツリーの断片を処理する事によって生成されます。

 断片は、ツリー中のいくつかのオブジェクト型の子の近接する順番です。

 順番は、[ fo:character ]レベルに下がって断片の横断的な[ pre-order ]を行う事によって生成されます。

 横断的な[ pre-order ]中は、[ fo:character ]オブジェクト型ごとに順次文字を追加します。

 もっといえば、いつでも[ pre-order ]は、[ embed ]や[ bidi-override ]を持つ[ unicode-bidi ]プロパティを持つノードの出現を走査しており、[ direction ]と[ unicode-bidi ]プロパティの値に適すように順次UnicodeのRLO/LROやRLE/LRE文字を追加します。

 その文書を横断した後ノードに返すには、Unicode PDF文字を追加します。

 この方法では、オブジェクト型のツリー断片は、文字の順番にならされます。

 この文字の順番は、「flattened sequence of characters」(文字順にならされた)と呼ばれます。

 3番目にXSLアルゴリズムでは、段落の代わりにテキスト範囲に区切られて提供されます。

 区切られたテキスト範囲は、区切り文字を含まないよう最大限文字順にならされます。

 あるオブジェクト型が生成するブロック領域は、その文書を区切ったり、親文書とを区切るように作用するいわばデリミタ(区切り)です。

 それは、もし、その親が文字内容を持つ場合、その子に当たるオブジェクト型が生成するブロック領域は、区切られたテキスト範囲であるそれぞれの無名ブロックとして文字内容を分割する作用がある事を意味します。

 似たような作法としては、[ fo:multi-case ]オブジェクト型がその文書と親文書を区切るような作用があります。

 最後に[ dominant-baseline ]に垂直でない方向性を持つテキストは、[ dominant-baseline ]に垂直でない方向性を持つテキストを区切るように作用します。

 「text has an orientation perpendicular to the dominant-baseline」([ dominant-baseline ]に垂直でない方向性を持つテキスト)というのは、テキスト中に対応する象形文字の全てが、[ dominant-baseline ]に垂直でない方向性を持つという事です。

※たいていのケースでは、区切られたテキスト範囲は、最大限文字順であり、1つ以上のインライン領域の順番としてフォーマットされる場合があります。

※[ fo:multi-case ]と[ dominant-baseline ]に垂直でない方向性を持つテキストという区切られた範囲は、1行の中のサブシーケンスまたは、複数行の中のシーケンスである場合もあります。

※例えば日本語では、垂直記述形式(縦書き)でフォーマットされ、循環されるラテン文字とアラビア文字は、ラテン文字とアラビア文字のすぐその周囲にある日本語文字によって区切られる場合があります。

※あるオブジェクト型が生成するインライン領域は、区切られたテキスト範囲の取り決めにおいて影響がありません。

 それぞれの区切られたテキスト範囲は、もっとも近いオブジェクト型自身に含まれる先祖にあたる[ inline-progression-direction ]で、生成するブロック領域が決める段落埋め込みレベルは、Unicode BIDIアルゴリズムに利用されます。

 これは、区切られたテキスト範囲の為の既定の埋め込みレベルです。

 埋め込みレベルは、数値で、その数値は、テキストがどのくらい深くネストしているかと、そのレベルにおけるテキストの既定の方向を示します。

 テキストの最小埋め込みレベルはゼロで、最大埋め込みレベルは「61」です。

 61以上の埋め込みレベルを持つ場合は、エラーです。

 XSLプロセッサはエラーを警告する場合があります。

 もしエラー警告がない場合には、埋め込みレベルの最大数値以上を許容する事によって復旧されなければいけません。

 Unicode BIDIアルゴリズムの第二段階は、解決された埋め込みレベルを持つ区切られたテキスト範囲にあるそれぞれの文字にラベルをつける事です。

 各文字の解決された埋め込みレベルは、段落埋め込みレベル以上または同等の大きさです。

 左から右へ書かれるテキストは、常に奇数レベルで終わり、左から右に書かれる数値で表す文字は常に偶数レベルで終わります。

 追記すると、数値で表される文字は、常に段落レベル以上の高レベルで終わります。

 1度解決された埋め込みレベルが、区切られたテキスト範囲の為に決められたら、妥当な[ direction ]と[ unicode-bidi ]プロパティを持つ新たな[ fo:bidi-override ]オブジェクト型は、オブジェクト型ツリーの断片に挿入され、次の制約が満たされるような区切られたテキストにならされます。


  1. 区切られたテキスト範囲にあるある文字は、文字の[ inline-progression-direction ]が、その解決された埋め込みレベルと対応しなければいけません。
  2. 段落埋め込みレベルから最大限解決された埋め込みレベルまでそれぞれの解決された埋め込みレベルLと、各文字がLと同等以上の解決された埋め込みレベルであるSというそれぞれ最大限近接する文字順
    1. Fというインラインオブジェクト型があり、Sまでならされるオブジェクト型ツリー断片の内容として持ち、解決された組み込みレベルLと対応する[ direction ]プロパティを持ちます。
    2. ※Fにはオブジェクト型は挿入されず、制約としては、存在するオブジェクト型か、存在するオブジェクト型にある[ direction ]と[ unicode-bidi ]プロパティの為の仕様化された値によって満たされます。

    3. Sシーケンスの一部を含む全てのオブジェクト型は、Fの中に適切にネストされ、ネスト関係を保持し、新しいオブジェクト型の挿入を優先してオブジェクト型ツリー中に持っています。
    4. ※この制約を満たす事は、オリジナルのプロパティ値として算出される同一のセットを持つそれぞれのオブジェクト型のペアにそれぞれオブジェクト型ツリーにある1つ以上存在するオブジェクト型に分割する事を要求する場合があります。

      ※ペアの内の1つはFの始まる前に終了される場合やFの末端の後に始まる場合があり、その他では、Fの始まりの後に始まる場合やFの終わる前に終わる場合もあります。

      ※生成されたペアは、この制約を満たすべく正確にネストされ続けなければいけません。

      ※例えば、左から右への記述で「L」という文字で表現する場合には、右から左への記述は、「R」によって表現されます。

      ※サブツリーの中では

      <fo:block>
      LL
      <fo:inline id="A" color="red">LLLRRR<fo:inline>
      RR
      </fo:block>

      ※「0(ゼロ)」という段落埋め込みレベルを仮定すると解決された埋め込みレベルは、次のような挿入と複製構築を要求する場合があります。

      <fo:block>
      LL
       <fo:inline id="A" color="red">LLLRRR</fo:inline>
       <fo:bidi-override direction="rtl">
        <fo:inline color="red">RRR</fo:inline>
      RR
       </fo:bidi-override>
      </fo:block>

      ※idがAと等しい[ fo:inline ]は、2つの[ fo:inline ]に分割され、最初の1つは「A」というオリジナルidを保持します。

      ※idは、オブジェクト型ツリー内で一意でなくてはならず、idの算出値は、ペアの内2番めに複製されてはいけません。

  3. [ fo:bidi-override ]オブジェクト型がない場合には、挿入が可能で、制約を満たします。それは多くの[ fo:bidi-override ]オブジェクト型の1つとしてオブジェクト型ツリーに追加し、文書中にある複数の埋め込みレベルを明確に表現する事が必要とされるものとしてオブジェクト型はツリー構築中に作成されます。


 5.9 式 Expressions
  5.9.1 プロパティ文脈 Property Context
  5.9.2 評価指定 Evaluation Order
  5.9.3 基本 Basics
  5.9.4 機能呼び出し Function Calls
  5.9.5 数値による文字(進数表現) Numerics
  5.9.6 絶対値進数表現 Absolute Numerics
  5.9.7 相対値進数表現 Relative Numerics
   5.9.7.1 比率 Percents
   5.9.7.2 相対長(相対的な長さ) Relative Lengths
  5.9.8 文字・文字列 Strings
  5.9.9 色・カラー Colors
  5.9.10 キーワード Keywords
   5.9.10.1 継承 inherit
  5.9.11 語彙構造 Lexical Structure
  5.9.12 式値変換 Expression Value Conversions
  5.9.13 計測単位の定義 Definitions of Units of Measure
   5.9.13.1 ピクセル値 Pixels

 5.9 式 Expressions

 XSLスタイルシート内にある属性のすべてのプロパティ値仕様は、表記する事ができます。

 これらの記述には、プロパティ仕様の値を伴います。

 記述は、最初に評価され、結果得られる値はプロパティの値を決めるのに使われます。

※記述言語は、データタイプセットに限定で演算子がサポートされます。

※これらには、<angle>、<time>、<frequency>は含まれません。

※これらのデータタイプの値は、記述言語にある文字である必要があります。

※データタイプ仕様の定義は、これらの文字から成る場合に許容されます。

5.9.1 プロパティ文脈 Property Context

 プロパティは、文脈プロパティ仕様に対して評価され、この文脈が以下を提供します。


  • プロパティ値の為の結果得られるタイプの許容リスト
  • 結果得られる記述値からプロパティの為に許容されるタイプへの変換
  • 現在のフォントサイズ値を適用
  • 相対値を付加的な記述にある絶対値に変換

※すべてのタイプが提供される必要はありません。

※もし、変換されない仕様があった場合には、それはエラーです。

 タイプインスタンス(文字、キーワード、数値・・・など)が、記述の中で認知される時というのは、プロパティ文脈に対して評価されている状態を表します。

 これは、プロパティ文脈仕様アルゴリズムや全てに渡って記述の評価における利用の為の変換を伴う変換される仕様値において利用可能な状態を提供します。

 たとえば、適切なプロパティとしての評価トークン[ auto ]は、値が計算されます

 このようなトークンは、プロパティ定義に記述されているアルゴリズムを通して仕様タイプに変換されます。

 このようなケースでは、結果値はオブジェクト型のいくつかの面の幅を表す絶対値の長さになる場合があります。

 追記すると、これは数学的演算子に優先される絶対値に解決される相対値のように正確なタイプを許容します。

 すべてのプロパティ文脈は「5.9.12 演算値変換」に仕様化されているように変換を許容します。

5.9.2 評価指定 Evaluation Order

 プロパティの設定がオブジェクトツリーにあるオブジェクト型仕様において評価される時、評価されるべきプロパティにある指定を記述します。

 基本的には、[ font-size ]プロパティが評価される時、評価に利用される現在の[ font-size ]とは、親要素の[ font-size ]です。

 1度[ font-size ]プロパティが評価されると、その値は、その後にある全てのプロパティの全てのプロパティ文脈の値式が評価する現在の[ font-size ]として利用されます。

5.9.3 基本 Basics

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

5.9.4 機能呼び出し Function Calls

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

5.9.5 数値による文字(進数表現) Numerics

 数値表現とは、XSL表記における数値の全ての種類を指します。

 これらの数値の中には、絶対値もあり、その他は、他の値の設定における相対値です。

 これら全ての値は、これらの値の定義である[ number-part ]を示すための[ floating-point ]値を利用します。

 [ floating-point ]値は、[ double-precision ]64ビットフォーマット[ IEEE 754 ]値を持つ事ができます。

 これらは、正と負の無限大、正と負のゼロである特別なNaN(Not-a-Number)値を含みます。

※[ IEEE 754 ]標準のキールールの概要である[ JLS ]の「セクション4.2.3」参照。


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

 次の演算子は、数値表現を伴って利用されます。


  +  加算
  -  減算、引き算たは反対(欠如)negation.
  *  乗法、掛け算
  div  IEEE 754による[ floating-point ]除法、割り算
  mod  除法、割り算で切り詰めた結果の余りを戻す


※XSLは、名前の中にある[ - ]を許容し、[ - ]演算子の典型は、ホワイトスペースによって先行される必要があります。
※例えば、[ 10pt - 2pt ]とホワイトスペースを伴った式では、10ポイントから2ポイントを取り除く事を意味しますが、これが[ 10pt-2pt ]と記述すると[ pt-2pt ]を伴う[ 10 ]という長さを意味する場合があるかもしれません。

※次は[ mod ]演算子の例です。


 5 mod 2 returns 1
 5 mod -2 returns 1
 -5 mod 2 returns -1
 -5 mod -2 returns -1


※[ 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


※この文法の効果として、次のような優先順位(左が優先度が高い)を持ちます。
・[ + ]、[ - ]
・[ * ]、[ div ]、[ mod ]
※更に演算子は、全て左結合であり、例えば、[ 2*3 + 4 div 5 ]は、[ (2*3) + (4 div 5) ]です。

 もし、数値表現ではない値である場合は、[ AdditiveExpr ]の中で利用され、絶対値数値表現値にあるタイプから文脈変換するプロパティを持たず、表記は妥当でありながら、エラーとして認識されます。

5.9.6 絶対値進数表現 Absolute Numerics

 絶対値数値表現は、絶対的な長さであり、数値と単位名というペア構成が、より一層強固なものにしています。

 絶対的な長さが単位なしで記述された場合、単位の作用はゼロとなり、浮動小数点数値は、単位の作用がゼロである長さになります。

 それぞれの単位名は、メートルなどの単位の一般的な内部単位と内部比率を結合します。

 値がプロパティ式に記述された時、まず単位の内部ユニットに変換し、それから数学的な処理が実行されます。

 追記すると、[ mod ]は、加算と減算演算子が同等の単位作用を持つ絶対値に処理された両サイドの数値を要求します。

 他の処理は、その単位作用が異なる場合、その結果が代数学における処理の操作を伴うものとして数学的に対応するべきです。

 プロパティ定義は、特有の効力の為の絶対的長さを制約する場合もあります。

 例えば、[ font-size ]を指定する時、その値は、1つの効力を持つものと期待されます。

 それが指定された[ 10pt ]などの単独の効力を持つ単位を持つものと期待されます。

 プロパティの最後の値が計算される時、その絶対値の結果的な効力は、いずれもゼロかまたは1つでなければいけません。

 もし何か他の効力が指定されている場合があるとすれば、その値はエラーとなります。

5.9.7 相対値進数表現 Relative Numerics

 相対的な長さは、他の値のセットとの関係が計算された値です。

 式の一部として記述された時、それらは、それぞれ絶対値またはプロパティ値として正確に処理されたプロパティ文脈を経由して変換されます。

 プロパティ文脈が相対値変換不能で、変換が例えば加算演算子なしで算出式を要求された場合はエラーとなります。

5.9.7.1 比率 Percents

 パーセンテージ比率は、1/100単位に換算された値です。

 比率値としての10%という値は、浮動小数点数値の0.10に当たります。

 絶対値に変換されるとき、その比率はいくつかの認識されたプロパティ値の比率としてプロパティ定義に定義されます。

 もし、[ auto ]という正式な算出式であった場合には、比率は自動計算されます。

 たとえば、[ font-size ]プロパティが110%という値があった場合、現在のフォントサイズの1.1倍の意味として算出されます。

 このように許容された比率変換の定義は、プロパティ定義として明記されています。

 もし、変換なしと記述されている場合には、結果値は、比率のままになります。

5.9.7.2 相対長(相対的な長さ) Relative Lengths

 相対的な長さは、[ font-size ]プロパティの現在の値に対して計測された単位基準値です。

 計測の相関する単位が一つだけの場合は、[ em ]です。

 [ 1em ]という定義は、現在のフォントサイズと同等である事を意味します。

 たとえば、[ 1.25em ]という値は、現在のフォントサイズの1.25倍である事を意味しています。

 em計測が、式で使われる場合には、現在のプロパティの文脈の[ font-size ]値によって変換されます。

 式の結果は、絶対的な長さ(絶対長)になります。(「7.9.4 font-size 」参照)

5.9.8 文字・文字列 Strings

 文字(列)は、リテラル値または算出トークンのいずれかであるものとして提供されます。

 すべてのプロパティ文脈は、算出トークンから文字列への変換を許容します。(「5.9.12 式・値・変換」参照)

5.9.9 色・カラー Colors

 値のセットである色は、色空間を参照した特有の色の識別のために利用されます。

 RGBカラー(Red[赤]、Green[緑]、Blue[青])とICC(International Color Consortium)カラーに関しては、この勧告に含まれています。

 RGBカラーは、16進数表記に利用する式言語によって直接的に表されます。

 ICCカラーは、[ rgb-icc ]機能を通して記述する事ができます。

 色は、システムカラー機能やプロパティ文脈経由の算出トークンからの変換を通して記述する事もできます。

5.9.10 キーワード Keywords

 キーワードは、計算値や他のプロパティ値へのアクセスを提供する文法上の特別なトークンです。

 許容されるキーワードは、次のサブセクション(5.9.10.1 継承 inherit)に定義されています。

5.9.10.1 継承 inherit

 プロパティは、オブジェクト型の親オブジェクトの為のプロパティとして同一の算出値を持ちます。

※「継承」では、演算子を伴って混合された式を許容しませんが、同じようなことは、[ form-parent() ]関数によって提供され、演算子を伴った継承を行う事ができます。

5.9.11 語彙構造 Lexical Structure

 ホワイトスペースにおける式を処理する際には、文法上にそのような定義がなかったとしても式トークンの前後にホワイトスペースを許容する場合があります。

 いくつかのケースでは、ホワイトスペースは明確な語彙の文法上、トークンを作るのに必要になります。

 特にホワイトスペースは、式の実行後には存在しないかのように扱われるべきです。


・もし文字列に続くのが[ ( ]である場合には、関数名として認識されるべきです。

・数字は、[ . ]以外の数字でない文字の最初の出現で終わらせます。
 これにより正確な解析における長さの量の為の単位トークンを許容します。

・文字のすぐ後に数字が続く際には、単位名として認識されるか、またはエラーです。

・キーワード値は、算出トークン以上に優先されます。

・文字に数値表現が続く場合、演算子名として認識されるか、または、エラーです。

語彙構造表記


[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 式値変換 Expression Value Conversions

 式算出の結果である値は、プロパティ値タイプに変換される場合があります。

 いくつかのインスタンスでは、認められたカントリーコードであるかなどの単純な検証があります。

 他のケースでは、値は、数値のような単純なタイプであると期待され、必ず変換されなければいけません。

 必ずしもすべてのタイプが変換される事を許容する必要はありません。

 もし式の値がプロパティ値の為に必要となるタイプに変換できない場合には、エラーになります。

 次のテーブルは、変換が許容されるものを示すものです。

タイプ許容される変換制約
NCName
  • [ system-color() ]関数経由の色
  • プロパティ定義に定義された算出値
  • 文字列リテラルへの変換
値がプロパティに依存する値の正しいセットであるかどうかをチェックする場合がある。
AbsoluteNumeric
絶対値数値表現
  • [ round() ]関数経由の数値
  • RGBカラーとしての色
RGBカラー値に変換する場合、色空間の正しい色の値でなければならない。
RelativeLength
相対長
  • 絶対長への変換
 

 許容される仕様化された変換は、プロパティ仕様とそれぞれのプロパティの定義で見つける事ができます。

※混合プロパティ値の変換は、許容されません。このような場合の例としては、[ space-before.optimum="継承されるプロパティ値(space-before)" ]は妥当ではなく、許容されるのは、例えば、[ space-before="継承されるプロパティ値(space-before)" ]と、変換を要求しない時の[ space-before.optimum="継承されるプロパティ値(space-before.optimum)" ]です。

5.9.13 計測単位の定義 Definitions of Units of Measure

 この勧告にある計測単位には次の定義があります。

名称定義
cm[ISO 31]参照
mm[ISO 31]参照
in2.54cm
pt1/72in
pc12pt
px「5.9.13.1 ピクセル」参照
em「5.9.7.2 相対長」参照

5.9.13.1 ピクセル値 Pixels

 XSLは典型的なコンピュータモニタ上の1ピクセルに近い表示の装置単独の計測の選択に対応する要求となるように[ px ]単位を解釈します。


  1. [ 1px ]のよりよい定義は
    • 実体距離は、装置ドット(装置ドットのサイズは、中央ドットからの距離として計測される)の最大の数値番号によってカバーされ、それ以下または同等の距離のスパンは http://www.w3.org/TR/REC-CSS2//syndata.html#x39にある[ arc-span ]ルールによって仕様化されるか、またはエラーとして破棄します。
    • 1装置ドットのサイズの最小値が利用されます。
    • この計算は、それぞれの軸の中で実行され、軸によって異なる値を持つ場合もあります。
  2. しかしながら、プロセッサは、単純な固定された変換を選んで代替させる場合があり、1/92や1/72といったような絶対値の計測単位として[ px ]を扱います。

※ピクセルは、不適当な効果の原因になるので式の中で他の絶対単位を混ぜて使用するべきではありません。

※また、特別な注意点としてはピクセルを利用して仕様化される継承されたプロパティ値を利用するべきです。

※もしユーザーエージェントが[ px ]での計測を選択した場合には、それぞれの軸にある装置ドットの数値番号と対応せず、次のような不適当な効果を生む場合があります。


  • はげ落ちたラスター画像にあるモアレ(モアール・波紋)パターン
  • 円を描くフォントや画像サイズが実際のドットサイズ以上になったりといった際の不適当に重なった領域
  • 円を描くフォントや画像サイズが実際のドットサイズ以上になったりといった際の不適当に重なった領域間の面積
  • 許容できない不適当な小さなサイズのテキストやレイアウト(例えば、レイアウトが72dpi(dots per inch)で計算され、一方で描画結果が既に装置ドットで仕様化されていて、600dpiで描画されてしまう等。)

 スタイルシート作者は、ピクセルの実体サイズが装置から装置に伝播される場合がある事を認識するべきです。


  • [ px ]単位を利用するスタイルシートは、異なる手法を横断的に利用したり、ひとつの手法で異なる複数の出力装置で結果を生成させようとしたりしないで方がいいでしょう。
  • スタイルシートは、結果を[ px ]単位で明確に示される場合でも異なる装置に伝搬される場合があります。


 5.10 核となる関数ライブラリ Core Function Library
  5.10.1 数値関数 Number Functions
  5.10.2 色・カラー関数 Color Functions
  5.10.3 フォント関数 Font Functions
  5.10.4 属性値関数 Property Value Functions

5.10 核となる関数ライブラリ Core Function Library

5.10.1 数値関数 Number Functions

 numeric floor(numeric)

 floor関数は、引数より大きくない正の無限大に近い最大値を戻します。

 この関数の為の数値から成る引数は、ゼロの効力を持つ単位で構成されなければいけません。

※もし、プロパティにおいてfloor関数を利用する必要がある場合には、1という効力を持つ単位が期待され、その時には[ floor(1.4in div 1.0in)*1.0in ]のような式を利用しなければいけません。


 numeric ceiling(numeric)

 ceiling関数は、引数より小さくない負の最小値に近い値を戻します。

 この関数の為の数値から成る引数は、ゼロの効力を持つ単位で構成されなければいけません。


 numeric round(numeric)

 round関数は、引数に近い数値を戻します。

 もし、そのような数字が2つある場合には、1つは、正の無限大に近い値を戻します。

 この関数の為の数値から成る引数は、ゼロの効力を持つ単位で構成されなければいけません。


 numeric min(numeric, numeric)

 min関数は、2つの数値から成る引数の最小値を戻します。

 これらの引数は共に同じ効力の単位を持たなければいけません。


 numeric max(numeric, numeric)

 max関数は、2つの数値から成る引数の最大値を戻します。

 これらの引数は共に同じ効力の単位を持たなければいけません。


 numeric abs(numeric)

 abs関数は、数値から成る引数の絶対値を戻します。

 もし、数値から成る引数が負の値である場合には、引数の反対の値を戻します。

5.10.2 色・カラー関数 Color Functions

 color rgb(numeric, numeric, numeric)

 rgb関数は、RGBカラー空間から指定された色を戻します。

 この関数の為のパラメータは、ゼロという効力の長さを持つ数値から成る実数でなければいけません。


 color rgb-icc(numeric, numeric, numeric, NCName, numeric, numeric)

 rgb-icc関数は、ICCカラープロファイルから指定された色を戻します。

 カラープロファイルは、4つのパラメータ名によって指定されます。

 このカラープロファイルは、[ fo:color-profile ]オブジェクト型を利用する[ fo:declarations ]で定義されていなければいけません。

 引数の最初の3つのパラメータは、RGBカラー空間からの代替色を記述し、カラープロファイルが利用不可の際に利用されます。

 1つ以上の実数から成るカラー値によって指定されたこの色は、名前引数の後に指定され、これらの値は、カラープロファイルに指定されます。


 color system-color(NCName)

 system-color関数は与えられた名称のシステム定義色を戻します。

5.10.3 フォント関数 Font Functions

 object system-font(NCName, NCName?)

 system-font関数はシステムフォントの文字列を戻します。

 最初の引数は、システムフォント名で、2つめの引数は、オプションで文字列で指定されたプロパティ名です。

 もし、2つめの引数が省略された場合には、文字列は、式のプロパティの名称が付与されたものとして同じもの(プロパティ名)を戻します。

 たとえば、[ system-font(heading,font-size) ]という式は、[ heading ]と名付けられたシステムフォントの為のfont-size文字列を戻します。

 これは、プロパティに[ font-size="system-font(heading)" ]と付与された時と同様です。

5.10.4 属性値関数 Property Value Functions

 object inherited-property-value(NCName?)

 inherited-property-value関数は、指定された引数と名称が対応するプロパティの継承値を戻すかまたは、式においてプロパティが省略されている場合には、算出値となります。

 もし、このプロパティが継承されたプロパティでない場合にはエラーになります。

 もし、その引数が略記プロパティで記述されており、算出値となるプロパティに対応する引数を持つinherited-property-value関数からなる限定的な構成の場合には、略記拡張となる各プロパティを持つ略記の表記として解釈され、これらはそれぞれプロパティに対応する引数を持つinherited-property-valueの値を持ちます。

 もし、略記プロパティに対応する引数が他の方法で利用されるようなことがある場合にはエラーとなります。

 簡潔に言うと、もし、その引数が複合データタイプのプロパティとして記述され、算出されるプロパティと対応する引数を持つinherited-property-value関数の限定的な構成による式である場合には、複合プロパティのコンポーネントを持つ式がコンポーネントと対応する引数を持つ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 ]プロパティは、「赤」という値を示しているので算出または継承後の[ fo:list-item-body ]上の(背景色ではない)カラー値プロパティは、[ fo:block ]の親が「赤」という事です。


 numeric label-end()

 label-end関数はリストにとっての算出されたlabel-end値を戻します。「7.30.11 provisional-label-separation」定義を参照。


 numeric body-start()

 body-start関数はリストにとっての算出されたbody-start値を戻します。「7.30.12 provisional-distance-between-starts」定義を参照。


 object from-parent(NCName?)

 from-parent関数は引数仕様と対応する名称のプロパティまたは、もし、式におけるプロパティが省略された場合は算出される算出値(「5.1 指定値、算出値、実体値、継承」参照)を戻します。

 戻される値は、式が算出する為のオブジェクト型の親オブジェクトの値です。

 もし、親オブジェクトがなく値が戻る事があるとすれば、それは初期値です。

 もし、引数が略記プロパティで記述されていて、プロパティと対応する引数を持つfrom-parent関数から限定的に構成される式は算出され、略記拡張となるそれぞれのプロパティを持つ略記の表記として解釈され、そのそれぞれは、プロパティに対応する引数を持つfrom-parentの値を持っています。

 もし、略記プロパティに対応する引数が他の方法で利用されるようなことがある場合にはエラーです。

 簡潔に言うと、もし、引数が複合データタイプのプロパティを指定され、プロパティと対応する引数を持つfrom-parent関数の限定的な構成式は算出され、それぞれの複合プロパティのコンポーネントはコンポーネントと対応する引数を持つfrom-parentの値を持っている式として解釈されます。

 もし、混合データタイプのプロパティと対応する引数が他の方法で利用されるようなことがある場合にはエラーです。


 object from-nearest-specified-value(NCName?)

 from-nearest-specified-value関数は指定された引数と対応する名称のプロパティまたは、もし、式におけるプロパティが省略された場合は算出される算出値を戻します。

 戻される値は、fo名前空間内のXML結果ツリーにあるプロパティの指示上の式が算出される為のオブジェクト型の限りなく近い先祖オブジェクトの値です。

 もし、そのような先祖オブジェクトがない場合には、戻される値は初期値です。

 もし、引数が略記プロパティで記述され、プロパティと対応する引数を持つfrom-nearest-specified-value関数の限定的な構成式である場合には算出され、そのそれぞれは、プロパティと対応する引数を持つfrom-nearest-specified-valueの値を持っています。

 もし、略記に対応する引数が、他の方法で利用される場合があるとすればエラーとなります。

 簡潔に言うと、もしその引数が複合データタイプのプロパティを指定し、プロパティと対応する引数を持つfrom-nearest-specified-value関数の限定的な構成式である場合には、算出され、それぞれの混合プロパティのコンポーネントは、そのコンポーネントと対応する引数を持つfrom-nearest-specified-valueの値を持っているものとして解釈されます。

 もし、混合データタイプのプロパティに対応する引数が、他の方法で利用される場合があるとすればエラーとなります。


 object from-page-master-region(NCName?)

 from-page-master-region関数は指定された引数と対応する名称のプロパティまたは、もし、式におけるプロパティが省略された場合は算出される算出値を戻します。

 XSL 1.1におけるこの関数は、[ writing-mode ]プロパティと[ reference-orientation ]プロパティの値として限定的に利用されるかもしれません。

 追記すると、その関数の引数は省略されなければいけないという事で、もし、引数が提供される場合にはエラーとなります。

 指定されたプロパティの算出値は、[ viewport ]領域と[ reference ]領域のペアの領域を生成する為に利用されるオブジェクト型のレイアウト上のプロパティから取得されます。

 もし、この関数が[ fo:page-sequence ]の先祖であるオブジェクト型Fにおける式の中で利用される場合には、算出値はFによって戻される子孫領域として持つ参照領域の最も近い先祖領域を生成する為に利用された場合の領域仕様から取得されます。

 もし、引数が混合データタイプのプロパティを指定し、プロパティと対応する引数を持つ[ inherited-property-value ]関数による限定的な構成式である場合には、算出され、コンポーネントに対応する引数を持つ[ inherited-property-value ]の値を持っている複合プロパティのそれぞれのコンポーネントを持つ式であるものとして解釈されます。

 もし、混合データタイプのプロパティと対応する引数が他の方法で利用される事があるとすれば、それはエラーです。

※次の例を考えてみましょう。


 <fo:root>

  <fo:layout-master-set>
   <fo:simple-page-master master-name="all-pages">
    <fo:region-body region-name="xsl-region-body" margin="0.75in"
      writing-mode="tb-rl" />
    <fo:region-before region-name="xsl-region-before" extent="0.75in"/>
   </fo:simple-page-master>
   <fo:page-sequence-master master-name="default-sequence">
    <fo:repeatable-page-master-reference master-reference="all-pages"/>
   </fo:page-sequence-master>
  </fo:layout-master-set>

 <fo:page-sequence master-name="default-sequence">
  <fo:flow flow-name="xsl-region-body">
   <fo:block>
    [Content in a language which allows either
    horizontal or vertical formatting]
   </fo:block>
  </fo:flow>
  </fo:page-sequence>

 </fo:root>

 この例は、とてもシンプルなページレイアウト仕様を示しています。

 ここには、[ simple-page-master ]があり、[ all-pages ]と名付けられています。

 この[ page-master ]は、その上に[ xsl-region-body ]と[ xsl-region-before ]という2つの領域を持つものと定義されています。

 [ xsl-region-before ]と名付けられた領域は、この例のようなシンプルに省略されたコンテンツという意味の静的コンテンツを許容するページヘッダです。

 [ xsl-region-body ]と名付けられた領域は、単独の[ fo:sequence ]にある単独の[ fo:flow ]のコンテンツである事を示しています。

 この例の中では、[ xsl-region-body ]の定義は、[ writing-mode ]プロパティを持つというものです。

 書式としてのこのプロパティの算出値は、[ tb-rl ]であり、これは、[ writing-mode ]が領域を満たすために利用する効果を持たないので[ writing-mode ]値は、[ viewport ]領域と[ reference ]領域のペアの領域が、[ viewport ]領域と[ reference ]領域のペアの領域を生成する為に定義される[ xsl-region-body ]領域を利用する[ fo:page-sequence ]上にある算出値となる時に利用されます。

 [ writing-mode ]プロパティがない時には、[ fo:root ]または、その子である[ fo:page-sequence ]のいずれかが指定され、初期値は、参照領域の領域を満たすコンテンツにおける記述モードの為に利用されます。

 [ writing-mode ]の初期値は[ lr-tb ]です。

 もし、解読している行の


 <fo:page-sequence master-name="default-sequence">


 <fo:page-sequence master-name="default-sequence"
    writing-mode="from-page-master-region()">

となる場合には、領域定義上の[ writing-mode ]プロパティの算出値は、[ viewport ]領域と[ reference ]領域のペアの領域全てを例示する際に利用されます。

 このような[ xsl-region-body ]における領域定義上の仕様の[ xsl-region-body ]が利用され、既定の水平フォーマットの代わりに垂直フォーマットを受け取ります。

 簡潔に言うと、[ xsl-region-before ]において領域定義上の[ writing-mode ]の算出値が利用され、このケースでは、[ lr-tb ]という初期値が[ fo:root ]から継承され、[ xsl-region-before ]は水平に初期化されます。


 numeric proportional-column-width(numeric)

 proportional-column-width関数は、均衡する寸法のユニットNを戻し、Nは、この関数に与えられる引数です。

 列幅は、最初は均衡する寸法を無視します。

 [ table-width ]と列幅の合計が異なる場合は、均衡する幅が利用可能であるものとします。

 均衡する寸法のあるユニットは、均衡する幅が均衡する事実に基づいた合計によって配分される均衡する幅が利用可能なものとします。

 [ fo:table-column ]以外のオブジェクト型上にあるこの関数を利用するようなことがある場合にはエラーとなります。

 もし、固定テーブルレイアウトが利用されない場合にこの関数を利用する事もエラーとなります。


 object merge-property-values(NCName?)

 merge-property-values関数は、引数と対応する名前のプロパティの値または、式の為のプロパティを省略した場合に算出されます。

 戻された値は、親に当たる[ fo:multi-properties ]において最後の[ fo:multi-property-set ]上にある指定値であり、ユーザーエージェントに戻されます。

 もし、このような値がない場合には、親に当たる[ fo:multi-properties ]の算出値が戻されます。

 もし、引数が略記プロパティを指定し、プロパティに対応する引数を持つmerge-property-values関数の限定的な構成式は、算出され、略記拡張となるそれぞれのプロパティを持つ略記の表記として、またそのそれぞれは、プロパティに対応する引数を持つmerge-property-valuesの値を持っているものと解釈されます。

 もし、略記プロパティと対応する引数が他の方法で利用される事がある場合にはエラーとなります。

 簡潔に言うと、もし、引数が複合データタイプのプロパティを指定し、プロパティに対応する引数を持つmerge-property-values関数の限定的な構成式は算出され、それぞれの混合プロパティのコンポーネントはそのコンポーネントに対応する引数を持つmerge-property-valuesの値を持っているものと解釈されます。

 もし、混合データタイプのプロパティに対応する引数が、他の方法で利用される事がある場合にはエラーとなります。

※ユーザーエージェントにおける適切なテストは、[ active-state ]プロパティを指定する事です。

※[ fo:multi-properties ]の子である[ fo:wrapper ]以外のオブジェクト型にあるこの関数を利用するというのはエラーとなります。


 5.11 プロパティデータタイプ

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"

と記述した場合と同様です。

※<percentage>値が、[ auto ]として解釈されない時には、妥当な<length>であり、略式型に利用される場合があります。

 <keep>データタイプにおいて与えられる値から成る指定は、プロパティ名と対応する名称を持つ属性の為のコンポーネントにとって妥当です。


 keep-together="always"

は、以下の


 keep-together.within-line="always"
 keep-together.within-column="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 ]という[ block-progression-direction ]を示す


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

という指定の中で、関連プロパティに対応するコンポーネントの一つとして明示的な設定は効果を持ちません。

 以下は、プロパティ値内で利用される指定されるデータタイプのシンタックスを定義するものです。

<integer>

 示されるinteger値は、付加的に[ + ]や[ - ]を伴う数字の並びによって構成され、プロパティは、追加で値の制約を定義する場合があります。

※[ + ]表示は、CSS2互換の為に許容されます。

<number>

 示されるnumber値は、付加的に[ + ]や[ - ]を伴う数字の並びに続けて、付加的に[ . ]と数字の並びによって構成され、プロパティは追加で値の制約を定義する場合があります。

<length>

 示されるlength値は、単位条件を伴った実数で、プロパティは追加で値の制約を定義する場合があります。

<length-range>

 [ minimum ]、[ optimum ]、[ maximum ]といったコンポーネントを伴う複合データタイプは、それぞれ<length>を持っています。

 もし、[ minimum ]が[ optimum ]より大きければ、[ optimum ]が設定されていれば、[ optimum ]として扱われます。

 もし、[ maximum ]が[ optimum ]より小さければ、[ optimum ]が設定されていれば、[ optimum ]として扱われます。

 プロパティが付加的に値の制約を定義する場合があり、追加で値と例えば、[ auto ]や[<percentage>]といったセマンティックスを許容する場合があります。

<length-conditional>

 長さの条件を伴う複合データタイプである長さのコンポーネントは<length>です。

 その条件コンポーネントは、[ discard ]または[ retain ]のいずれかがあります。

 プロパティは付加的に値の制約を定義する場合があります。

<length-bp-ip-direction>

 [ block-progression-direction ]と[ inline-progression-direction ]というコンポーネントを伴う複合データタイプは、それぞれ<length>です。

 プロパティは付加的に値の制約を定義する場合があります。

<space>

 [ minimum ]、[ optimum ]、[ maximum ]、[ precedence ]と条件を伴う複合データタイプ。

 [ minimum ]、[ optimum ]、[ maximum ]コンポーネントは、<length>です。

 [ precedence ]コンポーネントは、(先行するプロパティの)影響を受けるか<integer>のいずれかです。

 条件コンポーネントは、[ discard ]または[ retain ]のいずれかがあります。

 もし、[ minimum ]が[ optimum ]より大きければ、[ optimum ]が設定されていれば、[ optimum ]として扱われます。

 もし、[ maximum ]が[ optimum ]より小さければ、[ optimum ]が設定されていれば、[ optimum ]として扱われます。

<keep>

 [ within-line ]、[ within-column ]、[ within-page ]を伴う複合データタイプ。

 それぞれのコンポーネントの値は、[ auto ]か[ always ]か<integer>のいずれかです。

<angle>

 付加的に[ + ]や[ - ]を伴う数字の並びにの直後に<number>、その直後に角度単位識別子を続けて記述します。

 角度単位識別子には、[ deg ](degrees:角度)、[ grad ](grads:メートルグラス)、[ rad ](radians:ラジアン・弧度)があります。

 指定値は、0度から360度の範囲で標準化されています。

 プロパティは付加的に値の制約を定義する場合があります。


ホーム前へ次へ