元素'programmeType'具有'type'属性和'anonymous type'子元素。元素中只允许其中一个

时间:2012-10-16 05:38:03

标签: xml-parsing xsd

M坚持这个错误请帮帮我.....

我的.xml文件是

<?xml version="1.0"?>
<addresses xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation='Lsc.xsd'>
<lscApplicationform>
 <programmes>
  <course>MBA(12 months)</course>
 </programmes>
 <personalDetails>
 <surname>Sagar</surname>
 <firstname>Shiva</firstname>
 <gender>Male</gender>
 <placeofbirth>Ulhasnagar</placeofbirth>
 <nationality>Indian</nationality>
 <countryofbirth>India</countryofbirth>
 <dateofbirth>1993-06-03</dateofbirth>
</personalDetails>
<permanentAddress>
</permanentAddress>
</lscApplicationform>
</addresses>

我的xsd文件是

<?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
     <xs:element name="lscApplicationForm">
      <xs:complexType>
       <xs:sequence>
        <xs:element name="programmeType" type="xs:string">
               <xs:simpleType>
         <xs:restriction base="xs:string">
          <xs:enumeration value="MBA( months)"/>
          <xs:enumeration value="MBA( months)"/>
          <xs:enumeration value="MSc InformationTechnology"/>
          <xs:enumeration value="Msc InternationalHospitalityManagement"/>
          <xs:enumeration value="Msc InternationalTourismManagement"/>
          <xs:enumeration value="BA(Hons)BusinessStudies"/>
          <xs:enumeration value="BSc(Hons)Computing"/>
          <xs:enumeration value="PhD/ProfessionaDoctorate"/>
          <xs:enumeration value="Other(pleasespecify)"/>
         </xs:restriction>
           </xs:simpleType>




                <xs:element name="personalDetails" type="xs:string"/>
        <xs:complexType>
         <xs:sequence>
          <xs:element name="Surname" type="xs:string"/>
           <xs:simpleType>
            <xs:restriction base="xs:string">
             <xs:length value="100"/>
            </xs:restriction>
           </xs:simpleType>


          <xs:element name="Gender"/>
           <xs:simpleType>
            <xs:restriction base="xs:string">
             <xs:pattern value="male|female"/>
            </xs:restriction>
           </xs:simpleType>


          <xs:element name="placeOfBirth" type="xs:string"/>
          <xs:element name="Nationality" type="xs:string"/>
          <xs:element name="CountryOfBirth" type="xs:string"/>
          <xs:element name="dob" type="xs:date"/>
         </xs:sequence>    
        </xs:complexType>
        <xs:element name="permanentAddress" type="xs:string"/>
               <xs:complexType> 
               </xs:complexType> 
</xs:element>              
</xs:sequence>
</xs:complexType>      
</xs:element>
    </xs:schema>

还有一个错误 s4s-elt-must-match.1:'programmeType'的内容必须匹配(注释?,(simpleType | complexType)?,(unique | key | keyref)*))。从:element。

开始发现了一个问题

提前致谢....

2 个答案:

答案 0 :(得分:3)

XSD架构文档的XML语法非常复杂,使用能够理解XSD语法并可以随时验证的编辑器确实很有用。无论是否有这样的编辑器,您可能都希望花一些时间查看XSD上的基本教程。

您的基本问题(以不同形式多次出现)是您的架构文档不遵守架构文档的语法约束。

  • 您的一些元素声明有type="xs:string",它指定元素的类型为xs:string,而 还有xs:simpleType或{ {1}}个子节点,它指定元素的类型是不同的。在任何元素声明中,使用 xs:complexType属性类型定义子(simpleType或complexType),而不是两者。

  • 你的一些元素声明被标记为空元素,后面紧跟一个typesimpleType元素,我猜这个元素是元素声明的子元素,而不是后面的兄弟元素

一旦解决了这些问题,您的架构文档在语法上就可以了,然后您可以将注意力转移到让它说出您想要说的内容上。

答案 1 :(得分:1)

试试这个:

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

  <xs:element name="addresses">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="lscApplicationform"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="lscApplicationform">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="programmes">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="course">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:enumeration value="MBA( months)"/>
                    <xs:enumeration value="MBA( months)"/>
                    <xs:enumeration value="MSc InformationTechnology"/>
                    <xs:enumeration value="Msc InternationalHospitalityManagement"/>
                    <xs:enumeration value="Msc InternationalTourismManagement"/>
                    <xs:enumeration value="BA(Hons)BusinessStudies"/>
                    <xs:enumeration value="BSc(Hons)Computing"/>
                    <xs:enumeration value="PhD/ProfessionaDoctorate"/>
                    <xs:enumeration value="Other(pleasespecify)"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="personalDetails">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Surname">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:length value="100"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>


              <xs:element name="Gender">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:pattern value="male|female"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>

              <xs:element name="placeOfBirth" type="xs:string"/>
              <xs:element name="Nationality" type="xs:string"/>
              <xs:element name="CountryOfBirth" type="xs:string"/>
              <xs:element name="dob" type="xs:date"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>

        <xs:element name="permanentAddress" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>