Ich habe die folgenden Elemente in meinem Schema:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="optimizeModelBase">
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
<xs:complexType name="riskModel">
<xs:complexContent>
<xs:extension base="optimizeModelBase">
<xs:attribute name="type" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="fullCovariance">
<xs:complexContent>
<xs:extension base="optimizeModelBase">
<xs:attribute name="fromDate" type="xs:date" use="required"/>
<xs:attribute name="toDate" type="xs:date" use="required"/>
<xs:attribute name="windowSize" type="xs:int" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
In meinem Hauptschemakörper verwende ich ein Element, um eine 1-of-Situation anzugeben:
<xs:choice id="RiskModelParameter">
<xs:element name="RiskModel" type="riskModel"/>
<xs:element name="FullCovariance" type="fullCovariance"/>
</xs:choice>
Wenn ich xsd.exe ausführe, wird der folgende Code angezeigt:
[System.Xml.Serialization.XmlElementAttribute("FullCovariance",
typeof(fullCovariance))]
[System.Xml.Serialization.XmlElementAttribute("RiskModel",
typeof(riskModel))]
public optimizeModelBase Item
{
get
{
return this.itemField;
}
set
{
this.itemField = value;
}
}
Das Problem ist, dass das ID-Tag des Elements ignoriert wird und xsd.exe die Eigenschaft "Item" willkürlich benennt. Ich muss zugeben, es ist kein großes Problem, aber es fängt an, mich zu ärgern. Besonders ärgerlich ist, dass xsd.exe, wenn ich weitere Elemente auf derselben Ebene habe, diese als "Item1", "Item2" usw. bindet.
Weiß jemand, ob es möglich ist, die no xsd.exe meine Auswahlelemente als "Item" benennen lassen und stattdessen meine eigenen Eigenschaftsnamen eingeben können?