xsd.exe または Xsd2Code を使用して、この XSD スキーマの C# クラスを生成します。
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="student" type="personinfo"/>
<xs:element name="employee" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
どちらの場合も同様の結果が得られます。
...
[System.Xml.Serialization.XmlRootAttribute("student", Namespace="", IsNullable=false)]
public partial class personinfo
{
...
public string firstname { ... }
public string lastname { ... }
}
employee
どこにも参照されておらず、コード生成後に一部の情報が失われるのは奇妙に思えます。たとえば、生成されたコードを見ると、この XML を作成できるかどうかは明らかではありません。
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
生成されたコードにスキーマ要素に関する情報が含まれていないのはなぜですか? 生成されたクラスにこの情報を何らかの方法で保存できる他のツールはありますか?