自由に要素名が使える 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 文書です。