ぽざうねっと

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  390  : 記事  0  : コメント  905  : トラックバック  67

ニュース

さて、今年の秋は何を漬けようか

書庫

日記カテゴリ

Accessory

Community

Private

自由に要素名が使える XML ですが、実は予約語があります。
大文字・小文字を問わず xml で始まる単語は要素名・属性名にできません。
でも IE は普通に表示するし、System.Xml.XmlDocument に食わせても普通に処理するんですよねー。
他にも要素名には色々と制限があるんですが、
・先頭が半角数字
・全角英数を含む
・半角カナを含む
このあたりはちゃんとエラーになります。

しかし「先頭が半角数字」に限っては、XmlDocument::Load, XmlDocument::LoadXml のときのみエラーになります。
XmlDocument doc = new XmlDocument();
doc.LoadXml("<root/>");
XmlElement elm = doc.CreateElement("1child");
elm.InnerText = "sample";
doc.DocumentElement.AppendChild(elm);
Console.Write(doc.OuterXml);
なーんてことやると、ものの見事に
<root><1child>sample</1child></root>
なんて xml を吐き出してくれます。ぬーん。

余談
xml 文書として must な制限は、一つだけのルート要素です。
xml 宣言も必要ありません。整形式でさえあれば。
ただし utf-8 か utf-16 で記述しないといけませんけどね。
つまり、
<a/>
たった 4 文字でも立派な xml 文書です。
投稿日時 : 2007年2月16日 1:02

コメント

# re: XMLの予約語 2007/02/16 11:14 とっちゃん
xml宣言がない場合は、BOMの有無で判定されていたはず<文字コード
BOMがあればその形式。ない場合は、UTF-8 になるんじゃなかったかなぁ?

XMLはなにかでもらった本を読んだっきりだからなぁ...w


# re: XMLの予約語 2007/02/16 15:33 中博俊
BOMなどについては
http://www.w3c.org/TR/2006/REC-xml-20060816
4.3.3とAppendices F1をご覧ください。

# re: XMLの予約語 2007/02/16 21:08 THREE-ONE
えーと、たしか 4 オクテット読み込めば判定されるはずです。
BOM がある場合は 2 オクテットで判別可能。
BOM のない UTF-16 も判別できます。(厳密にはエラーだそうですが)
英語読むのがめんどくさいなら、どら猫さんがおすすめです。
http://www.doraneko.org/
ワーキングドラフト時のものとはいえ、XPointer や XLink もあるのがありがたいです。

Post Feedback

タイトル
名前
Url:
コメント: