- From: Karl Stubsjoen <kstubs@gmail.com>
- Date: Fri, 6 Jan 2012 01:26:44 -0700
- To: xmlschema-dev@w3.org
- Message-ID: <CAHL+Fe3Fjbe4LM6LRvrWK33CUGxwKeDx9_3C5GBB=XULGQO0-Q@mail.gmail.com>
I am kicking myself! Now the real challenge and probably a lot off topic.. I have a base schema class. I have a working schema class. It includes base and certain elements extend base types. I compile the base class with Xsd2Code. I compile the working schema with Xsd2Code with instructions to not compile the included schema rules. The objective: write generic code for the base class and strongly tied code for the working class hoping that I can easily invoke my core business objects that is expecting the base schema code. The problem is there doesn't seem to be support for an xs:extension. There is some other trickiness going on too, but anyone have experience with this? Karl On Jan 5, 2012 7:59 PM, "G. Ken Holman" <gkholman@cranesoftwrights.com> wrote: > At 2012-01-05 17:48 -0700, Karl Stubsjoen wrote: > >> I have an element that extends a complex type but the additional >> attribute with a simple type definition is not being enforced. The >> attribute is enforced, just not it's simple type. Have I defined >> something incorrectly? >> > > I think this is one of those "don't kick yourself" problems. > > Here they are: >> >> <!-- to be used in extension below --> >> <xs:complexType name="ProjXm_QueryType"> >> <xs:sequence> >> <xs:element ref="command"/> >> <xs:element ref="parameters"/> >> <xs:element ref="fields" minOccurs="0"/> >> </xs:sequence> >> </xs:complexType> >> >> >> <!-- extends the above and adds a name attribute of specified simple type >> --> >> <xs:element name="SharedDB"> >> <xs:complexType> >> <xs:complexContent> >> <xs:extension base="ProjXm_QueryType"> >> <xs:attribute name="name" >> type="simpleType_**SharedDBQueries" /> >> > > Here you've just augmented your element with an attribute .... > > </xs:extension> >> </xs:complexContent> >> </xs:complexType> >> </xs:element> >> >> <!-- expected values for name attribute -> >> <xs:simpleType name="simpleType_**SharedDBQueries"> >> <xs:restriction base="xs:NCName"> >> <xs:enumeration value="insert"/> >> <xs:enumeration value="update"/> >> </xs:restriction> >> </xs:simpleType> >> >> >> <!-- sample xml (snipped) --> >> <SharedDB> >> <command> >> <name>insertxx</name><!-- would expect validation to fail here >> --> >> > > ... but you've put an element in your XML for testing. > > <type>StoredProcedure</type> >> <action>NonQuery</action> >> </command> >> <parameters> >> ... >> </SharedDB> >> > > I think if you had <SharedDB name="insertxx"> you would find the problem > NCName flagged. I just copied your exact schema fragment into a bogus > schema below and you'll see the attribute is being validated by both Xerces > and Saxon. > > I hope this helps. > > . . . . . . . . . . . . . Ken > > ~/t/ftemp $ cat karl.xsd > <?xml version="1.0" encoding="UTF-8"?> > <xs:schema xmlns:xs="http://www.w3.org/**2001/XMLSchema<http://www.w3.org/2001/XMLSchema> > " > elementFormDefault="qualified"**> > <!-- to be used in extension below --> > <xs:complexType name="ProjXm_QueryType"> > <xs:sequence> > <xs:element ref="command"/> > <xs:element ref="parameters"/> > <xs:element ref="fields" minOccurs="0"/> > </xs:sequence> > </xs:complexType> > > > <!-- extends the above and adds a name attribute of specified simple type > --> > <xs:element name="SharedDB"> > <xs:complexType> > <xs:complexContent> > <xs:extension base="ProjXm_QueryType"> > <xs:attribute name="name" > type="simpleType_**SharedDBQueries" /> > </xs:extension> > </xs:complexContent> > </xs:complexType> > </xs:element> > > <!-- expected values for name attribute --> > <xs:simpleType name="simpleType_**SharedDBQueries"> > <xs:restriction base="xs:NCName"> > <xs:enumeration value="insert"/> > <xs:enumeration value="update"/> > </xs:restriction> > </xs:simpleType> > > <xs:element name="command"> > <xs:complexType/> > </xs:element> > <xs:element name="fields"> > <xs:complexType/> > </xs:element> > <xs:element name="parameters"> > <xs:complexType/> > </xs:element> > </xs:schema> > ~/t/ftemp $ cat karl.xml > <?xml version="1.0" encoding="UTF-8"?> > <SharedDB name="insert"> > <command/> > <parameters/> > </SharedDB> > ~/t/ftemp $ w3cschema karl.xsd karl.xml > Xerces... > Attempting validating, namespace-aware parse > Parse succeeded (0.131) with no errors and no warnings. > Saxon... > No validation errors > ~/t/ftemp $ cat karlbad1.xml > <?xml version="1.0" encoding="UTF-8"?> > <SharedDB namex="insert"> > <command/> > <parameters/> > </SharedDB> > ~/t/ftemp $ w3cschema karl.xsd karlbad1.xml > Xerces... > Attempting validating, namespace-aware parse > Error:file:///Users/admin/t/**ftemp/karlbad1.xml:2:26:cvc-**complex-type.3.2.2: > Attribute 'namex' is not allowed to appear in element 'SharedDB'. > Parse succeeded (0.135) with 1 error and no warnings. > Saxon... > Validation error on line 2 column 26 of karlbad1.xml: > Attribute @namex is not allowed on element <SharedDB> (See > http://www.w3.org/TR/**xmlschema-1/#cvc-complex-type<http://www.w3.org/TR/xmlschema-1/#cvc-complex-type>clause 3) > No validation errors > ~/t/ftemp $ cat karlbad2.xml > <?xml version="1.0" encoding="UTF-8"?> > <SharedDB name="insertx"> > <command/> > <parameters/> > </SharedDB> > ~/t/ftemp $ w3cschema karl.xsd karlbad2.xml > Xerces... > Attempting validating, namespace-aware parse > Error:file:///Users/admin/t/**ftemp/karlbad2.xml:2:26:cvc-**enumeration-valid: > Value 'insertx' is not facet-valid with respect to enumeration '[insert, > update]'. It must be a value from the enumeration. > Error:file:///Users/admin/t/**ftemp/karlbad2.xml:2:26:cvc-**attribute.3: > The value 'insertx' of attribute 'name' on element 'SharedDB' is not valid > with respect to its type, 'simpleType_SharedDBQueries'. > Parse succeeded (0.146) with 2 errors and no warnings. > Saxon... > Validation error on line 2 column 26 of karlbad2.xml: > FORG0001: Value "insertx" contravenes the enumeration facet "update, > insert" of the type > simpleType_SharedDBQueries (See http://www.w3.org/TR/** > xmlschema-1/#cvc-complex-type<http://www.w3.org/TR/xmlschema-1/#cvc-complex-type>clause 3) > No validation errors > ~/t/ftemp $ > > > -- > Contact us for world-wide XML consulting and instructor-led training > Free 5-hour video lecture: XSLT/XPath 1.0 & 2.0 http://ude.my/uoui9h > Crane Softwrights Ltd. http://www.CraneSoftwrights.**com/x/<http://www.CraneSoftwrights.com/x/> > G. Ken Holman mailto:gkholman@**CraneSoftwrights.com<gkholman@CraneSoftwrights.com> > Google+ profile: https://plus.google.com/**116832879756988317389/about<https://plus.google.com/116832879756988317389/about> > Legal business disclaimers: http://www.CraneSoftwrights.**com/legal<http://www.CraneSoftwrights.com/legal> > > >
Received on Friday, 6 January 2012 08:27:16 UTC