このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

XMLとJSONにおけるコロン文字の扱い

オットットット、こりゃいかん、見落としがあった! -- 昨日の「JSON改:基本構文」でのことです。

XML1.1の「名前」の定義をそのままコピーしたのですが、これによると、コロン(:)は名前開始文字(必然的に名前文字)になるので、「:」(コロンだけ)とか「foo:::bar:」なんてのも名前として認められます。ところがJSONでは、コロンはオブジェクト表記のなかで使われる特殊文字(区切り文字)でした。こりゃダメですね。NameStartCharからコロンを落としておきましょう。

XML1.0または1.1には、「:」や「foo:::bar:」という名前を禁止するルールはないのです。次のような注はありますが。

Note:

The Namespaces in XML Recommendation assigns a meaning to names containing colon characters. Therefore, authors should not use the colon in XML names except for namespace purposes, but XML processors must accept the colon as a name character.

実際のところ、XML仕様だけに基づいてNamespaces仕様は考慮しない運用はないでしょうから、名前はNCName(コロンを含まない名前)かQName(コロンを1個含むかも知れない名前)だと思ってよいでしょう。QNameはJSONと協調できないので、結局、名前にはNCNameを採用ってことになります。


/* Namespaces in XML 1.1 より */
[4] NCName ::= NCNameStartChar NCNameChar*
[5] NCNameChar ::= NameChar - ':'
[5a] NCNameStartChar ::= NameStartChar - ':'

もしQNameが必要になったら? そんとき考えればいいんじゃないの。「@」とか「$」とかの文字がまだ余っているからなんとかなるでしょう。