[英]Initialize Enum in extension complexType in an abstract class with xsd
<xs:simpleType name="Gender">
<xs:restriction base="xs:string">
<xs:enumeration value="Male"/>
<xs:enumeration value="Female"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Client"
abstract="true">
<xs:attribute name="LastName"
type="xs:string"
use="optional"/>
<xs:attribute name="FirstName"
type="xs:string"
use="optional"/>
<xs:attribute name="Gender"
type="Gender"
use="required"/>
</xs:complexType>
<xs:complexType name="MaleClient">
<xs:complexContent>
<xs:extension base="Client">
<xs:attribute name="Gender"
type="Gender"
use="required"
fixed="Male"/>
<xs:attribute name="NewMaleProperty"
type="xs:string"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="FemaleClient">
<xs:complexContent>
<xs:extension base="Client">
<xs:attribute name="Gender"
type="Gender"
use="required"
fixed="Female"/>
<xs:attribute name="NewFemaleProperty"
type="xs:string"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
我有一個抽象類(客戶端),並且將該類擴展為兩個子類(MaleClient和FemaleClient)。
當我使用當前架構生成類時,將生成一個名為“ Gender1”的新屬性。 我想做的是將MaleClient和FemaleClient的性別初始化為各自的值。
我該如何實現?
您當前的定義試圖在一個步驟中組合一個限制(對Gender屬性)和一個擴展(添加新屬性)。 這不僅會產生綁定工具所不希望的結果,而且還會使架構不符合要求。
如果將兩個更改分為兩個派生步驟,會發生什么?
<xs:complexType name="MaleClient-0">
<xs:complexContent>
<xs:restriction base="Client">
<xs:attribute name="Gender"
type="Gender"
use="required"
fixed="Male"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="MaleClient">
<xs:complexContent>
<xs:extension base="MaleClient-0">
<xs:attribute name="NewMaleProperty"
type="xs:string"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
最好將中間類型設為匿名,但這似乎是不可能的(XSD表面語法的另一個缺陷)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.