publicid

urn:publicid: (URL)

[7] URN名前空間 urn:publicid:* は、 SGML などで使われる公開識別子URL として表現するためのものでした。 RFC 3151 で定義されていました。

[9] 元々ほとんど使われていませんでしたが、 SGMLXML の衰退により、 公開識別子自体も使われなくなりました。

仕様書

処理

[10] RFC 3151 には特に書いてありませんが、実装する時には、 公開識別子に使えない文字が入力に含まれていた時の扱いに注意しないといけないでしょう。 実装の種類によって、

... を決めて、それを実装しておくのが良いでしょう。

[11] それとは逆に、解釈する (URI から公開識別子に変換する) 側の実装にも誤り対処が必要です。

... の対処を考える必要があります。 (普段は (b) は無視して素通ししてもいいかもしれません。 (a) は致命的誤りとするか、削除する必要があるでしょう。)

評価

[14] 結局あまり使われなかったのは、 SGMLXML が衰退したのもありますけど、 そもそも需要がなかったのでしょうね。

[15] 公開識別子が求められる場面では、そのままオリジナルの公開識別子を使えばよく、 わざわざ URL に変換しても何も得することがない。

[16] URL が求められる場面では、一般的な URL を使えばよく、 わざわざ公開識別子を変換して使うメリットが何もない。 どころか、変換してわかりにくくなるデメリットがある。

[17] URL だけが求められる場面で公開識別子を統一的に扱いたく、 公開識別子専用の別の仕組みを導入するのが躊躇されるとき、 本手法によって変換した URL を扱えば便利。 でもそんな場面はなかった。 元から公開識別子が想定される場面 (たとえばカタログの記述) なら、公開識別子のまま書ける方が便利に決まっているので、 わざわざ URL だけに限定する理由はない。 元から URL だけを使っていて後から公開識別子が必要になる理由も何もなかった。

関連

[12] XML型録URLの解決外部識別子の解決の処理では、 本項の URL公開識別子に変換されて処理されることになっていました。

歴史

[8] RFC になる前の I-Ddraft-urn-publicid でした。

[1] RFC 3151

メモ