在XML Schema中对time属性应用限制

Nic*_*kis 5 xml schema xsd restriction

我想对XML Schema应用一个特定的限制(我很少有经验).

我有一个xsd:time类型的属性:

<xsd:attribute name="hour" type="xsd:time" use="required"/>
Run Code Online (Sandbox Code Playgroud)

我想要的是应用限制,以便XML仅在半小时的时间间隔内有效.例如,10:00,12:30,15:30,20:00将是小时属性的有效值,但不是10:45,11:12,15:34等.

我怎样才能做到这一点?我的搜索没有给出有用的东西.

先感谢您.

Xst*_*ian 3

你可以用这种方式定义你的时间。

<xsd:attribute name="hour" type="Time" use="required"/>

<xsd:simpleType name="Time">
    <xsd:restriction base="xsd:time">
        <xsd:enumeration value="00:00:00"/>
        <xsd:enumeration value="00:30:00"/>
        <xsd:enumeration value="01:00:00"/>
        <xsd:enumeration value="01:30:00"/>
        <xsd:enumeration value="02:00:00"/>
        <xsd:enumeration value="02:30:00"/>
        <xsd:enumeration value="03:00:00"/>
        <xsd:enumeration value="03:30:00"/>
        <!-- etc etc -->
    </xsd:restriction>
</xsd:simpleType>
Run Code Online (Sandbox Code Playgroud)

或者

<xsd:simpleType name="Time">
    <xsd:restriction base="xsd:time">
        <xsd:pattern value="((0[0-9]|1[0-9]|2[0-3]):[0|3][0]:[0][0])"/>
    </xsd:restriction>
</xsd:simpleType>
Run Code Online (Sandbox Code Playgroud)

  • base 的值应以 xsd 为前缀。另外我认为使用这个更简单的正则表达式它仍然可以工作 `..:(0|3)0:00` (2认同)