I have only an elementary understanding of XML Schema. This is basically my first interaction with them in any serious way and I’m having some issues. I’ve read up on XSDs on google and everything looks on the up and up with this file.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="credits">
<xs:complexType>
<xs:sequence>
<xs:element ref="property" maxOccurs="16" minOccurs="13" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="property" type="xs:string">
<xs:complexType>
<xs:sequence>
<xs:element ref="item" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute ref="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="item" type="xs:string"/>
<xs:attribute name="name" type="xs:string">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="example1"/>
<xs:enumeration value="example2"/>
<xs:enumeration value="example3"/>
<xs:enumeration value="example4"/>
<xs:enumeration value="example5"/>
<xs:enumeration value="example6"/>
<xs:enumeration value="example7"/>
<xs:enumeration value="example8"/>
<xs:enumeration value="example9"/>
<xs:enumeration value="example10"/>
<xs:enumeration value="example11"/>
<xs:enumeration value="example12"/>
<xs:enumeration value="example13"/>
<xs:enumeration value="example14"/>
<xs:enumeration value="example15"/>
<xs:enumeration value="example16"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:schema>
Here’s how I’m loading it:
SchemaFactory schemaFactory = SchemaFactory.newInstance( XMLConstants.W3C_XML_SCHEMA_NS_URI );
Schema schemaXSD = schemaFactory.newSchema( new File ( "test.xsd" ) );
I’m getting an exception like the following:
org.xml.sax.SAXParseException:
src-element.3: Element ‘property’ has
both a ‘type’ attribute and a
‘anonymous type’ child. Only one of
these is allowed for an element.
Thanks for the help SO! Any general advice on reading/using schemas created by others is also appreciated! 😀
This bit is your problem code:
either remove the type on the outer element (
type="xs:string"), or remove the anonymous inner complexType element (<xs:complexType> ... </xs:complexType>)