Xml XSD复杂类型为空,但can';不要是空的

Xml XSD复杂类型为空,但can';不要是空的,xml,validation,xsd,null,is-empty,Xml,Validation,Xsd,Null,Is Empty,我正在寻找确保在出现以下情况时不会抛出错误的最佳方法: 我有一个由XSD通过以下方式验证的简单类型电话号码: <xs: simpleType name="phone-number"> <xs:restriction Base="xs:token"> <xs:pattern value="\d{9}"/> </xs:restriction> <xs:SimpleType> 该模式不允许空值,仅允许9位值 现在我有一个complexT

我正在寻找确保在出现以下情况时不会抛出错误的最佳方法:

我有一个由XSD通过以下方式验证的简单类型电话号码:

<xs: simpleType name="phone-number">
<xs:restriction Base="xs:token">
<xs:pattern value="\d{9}"/>
</xs:restriction>
<xs:SimpleType>

该模式不允许空值,仅允许9位值

现在我有一个complexType person数据,里面有一个phone number类型的元素

<xs:complexType name="person-data">
        <xs:all>
        <xs:element name="phone-number" type="phone-number" minOccurs="0"/>

确保验证以空值通过(或根本不验证)的最佳方法是什么

当XML文件不包含person数据标记(假定为空)时,问题就会出现,然后验证电话号码类型的更改失败

<xs:pattern value="\d{9}"/>
上述定义在语法上是正确的,允许由9位数字或无字符组成的标记


最后注意:
xs:token
将允许前导和尾随空格;如果您不想要这些,请使用
xs:string

作为一个有趣的问题,世界上哪里使用了9位数的电话号码?不清楚您在问什么。“确保验证以空值通过(或根本不验证)的最佳方法是什么?”。如果缺少person数据元素,那么您向我们展示的模式位是不相关的,因为它们只影响存在时发生的事情。您是说希望允许person数据元素包含包含空内容的phone number元素吗?
<xs:pattern value="\d{9}|"/>
  <xs:simpleType name="phone-number">
    <xs:restriction base="xs:token">
      <xs:pattern value="\d{9}|"/>
    </xs:restriction>
  </xs:simpleType>