Hi I keep having this error while I try to valide a qti xml document.
Here is the xml document:
<respcondition title="Correct" >
<conditionvar>
<not>
<varequal respident="1">A</varequal>
</not>
<varequal respident="1">B</varequal>
<not>
<varequal respident="1">C</varequal>
</not>
<varequal respident="1">D</varequal>
</conditionvar>
<setvar action="Set">1</setvar>
<displayfeedback linkrefid="Correct"/>
</respcondition>
Here is the fragment of xsd that valide the xml
<!-- ******************* -->
<!-- ** respcondition ** -->
<!-- ******************* -->
<xs:complexType name="respconditionThirdPartyType">
<xs:sequence>
<xs:element name="conditionvar" type="conditionvarThirdPartyType" maxOccurs="1"/>
<xs:element name="setvar" type="setvarThirdPartyType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="displayfeedback" type="displayfeedbackThirdPartyType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="title" type="xs:string"/>
</xs:complexType>
<!-- ****************** -->
<!-- ** conditionvar ** -->
<!-- ****************** -->
<xs:complexType name="conditionvarThirdPartyType">
<xs:sequence>
<xs:choice>
<xs:element name="not" type="notThirdPartyType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="or" type="orThirdPartyType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="other" type="otherThirdPartyType" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:element name="varequal" type="varequalThirdPartyType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- ********* -->
<!-- ** not ** -->
<!-- ********* -->
<xs:complexType name="notThirdPartyType">
<xs:sequence>
<xs:element name="varequal" type="varequalThirdPartyType" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- ************** -->
<!-- ** varequal ** -->
<!-- ************** -->
<xs:complexType name="varequalThirdPartyType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="respident" type="xs:string" use="optional"/>
<xs:attribute name="case" default="No">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Yes"/>
<xs:enumeration value="No"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
The element ‘conditionvar’ in namespace ‘test.xsd’ has invalid child element ‘varequal’ in namespace ‘test.xsd’. List of possible elements expected: ‘not’.
The element cannot contain white space. Content model is empty.
The element cannot contain white space. Content model is empty.
The element ‘conditionvar’ in namespace ‘test.xsd’ has invalid child element ‘not’ in namespace ‘test.xsd’. List of possible elements expected: ‘varequal’.
Please can anyone help? I’ve been trying to fix this for for a few days now..
Thanks
Cheers
Found the answer:
Ok I’ve found the answer. i’ve changed conditionvar definition. Now it’s working. Thanks you all for your help
<!-- ****************** -->
<!-- ** conditionvar ** -->
<!-- ****************** -->
<xs:complexType name="conditionvarThirdPartyType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="not" type="notThirdPartyType" />
<xs:element name="or" type="orThirdPartyType" />
<xs:element name="other" type="otherThirdPartyType" />
</xs:choice>
<xs:element name="varequal" type="varequalThirdPartyType" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
Thanks for your help.
According to your schema, in your
<conditionvar>element, either<not>or<or>or<other>is expected. Whichever it is, it may occur zero or more times (minOccurs="0" maxOccurs="unbounded"). However, the<choice>element must be there exactly once, asminOccursandmaxOccursaren’t set for it (default value is1for each). This is followed by zero or more<varequal>elements.As I am not sure what you intend to consider valid, I cannot provide a definitive corrected schema fragment, but I think that you actually want to set
minOccurs="0" maxOccurs="unbounded"for your<sequence>element inconditionvarThirdPartyType, as in so: