Tengo una comprensión elemental de XML Schema. Esta es básicamente mi primera interacción con ellos de manera seria y tengo algunos problemas. He leído en XSD en google y todo se ve al alza y hacia arriba con este archivo.¿Hay algo radicalmente incorrecto con este esquema XML?
<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>
Así es como estoy cargarlo:
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schemaXSD = schemaFactory.newSchema(new File ("test.xsd"));
Estoy recibiendo una excepción como la siguiente:
org.xml.sax.SAXParseException: src-element.3: El elemento 'propiedad' tiene tanto un atributo 'tipo' como un 'anony mous type 'niño. Solo uno de está permitido para un elemento.
Gracias por la ayuda SO! ¡También se agradece cualquier consejo general sobre leer/usar esquemas creados por otros! : D
Hay una serie de entornos de desarrollo que puede detectar este tipo de error en el momento de la edición (es decir, antes de enviar el XSD a su propio código). [eclipse J2E] (http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/heliossr1), por ejemplo, mostrará pequeños marcadores rojos en el margen derecho con los mismos mensajes de error que citó)) –