<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="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:">URN名前空間</anchor> <dfn><code class="URI">urn:publicid:<var>*</var></code></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:">URL</anchor>
として表現するためのものでした。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3151</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> 
元々ほとんど使われていませんでしたが、 <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> の衰退により、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">公開識別子</anchor>自体も使われなくなりました。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><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> <cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3151</anchor> - A URN Namespace for Public Identifiers</cite>, <time>2021-04-11T09:01:35.000Z</time>, <time>2021-04-22T08:58:24.564Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc3151">https://tools.ietf.org/html/rfc3151</anchor-external></li></ul></refs></section><section><h1>処理</h1><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 xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3151</anchor> には特に書いてありませんが、実装する時には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">公開識別子</anchor>に使えない文字が入力に含まれていた時の扱いに注意しないといけないでしょう。
実装の種類によって、</p><ul><li>そのような入力があった時点で<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:">URN</anchor> 化するか、</li><li>そのような文字は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI符号化</anchor>するか</li></ul><p>... を決めて、それを実装しておくのが良いでしょう。</p><p><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> それとは逆に、解釈する (URI から公開識別子に変換する) 
側の実装にも誤り対処が必要です。</p><ul><li>(a) 公開識別子として不正な文字が含まれている場合,</li><li>(b) <code class="URI">++</code> とか <code class="URI">%2F%2F</code> のように 
<code class="URI">publicid</code> URN としてあり得ないはずの文字列が含まれている場合</li></ul><p>... の対処を考える必要があります。 (普段は (b) 
は無視して素通ししてもいいかもしれません。 (a) 
は致命的誤りとするか、削除する必要があるでしょう。)</p></section><section><h1>評価</h1><p><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 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>
が衰退したのもありますけど、
そもそも需要がなかったのでしょうね。</p><p><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:">公開識別子</anchor>が求められる場面では、そのままオリジナルの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">公開識別子</anchor>を使えばよく、
わざわざ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> に変換しても何も得することがない。</p><p><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> が求められる場面では、一般的な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</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="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:">URL</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:">URL</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:">URL</anchor> だけに限定する理由はない。
元から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</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="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML型録</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URLの解決<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">URLの解決 (XML型録)</title></anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外部識別子の解決</anchor>の処理では、
本項の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</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="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor> になる前の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">I-D</anchor> は <dfn>draft-urn-publicid</dfn> でした。</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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3151</anchor></p></section><section><h1>メモ</h1></section></body></html>