2015-04-18 2 views
5

Je souhaite appliquer une restriction spécifique à un schéma XML (sur lequel j'ai très peu d'expérience).Appliquer l'attribut de restriction à l'heure dans le schéma XML

J'ai un attribut de type xsd:time:

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

Ce que je veux est d'appliquer une restriction afin que le XML ne sera valable que sur des intervalles de temps une demi-heure. Par exemple, 10:00, 12:30, 15:30, 20:00 serait des valeurs valides pour l'attribut heure, mais 10:45, 11:12, 15:34 ne serait pas.

Comment puis-je y parvenir? Ma recherche n'a pas donné quelque chose d'utile.

Merci d'avance.

Répondre

3

Vous pouvez définir votre temps de cette manière.

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

ou

<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

La valeur de base doit être préfixé avec XSD. En outre, je pense que l'utilisation de cette regex plus simple, il fonctionnerait encore '.. :(0 | 3) 0: 00' – sergioFC

+0

Pourriez-vous s'il vous plaît fournir une réponse à ce sujet? Ce sera sympa! :) –

+0

@sergioFC J'avais pensé à simplifier l'expression mais, votre solution permet ces valeurs 24:00:00, 00: 00: 0, je pense que c'est un peu ambigu. Quoi qu'il en soit les deux solutions sont justes, et manquant 'xs: time' ma faute :) – Xstian