<xs:element name="featureTests">
<xs:complexType>
<xs:sequence>
<xs:element name="test" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="status">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="not run"/>
<xs:enumeration value="passed"/>
<xs:enumeration value="failed"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="summary" type="xs:string"/>
<xs:sequence>
<xs:element name="step" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
我正在使用上面的XSD来验证我的xml文件,除了status
标记枚举限制之外,它们都可以正常工作。
如果我这样做:
<status>
not run <!--OR passed OR failed-->
</status>
验证失败,说它必须包含[未运行,通过,失败]
你能告诉我哪里出错了吗?
由于
答案 0 :(得分:2)
出现问题是因为xml doc中的空格/制表符围绕枚举值,即使用“not run”而不是“not run”。
为了解决这个问题,我更改了XSD文件以使用令牌类型而不是字符串类型来删除前导和尾随空白字符:
<xs:restriction base="xs:token">
<xs:enumeration value="not run"/>
<xs:enumeration value="passed"/>
<xs:enumeration value="failed"/>
</xs:restriction>