元素类型 xs:element 必须由匹配的结束标记 </xs:element> 终止

The element type xs:element must be terminated by the matching end-tag </xs:element>

我的 XML 架构有一条错误消息。首先,这是我的 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<customer xmlns:xsi="http:www.w3.org/2001/XMLSchema"
    xsi:noNamespaceSchemaLocation="customer.xsd">
    <name>
        <first>Bob</first>
        <MI>H</MI>
        <last>Jones</last>
    </name>
    <cnum>007389</cnum>
    <mail_a>
        <line1>12345 Mockingbird Lane</line1>
        <city>Omaha</city>
        <state>NE</state>
        <zip>68123</zip>
        <country>USA</country>
    </mail_a>
    <deliver_a>
        <line1>12345 Mockingbird Lane</line1>
        <city>Omaha</city>
        <state>NE</state>
        <zip>68123</zip>
        <country>USA</country>
    </deliver_a>
    <member_date>1995-10-15</member_date>
    <l_order_date>2003-08-02</l_order_date>
</customer>

这是我的架构:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="customer"/>
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="name"/>
      <xs:element ref="cnum"/>
      <xs:element ref="mail_a"/>
      <xs:element ref="deliver_a"/>
      <xs:element ref="member_date"/>
      <xs:element ref="l_order_date"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="first" type="xs:string"/>
<xs:element name="MI" type="xs:string"/>
<xs:element name="last" type="xs:string"/>
<xs:element name="cnum" type="xs:integer"/>
<xs:element name="line1" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="state" type="xs:string"/>
<xs:element name="zip" type="xs:integer"/>
<xs:element name="country" type="xs:string"/>
<xs:element name="member_date" type="xs:date"/>
<xs:element name="l_order_date" type="xs:date"/>

<xs:element name="name">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="first"/>
      <xs:element ref="MI"/>
      <xs:element ref="last"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

 <xs:element name="mail_a">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="line1"/>
      <xs:element ref="city"/>
      <xs:element ref="state"/>
      <xs:element ref="zip"/>
        <xs:element ref="country"/>
    </xs:sequence>
  </xs:complexType>
 </xs:element>


<xs:element name="deliver_a">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="line1"/>
      <xs:element ref="city"/>
      <xs:element ref="state"/>
      <xs:element ref="zip"/>
      <xs:element ref="country"/>
    </xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:schema>

我得到的错误是

The element type xs:element must be terminated by the matching end-tag </xs:element>

它似乎出于某种原因不喜欢第 55 行(元素 ref="line1"),它上面有一个结束标记。

XML 文件说我缺少 xs:schema 结束标记。好吧,它在那里...... 我使用的编辑器是 oXygen。

有什么想法吗?我一直在摆弄它。

在架构声明之后您立即关闭了客户元素:

不正确的架构元素:

    <xs:element name="customer"/>
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="name"/>
            <xs:element ref="cnum"/>
            <xs:element ref="mail_a"/>
            <xs:element ref="deliver_a"/>
            <xs:element ref="member_date"/>
            <xs:element ref="l_order_date"/>
        </xs:sequence>
    </xs:complexType>
    </xs:element>

正确的架构元素:

    <xs:element name="customer">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="name"/>
            <xs:element ref="cnum"/>
            <xs:element ref="mail_a"/>
            <xs:element ref="deliver_a"/>
            <xs:element ref="member_date"/>
            <xs:element ref="l_order_date"/>
        </xs:sequence>
    </xs:complexType>
    </xs:element>

除了@randominstanceOfLivingThing 提到的 customer 元素声明过早关闭外,您还必须更改

xmlns:xsi="http:www.w3.org/2001/XMLSchema"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

在您的 XML 中,然后您的 XSD 将被发现并且您的 XML 将成功验证。

以下是更正后的完整 XML 和 XSD 文件:

XML

<?xml version="1.0" encoding="UTF-8"?>
<customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="try.xsd">
  <name>
    <first>Bob</first>
    <MI>H</MI>
    <last>Jones</last>
  </name>
  <cnum>007389</cnum>
  <mail_a>
    <line1>12345 Mockingbird Lane</line1>
    <city>Omaha</city>
    <state>NE</state>
    <zip>68123</zip>
    <country>USA</country>
  </mail_a>
  <deliver_a>
    <line1>12345 Mockingbird Lane</line1>
    <city>Omaha</city>
    <state>NE</state>
    <zip>68123</zip>
    <country>USA</country>
  </deliver_a>
  <member_date>1995-10-15</member_date>
  <l_order_date>2003-08-02</l_order_date>
</customer>

XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="customer">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="name"/>
        <xs:element ref="cnum"/>
        <xs:element ref="mail_a"/>
        <xs:element ref="deliver_a"/>
        <xs:element ref="member_date"/>
        <xs:element ref="l_order_date"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="first" type="xs:string"/>
  <xs:element name="MI" type="xs:string"/>
  <xs:element name="last" type="xs:string"/>
  <xs:element name="cnum" type="xs:integer"/>
  <xs:element name="line1" type="xs:string"/>
  <xs:element name="city" type="xs:string"/>
  <xs:element name="state" type="xs:string"/>
  <xs:element name="zip" type="xs:integer"/>
  <xs:element name="country" type="xs:string"/>
  <xs:element name="member_date" type="xs:date"/>
  <xs:element name="l_order_date" type="xs:date"/>
  <xs:element name="name">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="first"/>
        <xs:element ref="MI"/>
        <xs:element ref="last"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="mail_a">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="line1"/>
        <xs:element ref="city"/>
        <xs:element ref="state"/>
        <xs:element ref="zip"/>
        <xs:element ref="country"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="deliver_a">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="line1"/>
        <xs:element ref="city"/>
        <xs:element ref="state"/>
        <xs:element ref="zip"/>
        <xs:element ref="country"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>