Создать необязательный десятичный элемент XSD с ограничениями - PullRequest
4 голосов
/ 24 октября 2011

Мне удалось создать необязательный десятичный элемент, используя это:

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

, но мне также нужно добавить ограничения, чтобы, если он был введен, ограничить его максимальной длиной 10 имаксимальное количество 3 десятичных знаков, например.Итак, у меня есть это:

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

Проблема в том, что я не знаю, как их объединить.Могут ли они быть объединены?Или есть лучший способ сделать это?

Ответы [ 2 ]

6 голосов
/ 24 октября 2011

Благодаря предложению Кевина, я придумала вот что:

  <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>
0 голосов
/ 24 октября 2011

Вы должны использовать элемент «выбор»: посмотрите это

<xsd:simpleType name="OptionA">
    <xsd:restriction base="xsd:string">
        <xsd:length value="11" fixed="true"/>
    </xsd:restriction>
</xsd:simpleType>


<xsd:simpleType name="OptionB">
    <xsd:restriction base="xsd:string">
        <xsd:length value="14" fixed="true"/>
        <xsd:whiteSpace value="collapse"/>
    </xsd:restriction>
</xsd:simpleType>


<xsd:complexType name="MyField">
    <xsd:choice>
        <xsd:element name="OptA" type="OptionA" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="OptB" type="OptionB" minOccurs="1" maxOccurs="1"/>
    </xsd:choice>
</xsd:complexType>

С уважением, Дэн

...