我的 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 行(element ref="line1"),该行上有一个结束标记。
XML 文件显示我缺少 xs:schema 结束标记。嗯,就在那里…… 我使用的编辑器是oXygen。
有什么想法吗?我一直在摆弄它。
最佳答案
除了 @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>
关于xml - 元素类型 xs :element must be terminated by the matching end-tag </xs:element>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38756993/