繁体   English   中英

XDocument.Validate返回的Element具有无效的子元素

[英]XDocument.Validate returning The Element has invalid child element

今天在尝试使用XSD验证XML时遇到了一个非常奇怪的问题。 查看我提供的XML,它看起来是正确的。

我从XDocument.Validate收到的错误是:元素' APPOINTMENTS '具有无效的子元素' APPOINTMENT '

这是我正在使用的XML:

<PATIENTS>
    <PATIENT>
        <APPOINTMENTS>
            <APPOINTMENT>
                <UserInitials>123</UserInitials>
                <Date>Some Date</Date>
                <ApptTime>14:30</ApptTime>
                <Duration>00:15</Duration>
                <AppointmentStatus>Complete</AppointmentStatus>
                <Notes>Some note</Notes>
                <TreatmentType>Some Appoinment type</TreatmentType>
            </APPOINTMENT>
        </APPOINTMENTS>
    </PATIENT>
</PATIENTS>

我要验证的XSD文件:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
 <xs:element name="PATIENTS">
   <xs:complexType>
     <xs:sequence>
       <xs:element name="PATIENT" minOccurs="1">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="APPOINTMENTS" minOccurs="0">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="APPOINTMENT" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="UserInitials" type="xs:string" minOccurs="1"></xs:element>
                        <xs:element name="Date" type="xs:string" minOccurs="1"></xs:element>
                        <xs:element name="ApptTime" type="xs:string" minOccurs="1"></xs:element>
                        <xs:element name="Duration" type="xs:string" minOccurs="1"></xs:element>
                        <xs:element name="AppointmentStatus" type="xs:string" minOccurs="1"></xs:element>
                        <xs:element name="LegacyTypeID" type="xs:string" minOccurs="0"></xs:element>
                        <xs:element name="AClinic" minOccurs="0"></xs:element>
                        <xs:element name="Notes" type="xs:string" minOccurs="0"></xs:element>
                        <xs:element name="Info" type="xs:string" minOccurs="0"></xs:element>
                        <xs:element name="TreatmentType" type="xs:string" minOccurs="0" default="Examination"></xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
             </xs:element>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
   </xs:complexType>
 </xs:element>
</xs:schema>

我不太了解发生了什么,看来Appointments和Appointments标记符合XSD文件。

除非XSD文件存在问题,否则XML文档的其余部分看起来都是正确的。

我的患者元素中确实有其他运行良好的元素。

我已经解决了这个问题,但实际上我缺少向您展示的XML部分。

我应该包括以下内容:

<?xml version="1.0" encoding="utf-8" ?>
<PATIENTS>
  <PATIENT>
    <APPOINTMENTS>
      <APPOINTMENT>
        <UserInitials>123</UserInitials>
        <Date>Some Date</Date>
        <ApptTime>14:30</ApptTime>
        <Duration>00:15</Duration>
        <AppointmentStatus>Complete</AppointmentStatus>
        <Notes>Some note</Notes>
        <TreatmentType>Some Appoinment type</TreatmentType>
      </APPOINTMENT>
      <APPOINTMENT>
        <UserInitials>123</UserInitials>
        <Date>Some Date</Date>
        <ApptTime>14:30</ApptTime>
        <Duration>00:15</Duration>
        <AppointmentStatus>Complete</AppointmentStatus>
        <Notes>Some note</Notes>
        <TreatmentType>Some Appoinment type</TreatmentType>
      </APPOINTMENT>
      <APPOINTMENT>
        <UserInitials>123</UserInitials>
        <Date>Some Date</Date>
        <ApptTime>14:30</ApptTime>
        <Duration>00:15</Duration>
        <AppointmentStatus>Complete</AppointmentStatus>
        <Notes>Some note</Notes>
        <TreatmentType>Some Appoinment type</TreatmentType>
      </APPOINTMENT>
    </APPOINTMENTS>
  </PATIENT>
</PATIENTS>

我实际上在APPOINTMENT元素内有多个记录,这将要求XSD文件在APPOINTMENT元素上具有以下内容:

<xs:element name="APPOINTMENT" minOccurs="0" maxOccurs="unbounded">

我缺少maxOccurs="unbounded"属性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM