XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] Problem using <xsd:all>

"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@lists.xml.org
>>>>>> subscribe: xml-dev-subscribe@lists.xml.org
>>>>>> 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@lists.xml.org
>>>> subscribe: xml-dev-subscribe@lists.xml.org
>>>> 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]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS