1. 序論
この節は参考である。 ◎ This section is non-normative.
この仕様は、~CSSにおいて名前空間を利用するための構文を定義する。 この仕様は、`既定の名前空間$を宣言するための, および 名前空間を`名前空間 接頭辞$に束縛するための、 `namespace$at 規則を定義する。 また、それらの接頭辞を利用して,名前空間~修飾付きの名前を表現するための構文も,定義する。 この仕様は、その種の名前が どのような場所で妥当になるかや,それらが意味するものを定義するものではない — それらは、その種の名前が用いられる文脈に依存するものであり,この仕様が定義する構文を参照する~host言語( Selectors `SELECT$r など)により定義される。 ◎ This CSS Namespaces module defines syntax for using namespaces in CSS. It defines the @namespace rule for declaring a default namespace and for binding namespaces to namespace prefixes. It also defines a syntax for using those prefixes to represent namespace-qualified names. It does not define where such names are valid or what they mean: that depends on their context and is defined by a host language, such as Selectors ([SELECT]), that references the syntax defined in the CSS Namespaces module.
この~moduleを~supportしない~CSS~clientは、(それが ~CSSの前方-互換な構文解析~規則に適正に適合しているなら,)すべての[ `namespace$at 規則/ `~CSS有修飾~名$を利用する~style規則 ]を`無視-$することになることに注意。 ~CSSにおける[ `名前空間 接頭辞$の区切り法 ]の構文は、その種の~CSS~clientが — そのような~style規則を何かに不正に合致させずに — `無視-$することになるよう,慎重に選ばれている。 ◎ Note that a CSS client that does not support this module will (if it properly conforms to CSS’s forward-compatible parsing rules) ignore all @namespace rules, as well as all style rules that make use of namespace qualified names. The syntax of delimiting namespace prefixes in CSS was deliberately chosen so that these CSS clients would ignore the style rules rather than possibly match them incorrectly.
1.1. 各種用語
この仕様にて導入される用語とは別に、この仕様は, Namespaces in XML 1.0 `XML-NAMES$r に定義される用語も利用する。 しかしながら,ここで定義される構文は、[ ~XML要素/~XML属性 ]の名前を表現するものに制約されず,~host言語により定義される他の種類の名前空間も表現し得る。 ◎ Besides terms introduced by this specification, CSS Namespaces uses the terminology defined in Namespaces in XML 1.0. [XML-NAMES] However, the syntax defined here is not restricted to representing XML element and attribute names and may represent other kinds of namespaces as defined by the host language.
この仕様 — CSS Namespaces — においては、空~文字列による名前空間~名は `~null名前空間@ と見なされ,名前空間がないことを表現する。 ◎ In CSS Namespaces a namespace name consisting of the empty string is taken to represent the null namespace or lack of a namespace.
【 この訳では、名前が どの名前空間にも属さないことを,一律に ~null名前空間に属する と記す。 ~~実際の所,~null名前空間は、単に “空~文字列で表現される名前空間” と定義した方が(これは、形上では正当な名前空間ではないが),仕様の記述は単純になる様に見受けられる。 】
次の宣言が与えられた下では: ◎ For example, given the namespace declarations:
@namespace empty ""; @namespace "";
次の`型~選択子$は、どれも等価になる:
- `elem^css
- `|elem^css
- `empty|elem^css
【 1 個目の宣言は、名前空間 接頭辞 `empty^l を~null名前空間( "" )に結付ける。 2 個目の宣言は、既定の名前空間を~null名前空間にする。 】【 縦棒( `|^l, `007C^U )の無い名前 `elem^css は、暗黙的に既定の名前空間に属するが,それは 2 個目の宣言により~null名前空間にされている。 縦棒のみ前置された名前 `|elem^css は、明示的に既定の名前空間(~null)に属する。 名前 `empty|elem^css は、接頭辞 `empty^css が指示する名前空間に属するが,それは 1 個目の宣言により~null名前空間にされている。 】
2. 名前空間の宣言-法: `namespace^at 規則
`namespace@at `~at-規則$は、`名前空間 接頭辞$を宣言し,それを その宣言に与えられた名前空間~名(名前空間を表現する文字列)に結付ける。 この`名前空間 接頭辞$は、名前空間~修飾付きの名前 — 以下に定義する`~CSS有修飾~名$など — に利用できるようになる。 ◎ The @namespace at-rule declares a namespace prefix and associates it with a given namespace name (a string). This namespace prefix can then be used in namespace-qualified names such as the CSS qualified names defined below.
@namespace "http://www.w3.org/1999/xhtml"; @namespace svg "http://www.w3.org/2000/svg";
【接頭辞が省略された】 1 個目の規則は、`既定の名前空間$として `http://www.w3.org/1999/xhtml^s を宣言する。 この名前空間は,明示的な名前空間~成分がない名前に適用されることになる。 ◎ The first rule declares a default namespace http://www.w3.org/1999/xhtml to be applied to names that have no explicit namespace component.
2 個目の規則は、`名前空間 接頭辞$として `svg^s を宣言し、`名前空間 接頭辞$に `svg^s を利用している所には,名前空間 `http://www.w3.org/2000/svg^s をあてがう。 ◎ The second rule declares a namespace prefix svg that is used to apply the namespace http://www.w3.org/2000/svg where the svg namespace prefix is used.
CSS Namespaces においては、接頭辞は — `XML-NAMES$r と同様に — 単なる構文-構成子に過ぎず,有意になるのは `展開d名@ (局所~名と名前空間~名の組)である†。 したがって,~CSS~stylesheetにおいて[[ 利用される実際の接頭辞 ]/[ 所与の名前に `既定の名前空間$があてがわれるかどうか ]]は、~markupにおいて[[ 利用される名前空間 接頭辞 ]/[ 所与の名前に 既定の名前空間があてがわれるかどうか ]]とは,独立になる。 ◎ In CSS Namespaces, as in Namespaces in XML 1.0, the prefix is merely a syntactic construct; it is the expanded name (the tuple of local name and namespace name) that is significant. Thus the actual prefixes used in a CSS style sheet, and whether they are defaulted or not, are independent of the namespace prefixes used in the markup and whether these are defaulted or not.
【† すなわち,接頭辞は、それを宣言する`名前空間 宣言$に与えられた名前空間を参照するための,別名として機能し、`展開d名$を介して,~stylesheetを成す構成子(選択子など)と文書~markupを成す構成子(要素~名など)が関連付けられる。 文書~markupを成す構成子の`展開d名$は、その文書~言語により(あるいは `XML-NAMES$r の利用を通して)定義される。 】
例えば次の~XML文書: ◎ For example, given the following XML document:
<qml:elem xmlns:qml="http://example.com/q-markup"></qml:elem>
が与えられていて, ~CSS~fileの冒頭に次の `namespace$at 宣言があるとする: ◎ and the following @namespace declarations at the beginning of a CSS file:
@namespace Q "http://example.com/q-markup"; @namespace lq "http://example.com/q-markup";
その~CSS~fileの中の選択子 `Q|elem^css , `lq|elem^css のいずれも,要素 `qml:elem^e に合致することになる。 ◎ The selectors Q|elem and lq|elem in that CSS file would both match the element <qml:elem>.
しかしながら、選択子 `qml|elem^css は無効になる — ~CSSにおける名前空間は、文書~言語により宣言されたものではなく,~CSSの中で宣言された接頭辞のみを認識するので。 ◎ (The selector qml|elem would be invalid, because CSS namespaces only recognize prefixes declared in CSS, not those declared by the document language.)
2.1. 構文
`namespace$at 規則~用の構文は: ◎ The syntax for the @namespace rule is:
@namespace `namespace-prefix$t? [ `string$t | `url$t ] ; `namespace-prefix@t = `ident$t
`namespace$at 規則は、~stylesheet内において,どの[ `charset$at, `import$at ]規則よりも後続し,どの[ 無視されない他の~at-規則や~style規則 ]よりも先行していなければナラナイ†。 これは、~CSS構文【`CSS 2.1 の文法$】においては,生成規則 `stylesheet^P 内の `[ import [S|CDO|CDC]* ]*^P の直後に `[ namespace [S|CDO|CDC]* ]*^P を追加することを~~意味する。 ◎ Any @namespace rules must follow all @charset and @import rules and precede all other non-ignored at-rules and style rules in a style sheet. For CSS syntax this adds [ namespace [SCDOCDC]* ]* immediately after [ import [SCDOCDC]* ]* in the stylesheet grammar.
構文上は無効な `namespace$at 規則(不正形であったり, 誤った場所に置かれているなど)は、`無視-$するモノトスル†。 無効な `namespace$at 規則を包含している ~CSS~stylesheet は、 妥当な~stylesheet†† ではない。 ◎ A syntactically invalid @namespace rule (whether malformed or misplaced) must be ignored. A CSS style sheet containing an invalid @namespace rule is not a valid style sheet.
【† 妥当な `namespace$at に `import$at が後続している場合、前者は有効のままにされた上で,後者のみが無視されることになるであろう — 構文解析に際しては、先頭から走査され,妥当でない構文に遭遇した所でそれを破棄するのが自然なふるまいと考えられるので( `import$at の方が誤った場所に置かれたものと解釈される)。 同じ論法により、妥当でない `namespace$at に後続する `import$at は,(他の部分がすべて妥当であれば)有効になるであろう。 】【†† ~stylesheetが妥当でないからと言って、全体が無効にされるわけではない — 通例的には、妥当でない部分が`無視-$され,残りの部分は機能することになる。 】
文法記号 `url$t【!`URI^P】 から構文解析される~URI文字列は、~literalとして扱うモノトスル — `string$t【!`STRING^P】 同様に,~URIに特有な正規化は適用されない。 ◎ A URI string parsed from the URI syntax must be treated as a literal string: as with the STRING syntax, no URI-specific normalization is applied.
空~文字列や無効な~URIを表現している文字列も含め, `namespace$at 宣言における文字列は、どのようなものでも,名前空間~名として妥当である。 ◎ All strings—including the empty string and strings representing invalid URIs—are valid namespace names in @namespace declarations.
2.2. 視野
`namespace$at の視野は、それが現れる~stylesheet内に限られる。 そこで宣言された`名前空間 接頭辞$ 【および`既定の名前空間$】 は、他の~stylesheet内では — [ 当の~stylesheetを`取込む$/当の~stylesheetが`取込む$/文書に適用されている ]他のどの~stylesheet内でも — 宣言されていないものとされる。 ◎ The namespace prefix is declared only within the style sheet in which its @namespace rule appears. It is not declared in any style sheets importing or imported by that style sheet, nor in any other style sheets applying to the document.
【 `style^e 要素による埋込d~stylesheetの中の `namespace$at の視野も,その要素の中に限られるであろう。 】【 この段落は、`既定の名前空間$についても同様と解釈した上で,原文の記述をより見通しの良い形に変えて和訳している)。 】
2.3. 接頭辞の宣言-法
`名前空間 宣言$により宣言された `名前空間 接頭辞@ は、 その宣言により結付けられた名前空間を表現する。 その接頭辞を利用すれば、 名前空間~修飾付きの名前に対する名前空間を指示できるようになる。 `名前空間 接頭辞$の文字大小は、 【!CSS counter 名と同様に】 区別される。 ◎ A namespace prefix, once declared, represents the namespace for which it was declared and can be used to indicate the namespace of a namespace-qualified name. Namespace prefixes are, like CSS counter names, case-sensitive.
`名前空間 宣言$において,`名前空間 接頭辞$が省略された場合、その名前空間は, `既定の名前空間@ になる。 既定の名前空間は、明示的な`名前空間 接頭辞$を伴わない名前に適用される — `名前空間 接頭辞$を使役する~moduleは、どの文脈の下で `既定の名前空間$を適用してよいか,を定義しなければナラナイ。 例えば, Selectors 仕様 `SELECT$r においては、( `XML-NAMES$r に倣い,)`既定の名前空間$は,`型~選択子$には適用されるが, `属性~選択子$には適用されないものとされている。 `既定の名前空間$用の既定の値はない — 無修飾~名に対し`既定の名前空間$をアテガう~moduleは、[ それらの無修飾~名が,`既定の名前空間$が宣言されていない下で どう解釈されるか ]を定義しなければナラナイ。 ◎ If in the namespace declaration the namespace prefix is omitted, then the namespace so declared is the default namespace. The default namespace may apply to names that have no explicit namespace prefix: modules that employ namespace prefixes must define in which contexts the default namespace applies. For example, following [XML-NAMES], in Selectors [SELECT] the default namespace applies to type selectors—but it does not apply to attribute selectors. There is no default value for the default namespace: modules that assign unqualified names to the default namespace must define how those unqualified names are to be interpreted when no default namespace is declared.
注記: `型~選択子$と`既定の名前空間$を併用した場合、 `既定の名前空間$を~supportする~UAと~supportしない~UAとで, 選択子の解釈が異なり得ることになる。 ◎ Note: Note that using default namespaces in conjunction with type selectors can cause UAs that support default namespaces and UAs that don’t support default namespaces to interpret selectors differently.
[[ 同じ`名前空間 接頭辞$ ]/`既定の名前空間$ ]が 複数回に渡って宣言された場合、最後の宣言が利用されるモノトスル。 そのような複数回の宣言は,不適合とされる。 ◎ If a namespace prefix or default namespace is declared more than once only the last declaration shall be used. Declaring a namespace prefix or default namespace more than once is nonconforming.
3. ~CSS有修飾~名
`~CSS有修飾~名@ とは、 明示的に,ある名前空間に結付けられた(すなわち,その名前空間に属するようにされた)名前である。 ~CSS構文において有修飾~名を形成するためには、局所~名の前に,[ 当の`視野$にて宣言されている`名前空間 接頭辞$(要素や属性の名前など) ]を “縦棒” `007C^U ( `|^l )で分離して前置する。 宣言-済みな接頭辞は、 その宣言により接頭辞に結付けられた名前空間を表現し,その局所~名が属する名前空間を指示する。 有修飾~名の接頭辞は,省略されてもヨイ 【すなわち, “縦棒” のみを前置する】 — これは,その名前が`~null名前空間$に属することを指示する。 すなわち、その`展開d名$の名前空間~名を成す部分には,値がない。 文脈によっては(~host言語にてそう定義されていれば)、 ~wildcard接頭辞として,“~asterisk” `002A^U ( `*^l )の利用が許容されることもある — それは、 当の名前が,`~null名前空間$も含め どの名前空間に属するものでもよいことを指示する。 ◎ A CSS qualified name is a name explicitly located within (associated with) a namespace. To form a qualified name in CSS syntax, a namespace prefix that has been declared within scope is prepended to a local name (such as an element or attribute name), separated by a "vertical bar" (|, U+007C). The prefix, representing the namespace for which it has been declared, indicates the namespace of the local name. The prefix of a qualified name may be omitted to indicate that the name belongs to no namespace, i.e. that the namespace name part of the expanded name has no value. Some contexts (as defined by the host language) may allow the use of an asterisk (*, U+002A) as a wildcard prefix to indicate a name in any namespace, including no namespace.
次の`名前空間 宣言$が与えられたとするとき: ◎ Given the namespace declarations:
@namespace toto "http://toto.example.org"; @namespace "http://example.com/foo";
`既定の名前空間$を適用し得る文脈の下では: ◎ In a context where the default namespace applies
- `toto|A^css は、名前空間 `http://toto.example.org^s に属する,名前 `A^s を表現する ◎ represents the name A in the http://toto.example.org namespace.
- `|B^css は、`~null名前空間$に属する,名前 `B^s を表現する。 ◎ represents the name B that belongs to no namespace.
- `*|C^css は、`~null名前空間$も含めた 任意の名前空間に属する,名前 `C^s を表現する。 ◎ represents the name C in any namespace, including no namespace.
- `D^css は、名前空間 `http://example.com/foo^s に属する,名前 `D^s を表現する。 ◎ represents the name D in the http://example.com/foo namespace.
`~CSS有修飾~名$の構文は、~wildcardによる接頭辞を[ 許容するもの( `wqname$t )/ 許容しないもの( `qname$t ) ]両者について,以下で与えられる。 `wqname-prefix$t / `qname-prefix$t が,局所~名の前の部分(接頭辞の部分)を成す構文になる( 【原文の構文では `CSS 2.1 の文法$ `CSS21$r による記法が利用されているが、この訳では, CSS 3 以降による記法に置換している。】 ~tokenどうしの合間には,暗黙的に~commentが許容される(が,空白は許容されない)ことに注意): ◎ The syntax for the portion of a CSS qualified name before the local name is given below, both for qualified names that allow wildcard prefixes (wqname) and for qualified names that disallow wildcard prefixes (qname). (The syntax uses notation from the Grammar appendix of CSS 2.1. [CSS21] Note this means that comments, but not white space, are implicitly allowed between tokens.):
`qname-prefix@t = `namespace-prefix$t? '|' `wqname-prefix@t = [ `namespace-prefix$t? | '*' ] '|' `qname@t = `qname-prefix$t? `ident$t `wqname@t = `wqname-prefix$t? `ident$t `wqwname@t = `wqname-prefix$t? [ `ident$t | '*' ]◎ qname_prefix : namespace_prefix? '|' ; wqname_prefix : [ namespace_prefix? | '*' ] '|' ; qname : qname_prefix? ident ; wqname : wqname_prefix? ident ; wqwname : wqname_prefix? [ ident | '*' ] ;
`~CSS有修飾~名$は、他の~moduleに述べられている様に,(例えば)選択子や~prop値の中で利用できる。 それらの~moduleは、未宣言の`名前空間 接頭辞$の取扱いを定義しなければナラナイ。 その種の取扱いは、選択子や宣言 等が無効と見なされることになるような 未宣言の`名前空間 接頭辞$を,構文解析-~errorとして扱うべきであり、~CSSにおいては`無視-$されるべきである。 ◎ CSS qualified names can be used in (for example) selectors and property values as described in other modules. Those modules must define handling of namespace prefixes that have not been properly declared. Such handling should treat undeclared namespace prefixes as a parsing error that will cause the selector or declaration (etc.) to be considered invalid and, in CSS, ignored.
例えば, Selectors ~module `SELECT$r は、未宣言の`名前空間 接頭辞$を伴う`型~選択子$を`無効な選択子$になるものと定義する。 また,~CSS `CSS21$r は、`無効な選択子$が伴われた~style規則に対しては,まるごと`無視-$することを要求している。 ◎ For example, the Selectors module [SELECT] defines a type selector with an undeclared namespace prefix to be an invalid selector, and CSS [CSS21] requires style rules with an invalid selector to be completely ignored.
変更点
2011年 9月 29日 勧告 からの変更点は: ◎ Changes made since the 29 September 2011 Recommendation:
- 他の仕様から引用し易くするため、 `qname$t, `wqname$t, `wqwname$t 生成規則の定義を追加した。 ◎ Added predefined qname, wqname, and wqwname productions, to make those constructs easier for other specs to use.
謝辞
この草案は、[ `Chris Lilley, Peter Linss^en 両氏による ~CSSによる名前空間~support用の早期の草案 ], [ `Håkon Lie, Bert Bos^en 両氏による ~CSSと~XMLについての早期の(未公表な)草案 ], [ `Bert Bos, Steven Pemberton^en 両氏による~XML名前空間と~CSS ]から多くを借りている。 ~CSS~WGの現在までの多くの~memberも,この文書に貢献されている。 www-style@w3.org や他の場所での議論からも,この仕様に向けて案が供与されている。 `L David Baron, Karl Dubost, Ian Hickson, Björn Höhrmann, Lachlan Hunt^en 各氏からの~commentに特別な謝意を。 ◎ This draft borrows heavily from earlier drafts on CSS namespace support by Chris Lilley and by Peter Linss and early (unpublished) drafts on CSS and XML by Håkon Lie and Bert Bos, and XML Namespaces and CSS by Bert Bos and Steven Pemberton. Many current and former members of the CSS Working Group have contributed to this document. Discussions on www-style@w3.org and in other places have also contributed ideas to this specification. Special thanks goes to L. David Baron, Karl Dubost, Ian Hickson, Björn Höhrmann, and Lachlan Hunt for their comments.
~privacyの考慮点
この仕様に対し報告された,新たな~privacyの考慮点は、無い。 ◎ No new privacy considerations have been reported on this specification.
~securityの考慮点
この仕様に対し報告された,新たな~privacyの考慮点は、無い。 ◎ No new security considerations have been reported on this specification.