DITA-OT DayでEliot KimberさんがRELAX NGでの特殊化の例を示しておられたので、自分も試してみようと思いました.
ですが、特殊化した場合はOASISのものとは異なったものであることを示すために
"-//ANTENNA HOUSE//DTD DITA Topic//EN"
"urn:oasis:names:tc:dita:xsd:topic.xsd"
というURNが使用されています.ではここでも同じように
"urn:antennahouse:names:tc:dita:xsd:topic.xsd"
なんていうようにやっても良いのかと言いますと、実はこれだとURNの記法にはそぐわないようです.何故かと言いますと、URNの記法は
URN Syntax
で規定されていて、
<URN> ::= "urn:" <NID> ":" <NSS>
というバッカス・ナウア記法で表されます.このNIDが曲者(?)で
Uniform Resource Names (URN) Namespace Definition Mechanisms
によれば、<NID>は正式な場合、IANA(Internet Assigned Number Authority)への登録が必要とされるようです.実際
Uniform Resource Names (URN) Namespaces
によれば"oasis"は
A URN Namespace for OASIS
でちゃんと登録されています.では普通の企業なんかが私的(実験的)にURNを使用する場合はどのようなことになるのでしょうか?上記のRFC3406では、"3.1 Experimental Namespaces"として、
X-<NID>
という記法が許されています.例えば私の会社だったら、
"urn:x-antennahouse:names:tc:dita:xsd:topic.xsd"
などとすれば良いように思えます.(大文字/小文字は識別されないようです)ところがまたややこしい話があり、このような"X-"という記法をdeprecatedとするRFCが存在します.
Deprecating the "X-" Prefix and Similar Constructs in Application Protocols
ここでdeprecatedとされているのはプロトコルであり、<NID>はネームスペースなのでちょっとそぐわないように思えるのですが...
この発端の議論は
Question about URN notation
にあります.KimberさんもURNが結構ややこしいことを知らなかったようです.その後、dita-usersにKimberさんが経緯をpostしているのですが、
どうも私には結論としてどうしたら良いのかがいまだによくわかりません.
という訳で特殊化したスキーマにどのようなURNをつけるかという事は結構大事なのでRELAX NGで試してみようという作業もすっかり止まってしまいました.どなたかこのあたりの事情に詳しい方がおられたら整理していただければ幸いです.