我试图代表一个班级,其中包括一周中的一些日子 - 例如,它可能是空的,可能是周一,周三和周四,也可能是七天。显然它不应该允许同一天不止一次。我也尝试使用xsd.exe或其他工具从XSD生成类。
我不是问哪种方法最好,而是询问如何以任何合理的方式完成这项工作。例如,我不介意该类是否具有一周中每天的布尔值,或者是否限制为枚举中的值的散列集。目标语言是C#/。NET3.5。
麻烦的是,我对如何用XSD格式表示这个问题一无所知!这是我到目前为止所得到的:
<xs:simpleType name="daysOfWeek">
<xs:restriction base="xs:string">
<xs:enumeration value="Monday"/>
<xs:enumeration value="Tuesday"/>
<xs:enumeration value="Wednesday"/>
<xs:enumeration value="Thursday"/>
<xs:enumeration value="Friday"/>
<xs:enumeration value="Saturday"/>
<xs:enumeration value="Sunday"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="runDays">
<!-- Set of days of the week goes here -->
</xs:complexType>
答案 0 :(得分:1)
您可以定义一个具有特定子节点列表的节点,其中每个节点只能发生一次,但可以省略。
<xs:complexType>
<xs:sequence>
<xs:element name="Monday"
minOccurs="0"
maxOccurs="1">
<xs:complexType>
</xs:complexType>
</xs:element>
<xs:element name="Tuesday"
minOccurs="0"
maxOccurs="1">
<xs:complexType>
</xs:complexType>
</xs:element>
<!-- etc. ... -->
</xs:sequence>
</xs:complexType>