2017-06-06 66 views
0

人將根標記。每個人都會輸入姓名,年齡,性別,地址。一個人可以是學生或工作人員。學生將有滾動,標準和部分。如果工作人員,然後staffid和主題。每個學生都必須有以下入口 - doorno,街道,城市和州。 管理員已經想出了一個XML文檔。例外:cvc-complex-type.2.4.b:元素'person'的內容不完整。預計有{{staff}'之一

這裏是我的XML:

<?xml version="1.0" encoding="utf-8"?> 
<persons> 
    <person> 
     <name>Tom</name> 
     <age>11</age> 
     <gender>M</gender> 
     <address> 
      <doorno>27</doorno> 
      <street>Tony's road, koramangala</street> 
      <city>Bangalore</city> 
      <state>Karnataka</state> 
     </address> 
     <student> 
      <rollno>10</rollno> 
      <standard>6</standard> 
      <section>A</section> 
     </student> 
    </person> 
    <person> 
     <name>Shiny</name> 
     <age>12</age> 
     <gender>F</gender> 
     <address> 
      <doorno>10</doorno> 
      <street>Main Bazar, Madiwala</street> 
      <city>Bangalore</city> 
      <state>Karnataka</state> 
     </address> 
     <staff> 
      <staffid>123</staffid> 
      <subject>Maths</subject> 
     </staff> 
    </person> 
</persons> 

和我的XSD:

<?xml version="1.0" encoding="UTF-8"?> 

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 

    <xs:element name="persons"> 
     <xs:complexType> 
     <xs:sequence> 
      <xs:element name="person" maxOccurs="unbounded"> 
       <xs:complexType> 
       <xs:sequence> 
        <xs:element name="name" type="xs:string"/> 
        <xs:element name="age" type="xs:integer"/> 
        <xs:element name="gender" type="xs:string"/> 
        <xs:element name="address"> 
         <xs:complexType> 
         <xs:sequence> 
          <xs:element name="doorno" type="xs:integer"/> 
          <xs:element name="street" type="xs:string"/> 
          <xs:element name="city" type="xs:string"/> 
          <xs:element name="state" type="xs:string"/> 
         </xs:sequence> 
         </xs:complexType> 
        </xs:element> 



        <xs:element name="student"> 
         <xs:complexType> 
         <xs:sequence> 
          <xs:element name="rollno" type="xs:integer"/> 
          <xs:element name="standard" type="xs:integer"/> 
          <xs:element name="section" type="xs:string"/> 
         </xs:sequence> 
         </xs:complexType> 
        </xs:element> 

        <xs:element name="staff"> 
         <xs:complexType> 
         <xs:sequence> 
          <xs:element name="staffid" type="xs:integer"/> 
          <xs:element name="subject" type="xs:string"/> 
         </xs:sequence> 
         </xs:complexType> 
        </xs:element> 

       </xs:sequence> 
       </xs:complexType> 
      </xs:element> 

     </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

</xs:schema> 

蔭新的XML和學習者。

錯誤:

Exception: cvc-complex-type.2.4.b: The content of element 'person' is not comple te. One of '{staff}' is expected.  

回答

1

你的XSD說,應該有<xs:element name="student">其次<xs:element name="staff">,而是你想有「無論是學生或工作人員」。對於這個XSD有另一個元素,<xs:choice>

<xs:choice> 
    <xs:element name="student"> 
     <xs:complexType> 
     <xs:sequence> 
      <xs:element name="rollno" type="xs:integer"/> 
      <xs:element name="standard" type="xs:integer"/> 
      <xs:element name="section" type="xs:string"/> 
     </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

    <xs:element name="staff"> 
     <xs:complexType> 
     <xs:sequence> 
      <xs:element name="staffid" type="xs:integer"/> 
      <xs:element name="subject" type="xs:string"/> 
     </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:choice> 

請還檢查了另一個答案:How to specify in an XML schema that either one of two fields must be present?

+0

謝謝@Lyth! –

相關問題