<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性値表記<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">attribute value literal</rt></rubyb></dfn>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor>
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文</anchor>において<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性値</anchor>を記述する方法の1つです。一般的な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">具象構文</anchor>の元では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引用符</anchor>で括られた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>であって、
中では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字参照</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認知</anchor>されます。</p><section><h1>定義</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> </p><blockquote><dl><dt>属性値表記 (attribute value literal)</dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照</anchor>の置換及び<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機能文字</anchor>を無視する又は変換することによって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性値</anchor>として解釈された区切られた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JIS X 4151</anchor>‐1992 3. (145))</dd></dl></blockquote><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end>
<q>解釈された</q>ではなく<q>解釈される</q>のような気が激しくしていますが。。。</p></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> の生成規則的には、<code class="ABNF">属性値表記</code>は<code class="ABNF"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性値</anchor></code>の一種です。
意味的には、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性値</anchor>の表現方法の一種です。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> では唯一の属性値の表現方法です。)</p><p>生成規則<code class="ABNF">属性値</code>は、<code class="ABNF"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性値指定</anchor></code>の一部として、または<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性定義</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">既定値</anchor>の指定方法の一種として使われます。</p></section><section><h1>不思議解釈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end>
<em>×</em><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">値</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">二重引用符</anchor>の中では
<code class="char">&gt;</code> は <code class="XML" xml:lang="en">&amp;<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">gt</anchor>;</code> と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">逃避</anchor>しなければならない</p><p>間違いです。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性値表記</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">二重引用符</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アポストロフィ</anchor>で囲まれた中)
でも <code class="charname" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GREATER-THAN SIGN</anchor></code> をそのまま書いて問題ありません。</p><p>正しい例:<pre class="HTML example code">&lt;img title=&quot;&amp;lt;img&gt; の表示例&quot;&gt;</pre></p><p>正しい例:<pre class="HTML example code">&lt;img title=&quot;&amp;lt;img&amp;gt; の表示例&quot;&gt;</pre></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> <em>△</em><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">値</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">二重引用符</anchor>の中では
<code class="char">&lt;</code> は <code class="SGML" xml:lang="en">&amp;<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lt</anchor>;</code> と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">逃避</anchor>しなければならない</p><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> ではその通りですが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> では一般に問題ありません。</p><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> では正しいが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> では正しくない例:<pre class="HTML example code">&lt;img title=&quot;&lt;img&amp;gt; の表示例&quot; /&gt;</pre></p><p>正しい例:<pre class="HTML example code">&lt;img title=&quot;&amp;lt;img&amp;gt; の表示例&quot; /&gt;</pre></p></section><section><h1>文字参照の利用</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性定義並び宣言</anchor>に含まれる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性値表記</anchor>中で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一般実体参照</anchor>を使う時は、その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一般実体</anchor>がその<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性定義並び宣言</anchor><em>より前</em>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">宣言</anchor>されていなければなりません
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">宣言</anchor>されていることという<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">整形式制約</anchor>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="XML1:&quot;#wf-entdeclared&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:XML1:&quot;#wf-entdeclared&quot;</anchor-external> または<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">妥当性制約</anchor>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="XML1:&quot;#vc-entdeclared&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:XML1:&quot;#vc-entdeclared&quot;</anchor-external>)。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end>
では、<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書要素</anchor>以下に出現しない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素型</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">既定値</anchor></li><li>すべての<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">指定</anchor>されていて使用されない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">既定値</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性定義</anchor>が重複していて使用されない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">既定値</anchor></li></ol></p><p>に含まれる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一般実体参照</anchor>についてはどうなるのでしょう?</p><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor>の仕様書を読んだ限りではいずれの場合も制約の対象になりそうです。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox 1.5</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opera 9</anchor>はいずれも検出しますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WinIE 6</anchor>は3つ目の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">誤り</anchor>を検出しないようです。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end>
例1:<pre class="XML example code">&lt;!DOCTYPE a [
  &lt;!ATTLIST a b CDATA &quot;&amp;e;&quot;&gt;
  &lt;!ENTITY % q SYSTEM &quot;q&quot;&gt;
  %q;
]&gt;
&lt;a/&gt;</pre></p><p>例2:<pre class="XML example code">&lt;!DOCTYPE a [
  &lt;!ENTITY % q SYSTEM &quot;q&quot;&gt;
  %q;
  &lt;!ATTLIST a b CDATA &quot;&amp;e;&quot;&gt;
]&gt;
&lt;a/&gt;</pre></p><ol><li>例1は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">整形式</anchor>か? </li><li>例2は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">整形式</anchor>か?</li></ol><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end>
ただし、例1も例2も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数実体</anchor><code class="XML" xml:lang="en">q</code>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一般実体</anchor><code class="XML" xml:lang="en">e</code>に関する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体宣言</anchor>を含まないものとする。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end>
なお、 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal> のいずれも、それが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">整形式</anchor>であったとしても、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">宣言</anchor>されていることという<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">妥当性制約</anchor>に違反しているので<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">誤り</anchor>です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性値表記</anchor>内に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">宣言</anchor>を読んでいない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体</anchor>への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照</anchor>があるのは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">誤り</anchor>という規定 <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="XML1:&quot;#AVNormalize&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:XML1:&quot;#AVNormalize&quot;</anchor-external>
もあります。
従って、 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal> の2例とも、どう処理されるのかは実装依存です。</p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end>
<cite>葉っぱ日記 - XSSの出題 回答編</cite> (<code>2007-03-15 03:50:33 +09:00</code> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://d.hatena.ne.jp/hasegawayosuke/20070313/p1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://d.hatena.ne.jp/hasegawayosuke/20070313/p1</anchor-external>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2007-03-15 13:02:25 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end>
<cite>葉っぱ日記 - で、ここからが本題</cite> (<code>2007-03-15 03:50:33 +09:00</code> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://d.hatena.ne.jp/hasegawayosuke/20070313/p2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://d.hatena.ne.jp/hasegawayosuke/20070313/p2</anchor-external>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2007-03-15 13:06:33 +00:00</weak>)</p></section></body></html>