[Home] [By Thread] [By Date] [Recent Entries]
"Looking at your instance I see that you have a wrong URL for the schema location:" This was the problem. It was made more complicated due to the design of the wrapper library around the JAXB validation code. I now have a correct schema that validates the document as expected. Many thanks George and Dennis for your help. :-) Thanks, Paul George Cristian Bina wrote: > Hi Paul, > > I added a few element declarations to the schema to make it valid as > below: > > <?xml version="1.0"?> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > targetNamespace="http://www.intient.com/irukandji" > xmlns:tasklist="http://www.intient.com/irukandji" > elementFormDefault="qualified" attributeFormDefault="unqualified"> > > <xsd:element name="tasklist"> > <xsd:complexType> > <xsd:sequence> > <xsd:element ref="tasklist:prerequisites" minOccurs="0" > maxOccurs="1" /> > <xsd:element ref="tasklist:task" minOccurs="1" > maxOccurs="unbounded" /> > <xsd:choice> > <xsd:sequence> > <xsd:element ref="tasklist:success" /> > <xsd:element ref="tasklist:failure" /> > </xsd:sequence> > <xsd:sequence> > <xsd:element ref="tasklist:failure" /> > <xsd:element ref="tasklist:success" /> > </xsd:sequence> > </xsd:choice> > </xsd:sequence> > <xsd:attribute name="id" type="xsd:string" use="required" /> > </xsd:complexType> > </xsd:element> > > <xsd:element name="prerequisites"/> > <xsd:element name="task"/> > <xsd:element name="success"/> > <xsd:element name="failure"/> > > > </xsd:schema> > > I named it test.xsd and created a test.xml in the same folder with the > following content: > > <?xml version="1.0"?> > <tasklist xmlns="http://www.intient.com/irukandji" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://www.intient.com/irukandji test.xsd" > id="tasklist-loadTest1"> > > <task id="dns-lookup"> > <command id="1" type="native"> > <name>nslookup</name> > <argument genericlist-id="1"></argument> > <success> > <rule operator="regexp"> > <stdout>(.+)Address: (.+)</stdout> > </rule> > </success> > <failure> > <rule operator="true" /> > </failure> > </command> > <success> > <rule operator="equals"> > <result command-id="1" success="true" /> > </rule> > </success> > <failure> > <rule operator="true" /> > </failure> > </task> > <success> > <rule operator="equals"> > <result task-id="dns-lookup" success="true" /> > </rule> > </success> > <failure> > <rule operator="true" /> > </failure> > <failure> > <rule operator="true" /> > </failure> > <failure> > <rule operator="true" /> > </failure> > </tasklist> > > When I validate that with Xerces for instance I get: > SystemID: C:\george\test\p6\test.xml > Location: 37:4 > Description: cvc-complex-type.2.4.d: Invalid content was found > starting with element 'failure'. No child element is expected at this > point. > URL: http://www.w3.org/TR/xmlschema-1/#cvc-complex-type > > Looking at your instance I see that you have a wrong URL for the > schema location: > > file://C:/Documents and > Settings/Admin/workspace/itsml/bin/com/intient/spx/resolver/irukandji-istml-tasklist.xsd" > > > In this case C: is considered the host, you need file:///C:/...etc and > you also need to have the spaces URL-escaped because the value of the > schemaLocation attribute is a list of pairs of the form > namespace schemaLocation > all separated by whitespaces, so for instance "and" is considered the > second namespace and > "Settings/Admin/workspace/itsml/bin/com/intient/spx/resolver/irukandji-istml-tasklist.xsd" > is considered the location of the second schema file. > > Therefore it looks like you are not performing validation against the > schema, probably the document is only checked to be wellformed. > > Best Regards, > George > --------------------------------------------------------------------- > George Cristian Bina - http://aboutxml.blogspot.com/ > <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger > http://www.oxygenxml.com > > > Paul Stepowski wrote: >> Hi George >> >> Here's the example I'm testing with. >> >> Excerpt from XSD with your suggested mods: >> >> ---snip--- >> <?xml version="1.0"?> >> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >> targetNamespace="http://www.intient.com/irukandji" >> xmlns:tasklist="http://www.intient.com/irukandji" >> elementFormDefault="qualified" attributeFormDefault="unqualified"> >> >> <xsd:element name="tasklist"> >> <xsd:complexType> >> <xsd:sequence> >> <xsd:element ref="tasklist:prerequisites" minOccurs="0" >> maxOccurs="1" /> >> <xsd:element ref="tasklist:task" minOccurs="1" >> maxOccurs="unbounded" /> >> <xsd:choice> >> <xsd:sequence> >> <xsd:element ref="tasklist:success" /> >> <xsd:element ref="tasklist:failure" /> >> </xsd:sequence> >> <xsd:sequence> >> <xsd:element ref="tasklist:failure" /> >> <xsd:element ref="tasklist:success" /> >> </xsd:sequence> >> </xsd:choice> >> </xsd:sequence> >> <xsd:attribute name="id" type="xsd:string" use="required" /> >> </xsd:complexType> >> </xsd:element> >> ... >> </xsd:schema> >> ---snip--- >> >> Complete XML document I'm validating against the XSD (Note that it >> contains multiple <failure> tags, which should fail): >> >> ---snip--- >> <?xml version="1.0"?> >> <tasklist xmlns="http://www.intient.com/irukandji" >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> xsi:schemaLocation="http://www.intient.com/irukandji >> file://C:/Documents and >> Settings/Admin/workspace/itsml/bin/com/intient/spx/resolver/irukandji-istml-tasklist.xsd" >> >> id="tasklist-loadTest1"> >> >> <task id="dns-lookup"> >> <command id="1" type="native"> >> <name>nslookup</name> >> <argument genericlist-id="1"></argument> >> <success> >> <rule operator="regexp"> >> <stdout>(.+)Address: (.+)</stdout> >> </rule> >> </success> >> <failure> >> <rule operator="true" /> >> </failure> >> </command> >> <success> >> <rule operator="equals"> >> <result command-id="1" success="true" /> >> </rule> >> </success> >> <failure> >> <rule operator="true" /> >> </failure> >> </task> >> <success> >> <rule operator="equals"> >> <result task-id="dns-lookup" success="true" /> >> </rule> >> </success> >> <failure> >> <rule operator="true" /> >> </failure> >> <failure> >> <rule operator="true" /> >> </failure> >> <failure> >> <rule operator="true" /> >> </failure> >> </tasklist> >> ---snip--- >> >> This XML document is successfully validated using JAXB. >> >> Any ideas? >> >> Thanks, >> >> Paul >> >> >> George Cristian Bina wrote: >>> Hi Paul, >>> >>> The code fragment I posted allows only >>> >>> <success/> >>> <failure/> >>> >>> and >>> >>> <failure/> >>> <success/> >>> >>> How did you get to the conclusion that it allows multiple instances >>> of failure? It may be possible that you are embedding that code >>> fragment in another particle that can appear multiple times. A short >>> but complete schema should help to identify exactly what is wrong, >>> in general you will identify that yourself while creating the short >>> but complete example. >>> >>> Best Regards, >>> George >>> --------------------------------------------------------------------- >>> George Cristian Bina - http://aboutxml.blogspot.com/ >>> <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger >>> http://www.oxygenxml.com >>> >>> >>> Paul Stepowski wrote: >>>> Hi George, >>>> >>>> This seems closer but still allows multiple <success> or <failure> >>>> tags. >>>> >>>> That is, I require either: >>>> >>>> <tasklist> >>>> <success/> >>>> <failure/> >>>> </tasklist> >>>> >>>> or: >>>> >>>> <tasklist> >>>> <failure/> >>>> <success/> >>>> </tasklist> >>>> >>>> But your suggested schema still allows: >>>> >>>> <tasklist> >>>> <success/> >>>> <failure/> >>>> <failure/> >>>> <failure/> >>>> <failure/> >>>> </tasklist> >>>> >>>> etc. >>>> >>>> I've tried experimenting with various combinations of minOccurs and >>>> maxOccurs but I still can't nail this. >>>> >>>> Thanks, >>>> >>>> Paul >>>> >>>> >>>> George Cristian Bina wrote: >>>>> Hi Paul, >>>>> >>>>> Use a choice >>>>> (success,failure)|(failure,success) >>>>> >>>>> in XML Schema: >>>>> >>>>> <xsd:choice> >>>>> <xsd:sequence> >>>>> <xsd:element ref="tasklist:success"/> >>>>> <xsd:element ref="tasklist:failure"/> >>>>> </xsd:sequence> >>>>> <xsd:sequence> >>>>> <xsd:element ref="tasklist:failure"/> >>>>> <xsd:element ref="tasklist:success"/> >>>>> </xsd:sequence> >>>>> </xsd:choice> >>>>> >>>>> Best Regards, >>>>> George >>>>> --------------------------------------------------------------------- >>>>> George Cristian Bina - http://aboutxml.blogspot.com/ >>>>> <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger >>>>> http://www.oxygenxml.com >>>>> >>>>> >>>>> Paul Stepowski wrote: >>>>>> Dennis Sterzenbach wrote: >>>>>>> Hi Paul! >>>>>>> >>>>>>> Paul Stepowski wrote: >>>>>>> <snip /> >>>>>>>> <xsd:element name="task"> >>>>>>>> <xsd:complexType> >>>>>>>> <xsd:sequence> >>>>>>>> <xsd:element ref="tasklist:prerequisites" minOccurs="0" >>>>>>>> maxOccurs="1" /> >>>>>>>> <xsd:all> >>>>>>>> <xsd:element ref="tasklist:success" minOccurs="1" >>>>>>>> maxOccurs="1" /> >>>>>>>> <xsd:element ref="tasklist:failure" minOccurs="1" >>>>>>>> maxOccurs="1" /> >>>>>>>> </xsd:all> >>>>>>>> </xsd:sequence> >>>>>>>> <xsd:attribute name="id" type="xsd:string" use="required" /> >>>>>>>> </xsd:complexType> >>>>>>>> </xsd:element> >>>>>>> <snip /> >>>>>>>> "The content of 'sequence' must match (annotation?, (element | >>>>>>>> group | choice | >>>>>>>> sequence | any)*). A problem was found starting at: all." >>>>>>>> >>>>>>>> According to the w3c, all is a valid tag. Can anyone shed some >>>>>>>> light on this error? >>>>>>> These are valid tags, but unfortunately not in that order. >>>>>>> As far as I know you can't use <xsd:all> inside a sequence: >>>>>>> >>>>>>> "Parent elements: group, complexType, restriction (both >>>>>>> simpleContent >>>>>>> and complexContent), extension (both simpleContent and >>>>>>> complexContent)" >>>>>>> >>>>>>> Best regards >>>>>>> -- Dennis Sterzenbach >>>>>> >>>>>> Thanks Dennis, >>>>>> >>>>>> My next question is then, can I achieve the same effect with a >>>>>> different syntax? >>>>>> I need to specify <success> AND <failure> both occuring once >>>>>> each (in any >>>>>> order). >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Paul >>>>>> >>>>>> _______________________________________________________________________ >>>>>> >>>>>> >>>>>> XML-DEV is a publicly archived, unmoderated list hosted by OASIS >>>>>> to support XML implementation and development. To minimize >>>>>> spam in the archives, you must subscribe before posting. >>>>>> >>>>>> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/ >>>>>> Or unsubscribe: xml-dev-unsubscribe@l... >>>>>> subscribe: xml-dev-subscribe@l... >>>>>> List archive: http://lists.xml.org/archives/xml-dev/ >>>>>> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php >>>>>> >>>> >>>> _______________________________________________________________________ >>>> >>>> >>>> XML-DEV is a publicly archived, unmoderated list hosted by OASIS >>>> to support XML implementation and development. To minimize >>>> spam in the archives, you must subscribe before posting. >>>> >>>> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/ >>>> Or unsubscribe: xml-dev-unsubscribe@l... >>>> subscribe: xml-dev-subscribe@l... >>>> List archive: http://lists.xml.org/archives/xml-dev/ >>>> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php >>>> >>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] |

Cart



