2012-06-06 53 views
0

嗨,我一直嘗試使用qti xml文檔時遇到此錯誤。 這裏是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> 

這裏是XSD的是的Valide的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> 

命名空間 'test.xsd' 元素'conditionvar具有無效子元素 'varequal'在命名空間'test.xsd'中。預期的可能元素列表:'不'。 元素不能包含空格。內容模型爲空。 元素不能包含空格。內容模型爲空。 名稱空間'test.xsd'中的元素'conditionvar'在名稱空間'test.xsd'中具有無效的子元素'not'。預期的可能元素列表:'varequal'。

請任何人都可以幫忙嗎?我一直在努力,現在解決這一問題的幾天.. 感謝 乾杯

找到了答案:

好,我找到了答案。我已經改變了條件變量的定義。現在它正在工作。謝謝大家的幫助

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

感謝您的幫助。

回答

0

根據您的模式,在您的<conditionvar>元素中,預計爲<not><or><other>。無論是哪種情況,都可能發生零次或多次(minOccurs="0" maxOccurs="unbounded")。然而,<choice>元素必須在那裏只有一次,因爲minOccursmaxOccurs未設置爲它(默認值爲每個1)。隨後是零個或多個<varequal>元素。

由於我不知道你打算要考慮有效的什麼,我不能提供一個明確的修正模式片段,但我認爲你真的想設置minOccurs="0" maxOccurs="unbounded"爲您<sequence>元素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> 
+0

感謝您的答案Mapper。這是有效的是: 「conditionvar」可以作爲孩子「varequel」和「不」或「其他」或「或」。和「不」具有在「不」中發生一次的「varequal」 – fisdelom

+0

我的示例性模式片段應該接受'((不是|或|其他),varequal)*'。以明文形式,它接受「」或「」或「」,然後是「」(目前爲止的兩個連續元素),並且這兩個元素的序列可以重複零次或多次。這是你在找什麼?
至於''元素,如果'''元素必須包含一個''元素,請從'notThirdPartyType'類型定義中的元素中移除'minOccurs =「0」maxOccurs =「unbounded」'。 –

+0

我想我沒有解釋清楚。對不起。 例1: Ç 。情況2: 在情況1中,可以 fisdelom

相關問題