<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="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <dfn>噂の ID 問題</dfn>とは、2001年頃~2004年頃に話題になった、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor>
の <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">id</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>・<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:">HTML</anchor> の規範とされていた <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML4</anchor> 仕様は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML応用</anchor>であるとの空想
(あるいは願望) の上に構築されていました。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML4</anchor> の <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">id</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:">SGML</anchor> の <code class="SGML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ID</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:">HTML4</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML宣言</anchor>により、 <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">id</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:">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>されると記述されていました。</p><p>しかし、実は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML4</anchor> の中の人の意図も、現実の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザ</anchor>の実装 (一部を除く。) も、
<code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">id</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>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小文字</anchor>は区別されるというものでした。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML4</anchor> 仕様書中には <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">id</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>・<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小文字</anchor>を区別すると書かれていましたし、
<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>化が行われないとしないと理解できない例が挙げられていました。</p><p>つまり、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML4</anchor> の中の人は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> を使っていなかったのでその規定を知らなかったかうっかり忘れており、
仕様書中に示した <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>の例を実際に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML構文解析器</anchor>を使った <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザ</anchor>で確認することもせず
(だってそんなもの存在していない!)、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザ</anchor>を作っている人達も一々 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor>
で現実に使われていない <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> の仕様など確認せず、最初の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">W3C</anchor> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">勧告</anchor>から4年くらい経つまで誰も間違いに気付かなかったというわけです。</p><p>それでもまだ人々は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> が <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>だけを <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">id</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:">ISO-HTML</anchor> 関係者など)、
仕様の解釈を無理にでもこじつけて当時の現状を正当化しようとした人もいました (当時の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML WG</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:">HTML5</anchor> を待つことになります。</p><delete xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><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> 要約: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML 4</anchor> 以前の (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHTML</anchor> になるより前の) HTML の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">終点アンカー</anchor>
(<code class="HTMLa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">id</anchor></code> 属性や <code class="HTMLa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">name</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:">XHTML</anchor>
にはありませんが、<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHTML に限らず</weak> HTML 4
以前の HTML で書かれた文書の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">素片識別子</anchor> (<samp class="URI">#<var>〜</var></samp>) を含む
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI参照</anchor>を使うときにこの問題に巻き込まれる虞がありますから、油断はできません。</p></delete><p>詳しくは次の文献等をどうぞ。</p><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> <em>釣瓶雜記(2003年11月〜12月)</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://kazmacky.cool.ne.jp/kinkyo/2003e.html#DATE1128_01" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://kazmacky.cool.ne.jp/kinkyo/2003e.html#DATE1128_01</anchor-external></p><p>『<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO‐HTML利用者の手引き</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> <em>User's Guide to ISO/IEC 15445:2000(E) ISO-HTML</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.cs.tcd.ie/15445/UG.HTML#ANCHOR-FOLDING" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://www.cs.tcd.ie/15445/UG.HTML#ANCHOR-FOLDING</anchor-external></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> <em>2003年11月 - マーク付けノート</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.satoshii.org/markup/notes/2003/11#date23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://www.satoshii.org/markup/notes/2003/11#date23</anchor-external></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-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="htmllint:1142" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:htmllint:1142</anchor-external>: この問題を日本語圏に知らしめるきっかけとなったメイル。</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <em>www-html@w3.org from January 2002: Re: id attribute in HTML 4.01</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://lists.w3.org/Archives/Public/www-html/2002Jan/thread.html#82" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://lists.w3.org/Archives/Public/www-html/2002Jan/thread.html#82</anchor-external> : HTML 4 の規定は知っててあーしたということ?</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <em>Re: HTML ID case question from Steven Pemberton on 2001-07-11 (www-validator@w3.org from July 2001)</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://lists.w3.org/Archives/Public/www-validator/2001Jul/0046" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://lists.w3.org/Archives/Public/www-validator/2001Jul/0046</anchor-external> : <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;11</anchor-internal> 以前に HTML WG で出た結論がこれだと。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 結局 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;11</anchor-internal>-12 では実装互換性は考慮されてるけど SGML 互換性は全然問題になってない。 HTML にそれを求めるのは酷なことなのでしょうか?</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal> と思ったけど、実は SGML 的な特性として大文字化前の属性値が保存される、とかいう規定が発見されれば問題はないのかも。素の SGML にはなさげだけど、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HyTime</anchor> 辺りにちょこっと書いてあったりしないかなあ?</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> この問題を知って <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> の規格を読んでみたくなった方。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JISC</anchor> のウェブ・サイト <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.jisc.go.jp/" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://www.jisc.go.jp/</anchor-external> から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PDF</anchor> で仕様書が入手できます。「JIS 検索」を選んで、「X4151」を探してみてください。無料ですが、規格票を scan した画像を PDF 化したもので素人にはお勧めできない。嫌なら <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSA</anchor> に紙の規格票でも注文 (有料) しろってこった。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <em>Strict-HTML スレッド17</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://pc2.2ch.net/test/read.cgi/hp/1068907834/" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://pc2.2ch.net/test/read.cgi/hp/1068907834/</anchor-external>: 100番くらい〜でこの話題。</li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS</anchor> へのこの問題の影響は?</p><p>5.9 ID selectors <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="CSS2:&quot;selector.html#id-selectors&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:CSS2:&quot;selector.html#id-selectors&quot;</anchor-external>
にはそもそも大文字・小文字の区別に言及がないような。
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/2003/WD-CSS21-20030915/selector.html#id-selectors" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://www.w3.org/TR/2003/WD-CSS21-20030915/selector.html#id-selectors</anchor-external>
も同じ。</p><p>5.1 Pattern matching <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="CSS2:&quot;selector.html#q1&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:CSS2:&quot;selector.html#q1&quot;</anchor-external>
には要素型名が HTML では区別されない旨、
5.8.1 Matching attributes and attribute values
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="CSS2:&quot;selector.html#q10&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:CSS2:&quot;selector.html#q10&quot;</anchor-external>
には属性名・属性値が文書言語によっては区別されない旨が書かれてはいるけど。</p><p>他のところの記述を見落としているのでなければ、
そもそも CSS では <samp class="CSS">#ID</samp> は大文字で書かないといけなかったことになる。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> 関係ないけど気になったのは、
属性値の区別が文書言語に依存すること。
<dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書言語</anchor></dfn>とは
<q a0:resParameter="CSS2:&quot;conform.html#doclanguage&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">The encoding language of the source document (e.g., HTML or an XML application).</q>だから、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHTML1.0</anchor> で <samp class="HTML">&lt;p lang=&quot;JA&quot;&gt;</samp>
と書いてもちゃんと <samp class="CSS">p[lang|=&quot;ja&quot;] </samp>
と一致するようになっているわけだ。</p><p>でも XHTML じゃなくて何か UA が知らないマーク付け言語だとこうはならない。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">悲劇的ですらある CSS の非互換問題の中ではこんなのどうでもいいことかもだけど。</weak></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Namazu</anchor> は素片識別子になる <code class="HTMLa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">name</anchor></code> 
属性を勝手に小文字にしちゃうようだ (<code class="HTMLa">id</code> にはそもそも未対応)。
おかげで対策した文書の検索結果の素片識別子が役に立たない。</p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form><section><h1>アンカー名の構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> アンカー名 (<code class="HTMLa">name</code> または <code class="HTMLa">id</code>)
は、文書内で固有でなければなりません。すなわち、
文書内の他の <code class="HTMLa">name</code> や <code class="HTMLa">id</code>
と同じ名前ではいけません。</p><p>しかも、大文字・小文字の違いだけの別の名前を使うこともできません。</p><p>仕様書: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML 4</anchor> 12.2.1 Syntax of anchor names
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="HTML4:&quot;struct/links.html#idx-anchor-3&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:HTML4:&quot;struct/links.html#idx-anchor-3&quot;</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> 例えば、<pre class="HTML">&lt;P&gt;&lt;A name=&quot;xxx&quot;&gt;...&lt;/A&gt;
&lt;P&gt;&lt;A name=&quot;XXX&quot;&gt;...&lt;/A&gt;</pre></p><p><weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(HTML 4 仕様書より)</weak>
は違法です。</p><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> HTML 4 仕様書によれば、アンカー名は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII</anchor> 文字に制限するべきです。</p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>アンカー名の一致</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> アンカー名と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">素片識別子</anchor>の一致の検査は、
大文字・小文字を<strong>区別して</strong>行わなければなりません。</p><p>仕様書: <ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML 4</anchor> <ul><li><cite>12.2.1 Syntax of anchor names</cite>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="HTML4:&quot;struct/links.html#idx-anchor-3&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:HTML4:&quot;struct/links.html#idx-anchor-3&quot;</anchor-external></li><li><cite>12.2.3 Anchors with the id attribute</cite>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="HTML4:&quot;struct/links.html#idx-anchor-8&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:HTML4:&quot;struct/links.html#idx-anchor-8&quot;</anchor-external></li><li><cite>HTML 4 Changes</cite>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="HTML4:&quot;appendix/changes.html#h-A.1.1.8&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:HTML4:&quot;appendix/changes.html#h-A.1.1.8&quot;</anchor-external></li></ul></li></ul></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> 次の例は、合法ですが、 UA の挙動は未定義です
(小文字のアンカー名が他で定義されていないとして)。</p><pre class="HTML">&lt;P&gt;&lt;A href=&quot;#xxx&quot;&gt;...&lt;/A&gt;
...more document...
&lt;P&gt;&lt;A name=&quot;XXX&quot;&gt;...&lt;/A&gt;</pre><p><src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTML 4 仕様書</src></p><p>一部の UA は (不正に) 一致するものとみなしてしまいますが、
そうでない UA もあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;23</anchor-internal> <q>不正に</q>って注記が入っているあたり、
<q>未定義</q>とはいえないような... どうよ? &gt; HTML 4 の中の人</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> <code class="HTMLe"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">a</anchor></code>, <code class="HTMLe"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">form</anchor></code>,
<code class="HTMLe"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">img</anchor></code>, <code class="HTMLe"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">map</anchor></code>, <code class="HTMLe"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">applet</anchor></code>,
<code class="HTMLe"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">frame</anchor></code>, <code class="HTMLe"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">iframe</anchor></code>
では、固有識別子を指定するために <code class="HTMLa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">name</anchor></code>
と <code class="HTMLa">id</code> の両方を指定することが認められます。
ただし、同じ要素の2つの属性の値は同じでなければなりません。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTML 4.01 12.2.3, A.1.1.8</src></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> 合法な例:<pre class="HTML">&lt;P&gt;&lt;A name=&quot;A1&quot; id=&quot;A1&quot; href=&quot;#A1&quot;&gt;...&lt;/A&gt;</pre></p><p><weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(HTML 4 仕様書より、改)</weak></p><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> <strong>違法</strong>な例:<pre class="HTML">&lt;A href=&quot;#A1&quot;&gt;...&lt;/A&gt;
...
&lt;H1 id=&quot;A1&quot;&gt;
...pages and pages...
&lt;A name=&quot;A1&quot;&gt;&lt;/A&gt;</pre></p><p><weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(HTML 4 仕様書より、改)</weak></p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>大文字と小文字の区別のまとめ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end><table><tbody><tr><td>規格</td><td>識別子</td><td>区別</td><td>素片識別子として使用</td><td>メモ</td></tr><tr><td>SGML {<code class="SGML">NAMECASE GENERAL YES</code>}</td><td><code class="SGML">ID</code></td><td>なし (大文字化)</td><td></td><td></td></tr><tr><td>SGML {<code class="SGML">NAMECASE GENERAL NO</code>}</td><td><code class="SGML">ID</code></td><td>あり</td><td></td><td></td></tr><tr><td>XML</td><td><code class="XML">ID</code></td><td>あり</td><td>する</td><td></td></tr><tr><td>HTML 4</td><td><code class="HTMLe">a</code> <code class="HTMLa">name</code></td><td>あり</td><td>する</td><td>区別をなくすと区別できない名前は使用禁止</td></tr><tr><td>HTML 4</td><td><code class="HTMLa">id</code></td><td>DTD: なし (大文字化), 本文: あり</td><td>する</td><td><code class="HTMLe">a</code> <code class="HTMLa">name</code> と同じ名前空間</td></tr><tr><td>HTML 4</td><td><code class="HTMLe">img</code> <code class="HTMLa">name</code></td><td>あり</td><td></td><td></td></tr><tr><td>HTML 4</td><td><code class="HTMLe">applet</code> <code class="HTMLa">name</code></td><td>あり</td><td></td><td></td></tr><tr><td>HTML 4</td><td><code class="HTMLe">map</code> <code class="HTMLa">name</code></td><td>なし</td><td>する</td></tr><tr><td>HTML 4</td><td><code class="HTMLe">frame</code> <code class="HTMLa">name</code></td><td>なし</td></tr><tr><td>HTML 4</td><td><code class="HTMLe">iframe</code> <code class="HTMLa">name</code></td><td>なし</td></tr><tr><td>HTML 4</td><td><code class="HTMLe">form</code> <code class="HTMLa">name</code></td><td>なし</td><td></td></tr><tr><td>SGML {<code class="SGML">NAMECASE GENERAL YES</code>}</td><td><code class="SGML">IDREF</code></td><td>なし (大文字化)</td><td>−</td></tr><tr><td>SGML {<code class="SGML">NAMECASE GENERAL NO</code>}</td><td><code class="SGML">IDREF</code></td><td>あり</td><td>−</td></tr><tr><td>XML</td><td><code class="XML">IDREF</code></td><td>あり</td><td>−</td></tr><tr><td>URI 参照</td><td>素片識別子</td><td>あり</td><td>−</td></tr><tr><td>HTML 4</td><td>素片識別子</td><td>あり</td><td>−</td></tr><tr><td>HTML 4</td><td><code class="HTMLe">label</code> <code class="HTMLa">for</code></td><td>DTD: なし (大文字化), 本文: あり</td><td>−</td><td></td></tr><tr><td>HTML 4</td><td><code class="HTMLe">param</code> <code class="HTMLa">value</code> (<code class="HTMLa">datatype</code> が <code class="HTML">object</code>)</td><td>不明</td><td>−</td><td></td></tr><tr><td>HTML 4</td><td><code class="HTMLe">meta</code> <code class="HTMLa">name</code></td><td>あり</td><td>しない</td><td>複数要素で同名可</td></tr><tr><td>HTML 4</td><td><code class="HTMLe">param</code> <code class="HTMLa">name</code></td><td>物体依存</td><td>しない</td><td>複数要素で同名可</td></tr><tr><td>HTML 4</td><td>フォーム制御子 <code class="HTMLa">name</code></td><td>あり</td><td>しない</td><td>複数要素で同名可なことも</td></tr></tbody></table></p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>id vs name</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <code class="HTMLa">id</code> と <code class="HTMLa">name</code>、
どちらを使うべきかについて、 HTML 4
仕様書 (12.2.3 Anchors with the id attribute
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="HTML4:&quot;struct/links.html#idx-anchor-10&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:HTML4:&quot;struct/links.html#idx-anchor-10&quot;</anchor-external>)
は次のように説明しています。</p><ul><li><code class="HTMLa">id</code> は、アンカー名以外、例えば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スタイル・シート</anchor>でも利用できる</li><li>古い UA には <code class="HTMLa">id</code> に対応していないものもある</li><li><code class="HTMLa">name</code> の方が色々な文字を使える (実体参照も)</li></ul><p>ただし、 HTML 4 仕様書が <code class="HTMLa">id</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>を使えないと言っているのは<strong>間違い</strong>です。
どちらの属性でも、<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="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> このうち、古い UA は <code class="HTMLa">id</code> に対応していないという点は、
HTML 4 が勧告された1990年代後半にはまだ比較的大きな問題でしたが、
今となってはそのような UA はほとんど使われていませんし、
使っていたとしても利用者は既にかなり不利益を被っているはずですから、
もはや気にする必要はまったくないでしょう。</p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end>
<cite xml:lang="ja">XHTMLでは大文字のid属性でも大丈夫 - 徒書</cite> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">北村曉</anchor> 著, <code>2007-01-30 16:04:46 +09:00</code> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.akatsukinishisu.net/itazuragaki/html/id_attr_in_xhtml.html" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://www.akatsukinishisu.net/itazuragaki/html/id_attr_in_xhtml.html</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-01-31 21:50:12 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end>
<cite xml:lang="ja">余白雑記 &gt; January 2007 - よはくのところ。</cite> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">香川さやか</anchor> 著, <code>2007-01-30 00:14:33 +09:00</code> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://yohaku.maybe.jp/diary/d2007/d-0701.htm#JAN29A" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://yohaku.maybe.jp/diary/d2007/d-0701.htm#JAN29A</anchor-external>
(<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="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end>
<cite xml:lang="ja">id属性値が小文字のHTML4をXHTMLへ移行する場合 - 徒書</cite> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">北村曉</anchor> 著, <code>2007-01-30 15:59:59 +09:00</code> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.akatsukinishisu.net/itazuragaki/html/lower_case_id_html4.html" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://www.akatsukinishisu.net/itazuragaki/html/lower_case_id_html4.html</anchor-external>
(<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="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end>
<cite>まじかんと雑記: HTML の id の大文字・小文字の問題</cite> (<time>2008-10-31 23:06:53 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://magicant.txt-nifty.com/main/2007/12/html_id_dcf5.html" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://magicant.txt-nifty.com/main/2007/12/html_id_dcf5.html</anchor-external>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p></section></body></html>