[5]
[CODE(CSS)@en[[[-moz-alt-content]]]]
([[名無しさん]] [sage])

[6]
[CITE@ja[プリント時にも役立っちゃうcontentプロパティさん|CSS HappyLife]] ([CODE[2007-05-11 20:06:40 +09:00]] 版) <http://css-happylife.com/log/css-template/000138.shtml>
([[名無しさん]] [WEAK[2007-05-11 11:08:15 +00:00]])

[7]
[CITE[HTML5 IRC logs: freenode / #whatwg / 20070624]] ([CODE[2007-06-25 08:45:09 +09:00]] 版) <http://krijnhoetmer.nl/irc-logs/whatwg/20070624#l-292>
([[名無しさん]] [WEAK[2007-06-24 23:47:02 +00:00]])

[8]
[CITE@en[Bug 130689 - CSS 3 replaced content breaks some pages]] ([CODE[2007-10-21 15:00:17 +09:00]] 版) <http://bugs.kde.org/show_bug.cgi?id=130689>
([[名無しさん]])

[9]
[CITE@en[Bug 130689 - CSS 3 replaced content breaks some pages]] ([CODE[2007-10-21 15:00:17 +09:00]] 版) <http://bugs.kde.org/show_bug.cgi?id=130689>
([[名無しさん]])

[10]
[[Firefox]] 2 [[構文解析]]
- 基本的に [[CSS 2.1]] 通りのようです。
- [CODE(CSS)@en[[[none]]]]、[CODE(CSS)@en[[[-moz-alt-content]]]]
には未対応です。
- [CODE(CSS)@en[[[attr]]()]] の[[引数]]に [CODE(CSS)[[[|]]]]
を用いることで、[[名前空間]]を使うことができます ([[CSS 3]])。

([[名無しさん]])

[11]
[[Opera]] 9 [[構文解析]]
- 基本的に [[CSS 2.1]] 通りのようです。
- [CODE(CSS)@en[[[none]]]] には未対応です。
- [[名前空間]]には未対応です。
- [CODE(CSS)@en[[[counter]]()]] や [CODE(CSS)@en[[[counters]]()]]
の最後の[[引数]] ([CODE(CSS)@en[<'[[list-style-type]]'>]])
は、 [CODE(CSS)@en[[[IDENT]]]] でさえあれば何でもいいようです。
([[名無しさん]])

[12]
[[Firefox]] 2 [[直列化]]
- 他の[[特性]]でなされるような[[正規化]]
([[escape]] 除去など) が基本的に適用されます。
-- [[引数]]の区切りは [CODE(CSS)@en[[[,]]]] の後に
[CODE(charname)@en[[[SPACE]]]] になります。
- [CODE(CSS)@en[[[counters]]()]] の第2[[引数]]
([CODE(CSS)@en[<[[string]]>]]) は、なぜか
[CODE(CSS)@en[[[IDENT]]]] であるかのように
(つまり[[引用符]]なしで) [[直列化]]されます。
- [CODE(CSS)@en[[[counter]]()]] や
[CODE(CSS)@en[[[counters]]()]] の最後の[[引数]]
([CODE(CSS)@en[<'[[list-style-type]]'>]]) が省略されていると、
[[既定値]] [CODE(CSS)@en[[[decimal]]]] が補われます。
- [CODE(CSS)@en[[[attr]]()]] 内に [CODE(CSS)[[[|]]]] があって、
その前が[[空文字列]]の場合、 [CODE(CSS)[[[|]]]] は除去されます。
- [CODE(CSS)@en[[[attr]]()]] 内に非[[空]]の[[名前空間接頭辞]]がある場合、
なぜか代わりに[[整数]] ([[0]] 以上) が出てきます。
どうやら、[[名前空間URI]] によって定まる、
内部的に[[名前空間]]情報を保持している[[配列]]の[[索引]]か何かのようです。
- なお、 [CODE(CSS)@en[[[counter]]()]] や
[CODE(CSS)@en[[[counters]]()]] の第1[[引数]]の[[大文字]]・[[小文字]]は[[正規化]]されません。

([[名無しさん]])

[13]
>>12
- [[HTML]] [[文書]]の場合、 [CODE(CSS)@en[[[attr]]()]] の中の[[局所名]]は
([[名前空間]]に関わらず) [[Unicode]] [[小文字]]に[[正規化]]されます。
- [[XML]] [[文書]]の場合、そのままです。

([[名無しさん]])

[14]
[[Opera]] 9 [[直列化]]
- 他の[[特性]]でなされるような[[正規化]]
(例えば [[escape]] の除去や[[相対参照]]の[[解決]])
が基本的になされます。
- [CODE(CSS)@en[[[attr]]()]] の[[引数]]の特別な[[正規化]]はないようです。
- [CODE(CSS)@en[[[counter]]()]] や [CODE(CSS)@en[[[counters]]()]]
はおかしいです。
== 最初と最後の[[空白]]や[[注釈]]は除去します。
== [[escape]] はすべて除去 (表す[[文字]]に置換) します。
== [CODE(CSS)[[["]]]] を [CODE(CSS)[[[\]][["]]]] に置換します。
== 残った文字列を [CODE(CSS)[[["]]]] で括ります。
-- というわけで、途中の[[空白]]や[[注釈]]は除去されません。
[CODE(CSS)@en[[[STRING]]]] の[[引用符]]は統一されません。
[CODE(CSS)[[[\]]]] も [[escape]] されません。
なぜか全体が [CODE(CSS)[[["]]]] で囲まれます。

([[名無しさん]])

[15]
[CODE(DOMm)@en[[[getComputedStyle]]]] 確認用:
<http://suika.fam.cx/gate/2007/cssom/viewer?c=p.test%2C%20p.test%3A%3Aafter%20%7B%0D%0A%20%20content%3A%20attr(aa)%20%22aaaaaa%22%20counter(aaa%5C%22a)%3B%0D%0A%7D;h=%3Cp%3E%3Cbutton%20type%3Dbutton%20onclick%3D%22%0D%0A%20%20var%20el%20%3D%20document.getElementsByTagName%20('p')%5B1%5D%3B%0D%0A%20%20d%20%3D%20getComputedStyle%20(el%2C%20null)%3B%0D%0A%20%20w%20(d.content)%3B%0D%0A%22%3E%3Ccode%3EgetComputedStyle%3C%2Fcode%3E%3C%2Fbutton%3E%20%3Cbutton%20type%3Dbutton%20onclick%3D%22%0D%0A%20%20var%20el%20%3D%20document.getElementsByTagName%20('p')%5B1%5D%3B%0D%0A%20%20d%20%3D%20getComputedStyle%20(el%2C%20'after')%3B%0D%0A%20%20w%20(d.content)%3B%0D%0A%22%3E%3Ccode%3EgetComputedStyle%3C%2Fcode%3E%20(%3Ccode%3E%3A%3Aafter%3C%2Fcode%3E)%3C%2Fbutton%3E%3C%2Fp%3E%0D%0A%3Cp%20class%3Dtest%3Exxxxxxxxxxxxxxx;p=n;x=style-element;i=html-div>
([[名無しさん]])

[16]
[[Firefox]] 2 では [CODE(DOMm)@en[[[getComputedStyle]]]]
上の値は常に[[空文字列]]のようです。
([[名無しさん]])

[17]
[[Opera]] 9 では、明示的に指定されなかったり
[CODE(CSS)@en[[[normal]]]] が指定されたりした[[要素]]や[[擬似要素]]では
[CODE(CSS)@en[[[none]]]]
(この値を直接指定することはできませんが・・・)、
それ以外は[[指定値]]になるようです。

[[URI]] は[[構文解析]]時に既に[[絶対URI]]に[[解決]]されています。

[CODE(CSS)@en[[[attr]]()]] は [[CSS 2.1]] の記述とは異なり、
そのまま残ります。

;; [[CSS 2.1]] とは異なり、[[擬似要素]]でなくても
[CODE(CSS)@en[[[normal]]]] は [CODE(CSS)@en[[[none]]]]
に置き換えられます。また、 [[CSS 3]] に従い、
普通の[[要素]]でも [CODE(CSS)@en[[[normal]]]]
以外の値がそのまま残ります。

([[名無しさん]])

[18]
[CODE(CSS)@en[[[counter]]()]] や
[CODE(CSS)@en[[[attr]]()]] の[[引数]]に
[CODE(CSS)@en[[[inherit]]]] があるときにおかしなことにならないものかと一応調べてみましたが、
[[Firefox]] 2、[[Opera]] 9 のどちらでも、特に変わったことはない (仕様通りの) ようです。

;; <http://suika.fam.cx/gate/2007/cssom/viewer?c=p%20%7B%0A%20%20content%3A%20counter(inherit)%3B%0A%7D;h=%3Cp%3E%3Cbutton%20type%3Dbutton%20onclick%3D%22%0A%20%20var%20el%20%3D%20document.getElementsByTagName%20('p')%5B1%5D%3B%0A%20%20d%20%3D%20getComputedStyle%20(el%2C%20null)%3B%0A%20%20w%20(d.content)%3B%0A%22%3E%3Ccode%3EgetComputedStyle%3C%2Fcode%3E%3C%2Fbutton%3E%20%3Cbutton%20type%3Dbutton%20onclick%3D%22%0A%20%20var%20el%20%3D%20document.getElementsByTagName%20('p')%5B1%5D%3B%0A%20%20d%20%3D%20getComputedStyle%20(el%2C%20'after')%3B%0A%20%20w%20(d.content)%3B%0A%22%3E%3Ccode%3EgetComputedStyle%3C%2Fcode%3E%20(%3Ccode%3E%3A%3Aafter%3C%2Fcode%3E)%3C%2Fbutton%3E%3C%2Fp%3E%0A%3Cp%20class%3Dtest%3Exxxxxxxxxxxxxxx;p=n;x=style-element;i=html-div>
([[名無しさん]])



[20] [CITE[User Interface Enhancements]]
( ([TIME[1999-09-16 05:07:02 +09:00]] 版))
<http://www.w3.org/TR/1999/WD-css3-userint-19990916#propdef-content>

[21] [CITE@en[User Interface for CSS3]]
( ([TIME[2000-06-23 03:09:21 +09:00]] 版))
<http://www.w3.org/TR/2000/WD-css3-userint-20000216#content>

[22] [CITE@en[CSS3 module: Basic User Interface]]
( ([[Tantek Çelik]] 著, [TIME[2002-08-03 07:13:43 +09:00]] 版))
<http://www.w3.org/TR/2002/WD-css3-ui-20020802/#content>

[23] [CITE@en[CSS3 Basic User Interface Module]]
( ([[Tantek Çelik]] 著, [TIME[2004-05-12 02:17:47 +09:00]] 版))
<http://www.w3.org/TR/2004/CR-css3-ui-20040511/#content0>

[24] [CITE@en[CSS Basic User Interface Module Level 3 (CSS3 UI)]]
( ([[Tantek Çelik]] 著, [TIME[2011-09-29 17:32:08 +09:00]] 版))
<http://dev.w3.org/csswg/css3-ui/#content-property-addition>

[25] [CITE@en[CSS3 Generated and Replaced Content Module]]
( ([TIME[2003-05-15 21:54:58 +09:00]] 版))
<http://www.w3.org/TR/2003/WD-css3-content-20030514/#content-insert>

[26] [CITE@en[CSS Generated Content Module Level 3]]
( ([TIME[2011-04-21 02:28:30 +09:00]] 版))
<http://dev.w3.org/csswg/css3-content/#inserting-and-replacing-content-with-the>

[27] [[Chrome]] でも [[Firefox]] でも、 [CODE(CSS)@en[[[counter()]]]]、 [CODE(CSS)@en[[[counters()]]]]
のいずれも [CODE(CSS)@en[[[list-style-type]]]] つきの形に正規化されます。 [TIME[2013-09-08T11:56:26.700Z]]

[28] [[Firefox]] ではもとの関数名が保持されますが、 [[Chrome]] では [CODE(CSS)@en[[[counters()]]]]
の第2引数が[[空文字列]]なら省略して [CODE(CSS)@en[[[counter()]]]] に正規化されます。 [TIME[2013-09-08T11:57:35.700Z]]

;; [32] >>28 の [[Chrome]] の動作は意味が変わってますが・・・。

[29] [[Chrome]] は正しく直列化できないことがあります。複数の値が指定されている時、[[空白]]だけでなく
[CODE(CSS)@en[,]] を含めてしまいます。また [CODE(CSS)@en[[[counters()]]]]
の第2引数を [[<string>]] ではなく [[<ident>]] にしてしまいます。どちらも再構文解析できなくなります。 [TIME[2013-09-08T11:58:38.700Z]]

[30] [[Chrome]] は [CODE(CSS)@en[[[attr()]]]] の名前空間接頭辞に対応していません。 [[null名前空間]]を表す
[CODE(CSS)[[[|]]]] がついているものも[[非妥当]]になります。 [TIME[2013-09-08T11:59:20.500Z]]

[31] [[Firefox]] は [CODE(CSS)@en[[[attr()]]]] の名前空間接頭辞に対応しているようで、 [[null名前空間]]を表す
[CODE(CSS)[[[|]]]] は省略した形に正規化し、それ以外は [CODE(CSS)[attr(\32 5\|a)]]
のようなおかしな形にします。 [TIME[2013-09-08T12:00:37.00Z]]