我正在寻找确保在遇到以下情况时不会引发错误的最佳方法:
我有一个简单的电话号码,由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)时出现问题 - 然后验证在电话号码类型上失败
答案 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
。