XSD - 允许元素类型为整数OR空

lea*_*nne 18 xsd element

我需要能够将一个简单的元素类型设置为整数,但允许它也为空.如果此示例为空且空白字段不是整数,则会发送错误.我怎么能绕过这个?

<xsd:element name="weight" type="xsd:integer"/>
Run Code Online (Sandbox Code Playgroud)

小智 24

您需要做的是为同一元素分配限制并在它们上建立联合,如下例所示:

<xs:element name="job_code">
  <xs:simpleType>
    <xs:union>
      <xs:simpleType>
        <xs:restriction base='xs:string'>
          <xs:length value="0"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base='xs:integer' />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

通过使用此限制,您可以告诉xml验证允许任何整数值,并允许该元素为空.


小智 8

我们可以通过创建一个SimpleType来实现这一点

<xs:simpleType name="NullOrInteger">
    <xs:restriction base="xs:string">
         <xs:pattern value="\d*|\s{0}" />
    </xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)

添加NullOrInteger作为要限制整数或空值的类型.

例如:

<xs:element name="null_or_int" type="NullOrInteger" />
Run Code Online (Sandbox Code Playgroud)


par*_*fal 4

您需要将“nillable”属性设置为 true:

<xsd:element name="weight" type="xsd:integer" nillable="true"/>
Run Code Online (Sandbox Code Playgroud)

请参阅XML 架构入门