Create an XSD optional decimal element with restrictions

13,147

Thanks to Kevin's suggestion I've come up with this which does the trick:

  <xs:simpleType name="Decimal10-2">
    <xs:restriction base="xs:decimal">
      <xs:maxInclusive value="9999999999"/>
      <xs:fractionDigits value="2"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="OptionalDecimal10-2">
    <xs:union memberTypes="Decimal10-2 empty-string" />
  </xs:simpleType>
Share:
13,147
Iain Ward
Author by

Iain Ward

Software Developer currently working in Solihull, Birmingham developing web systems in C# and ASP.NET

Updated on June 28, 2022

Comments

  • Iain Ward
    Iain Ward almost 2 years

    I've managed to create an optional decimal element using this:

      <xs:simpleType name="OptionalDecimal">
        <xs:union memberTypes="xs:decimal empty-string" />
      </xs:simpleType>
    

    but I also need to add restrictions so that if it has been entered, to limit it to a maximum length of 10 and maximum number of 3 decimal places for example. So I've got this:

    <xs:restriction base="xs:decimal">
      <xs:maxInclusive value="9999999999"/>
      <xs:fractionDigits value="3"/>
    </xs:restriction>
    

    The problem is I don't know how to combine them. Can they be combined? Or is there a better way of doing this?