[1] [[URN]] [[名前空間]] [DFN[[CODE(URI)[urn:publicid:[VAR[*]]]]]] は、 [[SGML]] などで使われる[[公開識別子]]を [[URI]] として表現するためのものです。 [[RFC 3151]] で定義されています。 [2] RFC 3151 には特に書いてありませんが、実装する時には、 公開識別子に使えない文字が入力に含まれていた時の扱いに注意しないといけないでしょう。 実装の種類によって、 - そのような入力があった時点で[[致命的誤り]]とするか、 - そのような文字は削除してから URN 化するか、 - そのような文字は [[URI符号化]]するか を決めて、それを実装しておくのが良いでしょう。 [3] >>2 とは逆に、解釈する (URI から公開識別子に変換する) 側の実装にも誤り対処が必要です。 - (a) 公開識別子として不正な文字が含まれている場合, - (b) [CODE(URI)[++]] とか [CODE(URI)[%2F%2F]] のように [CODE(URI)[publicid]] URN としてあり得ないはずの文字列が含まれている場合 の対処を考える必要があります。 (普段は (b) は無視して素通ししてもいいかもしれません。 (a) は致命的誤りとするか、削除する必要があるでしょう。) [4] >>1 RFC になる前の [[I-D]] は [CODE[draft-urn-publicid]]。