创建一个XSD示例 - 操作小时数 - 几种类型之一

时间:2010-08-02 16:37:36

标签: xml xsd

可以发送的一些XML的示例:

<hours-of-operation>
        <monday hourType="custom">
            <open unit="AM">9:00</open> <!-- open/close or closed or 24hour -->
            <close unit="PM">5:00</close>
        </monday>
        <tuesday hourType="closed" />
        <wednesday hourType="24hour" />
        <thursday hourType="custom">
            <open unit="AM">9:00</open> <!-- open/close or closed or 24hour -->
            <close unit="PM">5:00</close>
        </thursday>
        <friday hourType="custom">
            <open unit="AM">9:00</open> <!-- open/close or closed or 24hour -->
            <close unit="PM">5:00</close>
        </friday>
        <saturday hourType="closed" />
        <sunday hourType="closed" />
    </hours-of-operation>

我想要一个定义操作时间元素的XSD 。如果它使事情变得更简单,可以随意使hourType元素与属性相对。

所以基本上,我每周需要一天,它可以有开放和关闭时间,关闭或24小时开放。此外,这里的要求并不宽松,我需要一周中的所有日子。

如果不清楚,我不想知道你在实践中如何解决这个问题。我想要发布的XML的XSD定义,如果你有一个试图解决这个问题的源我希望特定的XSD部分完全适用于这个XML。我对XML模式知之甚少,虽然我学得最好,但我可以很快,我能得到的最好的东西就是这个用例的实际XSD代码。

1 个答案:

答案 0 :(得分:1)

这本来是一个可接受的答案,它不会验证时间是时间,它只是一个字符串,但是对于发布的示例可行。

<xs:element name="hours-of-operation">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="monday" type="day-hours"/>
                <xs:element name="tuesday" type="day-hours"/>
                <xs:element name="wednesday" type="day-hours"/>
                <xs:element name="thursday" type="day-hours"/>
                <xs:element name="friday" type="day-hours"/>
                <xs:element name="saturday" type="day-hours"/>
                <xs:element name="sunday" type="day-hours"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="day-hours">
        <xs:choice>
            <xs:element name="twentyfourhours"/>
            <xs:element name="closed"/>
            <xs:element name="hours" type="hours"/>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="hours">
        <xs:sequence>
            <xs:element name="open" type="time"/>
            <xs:element name="close" type="time"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="time">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="unit" use="required" type="unit"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>