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

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 文件。

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

我的 Patient Element 中确实有其他运行良好的 Elements。

我已经解决了这个问题,实际上我遗漏了 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" 属性