0

嗨,当我尝试验证 qti xml 文档时,我一直遇到此错误。这是xml文档:

     <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>

这是验证 xml 的 xsd 片段

       <!-- ******************* -->
            <!-- ** 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>

命名空间“test.xsd”中的元素“conditionvar”在命名空间“test.xsd”中具有无效的子元素“varequal”。预期的可能元素列表:'not'。元素不能包含空格。内容模型为空。元素不能包含空格。内容模型为空。命名空间“test.xsd”中的元素“conditionvar”在命名空间“test.xsd”中具有无效的子元素“not”。预期的可能元素列表:'varequal'。

请问有人可以帮忙吗?这几天我一直在努力解决这个问题。谢谢干杯

找到了答案:

好的,我找到了答案。我已经改变了 conditionvar 的定义。现在它正在工作。谢谢大家的帮助

 <!-- ****************** -->
 <!-- ** 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>

谢谢你的帮助。

4

1 回答 1

0

根据您的架构,在您的<conditionvar>元素中,要么<not><or>要么<other>是预期的。无论是哪种情况,它都可能出现零次或多次(minOccurs="0" maxOccurs="unbounded")。但是,该<choice>元素必须恰好存在一次,minOccurs并且maxOccurs没有为其设置(默认值为1每个)。接下来是零个或多个<varequal>元素。

由于我不确定您打算认为什么是有效的,因此我无法提供明确的更正架构片段,但我认为您实际上想minOccurs="0" maxOccurs="unbounded"为您的<sequence>元素设置 in conditionvarThirdPartyType,如下所示:

<xs:complexType name="conditionvarThirdPartyType">
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
        <xs:choice>
            <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"/>
    </xs:sequence>
</xs:complexType>
于 2012-06-06T13:42:24.067 回答