2

我试图代表一个班级,除其他外,它有一组星期几 - 例如,它可能是空的,可能是星期一、星期三和星期四,或者可能是所有 7 天。显然,它不应该允许同一天超过一次。我还尝试使用 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>
4

1 回答 1

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>
于 2011-08-17T11:25:33.687 回答