2015-04-18 7 views
5

Ich möchte eine bestimmte Einschränkung auf ein XML-Schema anwenden (auf dem ich sehr wenig Erfahrung habe).Anwenden der Beschränkung auf das Zeitattribut in XML Schema

Ich habe ein Attribut xsd:time Typ:

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

Was ich will, eine Beschränkung auf ist anzuwenden, so dass die XML nur auf Intervalle halbe Stunde Zeit gültig ist. Zum Beispiel wären 10:00, 12:30, 15:30, 20:00 gültige Werte für das Stundenattribut, aber 10:45, 11:12, 15:34 usw. wäre nicht gültig.

Wie kann ich das erreichen? Meine Suche ergab nichts Nützliches.

Vielen Dank im Voraus.

Antwort

3

Sie könnten Ihre Zeit auf diese Weise definieren.

<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> 

oder

<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> 
+2

Der Wert der Base sollte mit XSD vorangestellt werden. Außerdem denke ich, dass es mit dieser vereinfachten Regex immer noch funktionieren würde .. :(0 | 3) 0: 00' – sergioFC

+0

Könnten Sie bitte eine Antwort darauf geben? Es wird schön sein! :) –

+0

@sergioFC Ich hatte gedacht, um den Ausdruck zu vereinfachen, aber Ihre Lösung ermöglicht diesen Wert 24:00:00, 00: 00: 0, ich denke, das ist ein wenig mehrdeutig. Wie auch immer, beide Lösungen sind richtig, und fehlende 'xs: time' meine Schuld :) – Xstian