Валидация XSD, непроходит maxOccurs=»unbounded»
Использую такой XSD-файл:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .xml.geshi_code {font-family:monospace;} .xml.geshi_code .imp {font-weight: bold; color: red;} .xml.geshi_code .es0 {color: #000099; font-weight: bold;} .xml.geshi_code .br0 {color: #66cc66;} .xml.geshi_code .sy0 {color: #66cc66;} .xml.geshi_code .st0 {color: #ff0000;} .xml.geshi_code .sc-1 {color: #808080; font-style: italic;} .xml.geshi_code .sc0 {color: #00bbdd;} .xml.geshi_code .sc1 {color: #ddbb00;} .xml.geshi_code .sc2 {color: #339933;} .xml.geshi_code .sc3 {color: #009900;} .xml.geshi_code .re0 {color: #000066;} .xml.geshi_code .re1 {color: #000000; font-weight: bold;} .xml.geshi_code .re2 {color: #000000; font-weight: bold;} .xml.geshi_code span.xtra { display:block; }
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="baseType">
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="additional">
<xsd:complexType>
<xsd:all>
<xsd:element name="class" type="baseType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="modules">
<xsd:complexType>
<xsd:all>
<xsd:element name="module" type="baseType" minOccurs="1" maxOccurs="unbounded"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
При его валидации выдаётся ошибка:
The 'maxOccurs' attribute is invalid. The value 'unbounded' is invalid according to its datatype 'Union'. The Enumeration constraint failed. (13:71)
Не понимаю, как исправить, чтобы maxOccurs="unbounded" прокатывал.
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .xml.geshi_code {font-family:monospace;} .xml.geshi_code .imp {font-weight: bold; color: red;} .xml.geshi_code .es0 {color: #000099; font-weight: bold;} .xml.geshi_code .br0 {color: #66cc66;} .xml.geshi_code .sy0 {color: #66cc66;} .xml.geshi_code .st0 {color: #ff0000;} .xml.geshi_code .sc-1 {color: #808080; font-style: italic;} .xml.geshi_code .sc0 {color: #00bbdd;} .xml.geshi_code .sc1 {color: #ddbb00;} .xml.geshi_code .sc2 {color: #339933;} .xml.geshi_code .sc3 {color: #009900;} .xml.geshi_code .re0 {color: #000066;} .xml.geshi_code .re1 {color: #000000; font-weight: bold;} .xml.geshi_code .re2 {color: #000000; font-weight: bold;} .xml.geshi_code span.xtra { display:block; }
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="baseType">
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="additional">
<xsd:complexType>
<xsd:all>
<xsd:element name="class" type="baseType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="modules">
<xsd:complexType>
<xsd:all>
<xsd:element name="module" type="baseType" minOccurs="1" maxOccurs="unbounded"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
При его валидации выдаётся ошибка:
The 'maxOccurs' attribute is invalid. The value 'unbounded' is invalid according to its datatype 'Union'. The Enumeration constraint failed. (13:71)
Не понимаю, как исправить, чтобы maxOccurs="unbounded" прокатывал.
1 ответов
Оказывается, вся загвоздка была в xsd:all, там допустимое количество повторений всего [0,1], не больше. Так что пришлось использоваться xsd:sequence.