Bhushan Bhangale
Bhushan Bhangale

Reputation: 10987

XSD date format overriding

I am defining an XSD. I need to define an element which takes date in format yyyymmdd. How can I define a restriction in XSD to only accept this format?

Upvotes: 7

Views: 32628

Answers (2)

Sunil
Sunil

Reputation: 492

If you want the format of MM/DD/YYYY in xml then this code can help you for this format

<xs:element name="StartDate">
   <xs:simpleType>
      <xs:restriction base="xs:string">
         <xs:pattern value="\d{2}[/]\d{2}[/]\d{4}"/>
     <xs:length value="10"/>
      </xs:restriction>
   </xs:simpleType>
</xs:element>

Upvotes: -2

marc_s
marc_s

Reputation: 755361

You could always define it as a restricted simple type based on a string, restricted by a regular expression:

<xs:simpleType name="FormattedDateType">
   <xs:restriction base="xs:string">
       <xs:pattern value="\d{8}"/>
   </xs:restriction>
</xs:simpleType>

If you want to get really smart, you can tweak the regular expression to be even more of a match for a date (e.g. contains the info that month can only be 01 - 12 and so forth):

<xs:simpleType name="FormattedDateType">
   <xs:restriction base="xs:string">
       <xs:pattern value="\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])"/>
   </xs:restriction>
</xs:simpleType>

Marc

Upvotes: 14

Related Questions