[27] 属性値表記は、SGML の構文において属性値を記述する方法の1つです。一般的な具象構文の元では引用符で括られた文字列であって、 中では文字参照が認知されます。
- 属性値表記 (attribute value literal)
- 参照の置換及び機能文字を無視する又は変換することによって属性値として解釈された区切られた文字列。 (JIS X 4151‐1992 3. (145))
[2]
解釈された
ではなく解釈される
のような気が激しくしていますが。。。
[3]
SGML の生成規則的には、属性値表記
は属性値
の一種です。
意味的には、属性値の表現方法の一種です。
(XML では唯一の属性値の表現方法です。)
[4]
×属性の値で二重引用符の中では
>
は >
と逃避しなければならない
間違いです。属性値表記
(二重引用符やアポストロフィで囲まれた中)
でも GREATER-THAN SIGN
をそのまま書いて問題ありません。
正しい例:
<img title="<img> の表示例">
正しい例:
<img title="<img> の表示例">
[28] △属性の値で二重引用符の中では
<
は <
と逃避しなければならない
XML ではその通りですが、 SGML では一般に問題ありません。
<img title="<img> の表示例" />
正しい例:
<img title="<img> の表示例" />
[5] 属性定義並び宣言に含まれる属性値表記中で一般実体参照を使う時は、その一般実体がその属性定義並び宣言より前で宣言されていなければなりません (実体が宣言されていることという整形式制約 <IW:XML1:"#wf-entdeclared"> または妥当性制約 <IW:XML1:"#vc-entdeclared">)。
[6] では、
に含まれる一般実体参照についてはどうなるのでしょう?
XMLの仕様書を読んだ限りではいずれの場合も制約の対象になりそうです。 (名無しさん)
[7] Firefox 1.5とOpera 9はいずれも検出しますが、 WinIE 6は3つ目の誤りを検出しないようです。 (名無しさん)
[8] 例1:
<!DOCTYPE a [ <!ATTLIST a b CDATA "&e;"> <!ENTITY % q SYSTEM "q"> %q; ]> <a/>
例2:
<!DOCTYPE a [ <!ENTITY % q SYSTEM "q"> %q; <!ATTLIST a b CDATA "&e;"> ]> <a/>
(名無しさん)
[9]
ただし、例1も例2も引数実体q
は一般実体e
に関する実体宣言を含まないものとする。
(名無しさん)
[10] なお、 >>8 のいずれも、それが整形式であったとしても、 実体が宣言されていることという妥当性制約に違反しているので誤りです。 属性値表記内に宣言を読んでいない実体への参照があるのは誤りという規定 <IW:XML1:"#AVNormalize"> もあります。 従って、 >>8 の2例とも、どう処理されるのかは実装依存です。
[25]
葉っぱ日記 - XSSの出題 回答編 (2007-03-15 03:50:33 +09:00
版) <http://d.hatena.ne.jp/hasegawayosuke/20070313/p1>
(名無しさん 2007-03-15 13:02:25 +00:00)
[26]
葉っぱ日記 - で、ここからが本題 (2007-03-15 03:50:33 +09:00
版) <http://d.hatena.ne.jp/hasegawayosuke/20070313/p2>
(名無しさん 2007-03-15 13:06:33 +00:00)