XSD XML Spy
Hi,
I have a similar problem that Chetan Cudasama exposed in this forum.
In this case I've used explicitly the instructions given in the document "Building Server-Side XML Schema Validation" written in the otn.oracle.com web page.
As the user above explained, I've written a schema that XML Spy validates correctly, but when I try to validate this with the XSDParser class I receive the following exception:
<Line 1, Column 7837>: XSD-2015: (Error) Invalid facet 'pattern' in element 'simpleType'
<Line 1, Column 10528>: XSD-2014: (Error) Invalid method of derivation 'restriction'
<Line 1, Column 10439>: XSD-2026: (Error) Invalid attribute 'default' in element 'ape2'
<Line 1, Column 18671>: XSD-2015: (Error) Invalid facet 'pattern' in element 'simpleType'
<Line 1, Column 18609>: XSD-2209: (Error) Duplicated definition for: 'nomb'
oracle.xml.parser.schema.XSDException: Invalid facet 'pattern' in element 'simpleType'
The schema that I need to use is defined as shown below:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- edited with XML Spy v4.1 (http://www.xmlspy.com) by Joaquin (Bull) -->
<!--W3C Schema generated by XML Spy v3.5 NT (http://www.xmlspy.com)-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xsd:simpleType name="nif">
<xsd:restriction base="xsd:string">
<xsd:minLength value="6"/>
<xsd:maxLength value="9"/>
<xsd:pattern value="\d{8}[T,R,W,A,G,M,Y,F,P,D,X,B,N,J,Z,S,Q,V,H,L,C,K,E,I]?"/>
<xsd:pattern value="[X]\d{8}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="acce">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="bloq">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="copo">
<xsd:restriction base="xsd:string">
<xsd:minLength value="5"/>
<xsd:maxLength value="5"/>
<xsd:pattern value="\d{5}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="hect">
<xsd:restriction base="xsd:decimal">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="9"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="kilo">
<xsd:restriction base="xsd:decimal">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="999"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="nume">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="5"/>
<xsd:minLength value="1"/>
<xsd:pattern value="\d{1,5}"/>
<xsd:pattern value="S/N"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="piso">
<xsd:restriction base="xsd:string">
<xsd:pattern value="B"/>
<xsd:pattern value="ENT"/>
<xsd:pattern value="\d{1,3}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="prta">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="4"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="acre">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence id="acreProv" minOccurs="0">
<xsd:element name="acpr">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="2"/>
<xsd:maxLength value="2"/>
<xsd:enumeration value="PN"/>
<xsd:enumeration value="AC"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="fecha" type="xsd:date"/>
</xsd:sequence>
<xsd:element name="nuss" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="14"/>
<xsd:maxLength value="14"/>
<xsd:pattern value="\d{2}/\d{8}/\d{2}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="tibe" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="1"/>
<xsd:enumeration value="T"/>
<xsd:enumeration value="B"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:sequence>
<xsd:sequence>
<xsd:element name="finTip">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="finCod">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="modCod">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:maxInclusive value="99"/>
<xsd:minInclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
<xsd:sequence minOccurs="0">
<xsd:element name="rasSit">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="9"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="rasReg">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="9"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:sequence>
<xsd:element name="nase" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="12"/>
<xsd:maxLength value="14"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="fecha" type="xsd:date"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="asig">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="cen">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="codi">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:minInclusive value="1"/>
<xsd:maxInclusive value="99999"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="nomb" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="area" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="20"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="zona" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="20"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="clm">
<xsd:simpleType>
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="0300000"/>
<xsd:maxInclusive value="4699999"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ccm">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="2"/>
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="fasg" type="xsd:date"/>
<xsd:element name="pro" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence minOccurs="0">
<xsd:element name="nif" type="nif"/>
<xsd:element name="noap">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="75"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
<xsd:sequence minOccurs="0">
<xsd:element name="codi">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:maxInclusive value="99"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="desc">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
<xsd:element name="cpa" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="7"/>
<xsd:pattern value="\d{1,7}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="baja">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence>
<xsd:element name="codi">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2"/>
<xsd:pattern value="\p{Lu}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="desc">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
<xsd:element name="feba" type="xsd:date"/>
<xsd:element name="fede" type="xsd:date"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="expe">
<xsd:complexType>
<xsd:attribute name="numero" type="xsd:string"/>
<xsd:attribute name="mda" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="inci">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="tipo">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="AVISO"/>
<xsd:enumeration value="GRAVE"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="codi" type="xsd:string"/>
<xsd:element name="desc" type="xsd:string"/>
<xsd:element name="url" type="xsd:anyURI" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="iden">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nsip">
<xsd:simpleType>
<xsd:restriction base="xsd:int">
<xsd:maxExclusive value="99999999"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="mos">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="mos_codi" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="3"/>
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="nomb">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="20"/>
<xsd:pattern value="[A,E,I,O,U,Y,B,C,G,D,F,G,H,J,K,L,M,N,Q,P,Q,R,S,T,V,W,X,Z,\s,-]{1,20}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ape1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="25"/>
<xsd:pattern value="[A,E,I,O,U,Y,B,C,G,D,F,G,H,J,K,L,M,N,Q,P,Q,R,S,T,V,W,X,Z,\s,-]{1,25}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ape2" default=".">
<xsd:complexType>
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A,E,I,O,U,Y,B,C,G,D,F,G,H,J,K,L,M,N,Q,P,Q,R,S,T,V,W,X,Z,\s,-]{1,25}"/>
<xsd:pattern value="."/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="nif" type="nif" minOccurs="0"/>
<xsd:element name="fena" type="xsd:date" minOccurs="0"/>
<xsd:element name="sexo">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="1"/>
<xsd:enumeration value="H"/>
<xsd:enumeration value="M"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="pana" type="pai"/>
<xsd:sequence minOccurs="0">
<xsd:element name="prna" type="prv" minOccurs="0"/>
<xsd:element name="lona" type="loc" minOccurs="0"/>
</xsd:sequence>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="loca">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence>
<xsd:element name="dirRes">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prv" type="prv"/>
<xsd:element name="loc" type="loc"/>
<xsd:element name="calle" type="cal"/>
<xsd:choice>
<xsd:sequence>
<xsd:element name="nume" type="nume"/>
<xsd:element name="acce" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="acce"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="bloq" type="bloq" minOccurs="0"/>
<xsd:element name="piso" type="piso" minOccurs="0"/>
<xsd:element name="prta" type="prta" minOccurs="0"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element name="kilo" type="kilo"/>
<xsd:element name="hect" type="hect" minOccurs="0"/>
</xsd:sequence>
</xsd:choice>
<xsd:element name="copo" type="copo" minOccurs="0"/>
<xsd:sequence minOccurs="0">
<xsd:element name="area" type="arzo"/>
<xsd:element name="zona" type="arzo"/>
</xsd:sequence>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="dirPos" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prv" type="prv"/>
<xsd:element name="loc" type="loc"/>
<xsd:choice>
<xsd:sequence>
<xsd:element name="calle" type="cal"/>
<xsd:choice>
<xsd:sequence>
<xsd:element name="nume" type="nume"/>
<xsd:element name="acce" type="acce" minOccurs="0"/>
<xsd:element name="bloq" type="bloq" minOccurs="0"/>
<xsd:element name="piso" type="piso" minOccurs="0"/>
<xsd:element name="prta" type="prta" minOccurs="0"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element name="kilo" type="kilo"/>
<xsd:element name="hect" type="hect" minOccurs="0"/>
</xsd:sequence>
</xsd:choice>
<xsd:element name="copo" type="copo" minOccurs="0"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element name="apdo">
<xsd:complexType>
<xsd:attribute name="valor" type="xsd:decimal" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="copo" type="copo"/>
</xsd:sequence>
</xsd:choice>
<xsd:sequence minOccurs="0">
<xsd:element name="area" type="arzo"/>
<xsd:element name="zona" type="arzo"/>
</xsd:sequence>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:element name="tele" minOccurs="0" maxOccurs="2">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="9"/>
<xsd:maxLength value="9"/>
<xsd:pattern value="\d{9}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="tarj">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="sit">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="codi">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="A1"/>
<xsd:enumeration value="D0"/>
<xsd:enumeration value="D5"/>
<xsd:enumeration value="D6"/>
<xsd:enumeration value="D7"/>
<xsd:enumeration value="D8"/>
<xsd:enumeration value="E0"/>
<xsd:enumeration value="E1"/>
<xsd:enumeration value="E2"/>
<xsd:enumeration value="P0"/>
<xsd:enumeration value="P1"/>
<xsd:enumeration value="P2"/>
<xsd:enumeration value="P3"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="fecha" type="xsd:date"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="tta">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="codi">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2"/>
<xsd:pattern value="[A-Z]{1,2}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="fecha" type="xsd:date" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="usu">
<xsd:sequence>
<xsd:element ref="iden"/>
<xsd:element ref="loca" minOccurs="0"/>
<xsd:element ref="acre" minOccurs="0"/>
<xsd:element ref="asig" minOccurs="0"/>
<xsd:element ref="tarj" minOccurs="0"/>
<xsd:element ref="expe" minOccurs="0"/>
<xsd:element ref="baja" minOccurs="0"/>
<xsd:element ref="inci" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="usuarios">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="usu" type="usu" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="arzo">
<xsd:sequence>
<xsd:element name="codi">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="99"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="nomb" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="prv">
<xsd:sequence>
<xsd:element name="codi">
<xsd:simpleType>
<xsd:restriction base="xsd:short">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="99"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="nomb" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="loc">
<xsd:sequence>
<xsd:element name="codi">
<xsd:simpleType>
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="1"/>
<xsd:maxInclusive value="99999"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="nomb" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="pai">
<xsd:sequence>
<xsd:element name="codi">
<xsd:simpleType>
<xsd:restriction base="xsd:short">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="999"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="nomb" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="cal">
<xsd:choice>
<xsd:sequence>
<xsd:element name="tiv" type="xsd:string" minOccurs="0"/>
<xsd:element name="codi" type="xsd:short"/>
<xsd:element name="nomb" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
<xsd:sequence>
<xsd:element name="tiv" type="xsd:string" minOccurs="0"/>
<xsd:element name="nomb">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
<xsd:pattern value="\p{Lu}{1,50}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:choice>
</xsd:complexType>
</xsd:schema>
Sorry about the length of this, but I need it so.
Does anybody know am I missing?
I will be grateful of any help about this.
Thank you.