我有一个元素labels
,其minoccurs="0"
和minLength="1"
。
<xs:element name="labels" type="x2x:labels" minOccurs="0" />
<xs:simpleType name="labels">
<xs:restriction>
<xs:simpleType>
<xs:list itemType="xs:token" />
</xs:simpleType>
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
如果未设置labels
,我会收到以下错误:
引起:org.xml.sax.SAXParseException; lineNumber:0; columnNumber:0; cvc-minLength-valid:对于'标签'类型,值''(长度='0'对于minLength'1'而言不是facet-valid。
据我所知,如果minOccurs=0
并且我没有设置元素,则不应该给出任何错误,因为它是可选的。
答案 0 :(得分:1)
minLength&#39; 1&#39;对于类型&#39;标签&#39;。
这是逻辑,如果你没有使用labels
,它在<xs:minLength value="1" />
得到值0,是你的问题。更改它或设置一个值。
如果<xs:restriction>
是字符串,请将<xs:restriction base="xs:string">
更改为<{1}}。
答案 1 :(得分:1)
以下XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:x2x="http://www.example.com/x2x"
targetNamespace="http://www.example.com/x2x">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="labels" type="x2x:labels" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="labels">
<xs:restriction>
<xs:simpleType>
<xs:list itemType="xs:token" />
</xs:simpleType>
<xs:minLength value="0" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
成功验证以下两个XML文档,因为它允许
labels
根据minOccurs="0"
和labels
每个minLength="0"
显示空内容(不是1
,这会导致您收到错误。)labels
<x2x:root/>
labels
<x2x:root>
<labels/>
</x2x:root>
答案 2 :(得分:0)
问题是我发送空元素,但默认情况下它们被设置为空列表。因此存在例外,因为minLen="1"
不接受空元素,并且在设置元素时满足minoccurs="0"
(occurenece为真)。