4

我设法使用以下方法创建了一个可选的十进制元素:

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

问题是我不知道如何组合它们。它们可以结合起来吗?或者有没有更好的方法来做到这一点?

4

2 回答 2

6

感谢凯文的建议,我想出了这个诀窍:

  <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>
于 2011-10-24T13:47:07.470 回答
0

你必须使用“选择”元素:看这个

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

最好的问候,丹

于 2011-10-24T13:17:21.497 回答