XSD复杂类型为null,但内部的简单类型不能为空

时间:2017-10-04 07:23:24

标签: 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位数值。

现在我有一个complexType person-data,里面有一个phone-number类型的元素。

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

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

当XML文件不包含person-data标记(将其为null)时出现问题 - 然后验证在电话号码类型上失败

1 个答案:

答案 0 :(得分:0)

更改

stdin

<xs:pattern value="\d{9}"/>

允许9位数字或空字符串。

另请注意,XML和XSD区分大小写,因此您必须对<xs:pattern value="\d{9}|"/> 的定义进行一些其他更改:

phone-number

上述定义在语法上是正确的,并允许包含9位数字或无字符的标记。

最后注释: <xs:simpleType name="phone-number"> <xs:restriction base="xs:token"> <xs:pattern value="\d{9}|"/> </xs:restriction> </xs:simpleType> 将允许前导和尾随空格;如果您不想要那些,请使用xs:token