尝试验证XML到架构时出错

时间:2014-02-03 21:11:36

标签: xml xsd

在将以下XML文件验证到下面的架构时,我收到以下错误。

错误:元素“{http://www.w3.org/2001/XMLSchema}序列”:内容无效。预期是(注释?,(元素|组|选择|序列|任何)*)。第7行

XML文件:

<?xml version="1.0"?>
<!DOCTYPE Employees>
<Employees xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="lab4_obj1.xsd">
  <Employee>
    <First>John</First>
    <Last>Smith</Last>
    <Phone>1-800-123-4567</Phone>
  </Employee>
</Employees>

模式:

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

<xs:element name="Employees">
  <xs:complexType>
     <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="Employee"/>
           <xs:complexType>
              <xs:sequence>
                 <xs:element name="First"/>
                 <xs:element name="Last"/>
                 <xs:element name="Phone"/>
              </xs:sequence>
           </xs:complexType>
        </xs:sequence>      
     </xs:complexType>
  </xs:element>

</xs:schema>

1 个答案:

答案 0 :(得分:1)

对于初学者来说,在定义复杂类型之前你是自我结束Employee元素(因为你有一个/在“Employee”之后)

你应该在ComplexType之后结束它(见下文)。

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://Scratch.Employees" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://Scratch.Employees" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Employees">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="Employee">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="First" type="xs:string" />
              <xs:element name="Last" type="xs:string" />
              <xs:element name="Phone" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

其次,XML示例似乎是指DTD,但您的架构是XSD。 因此,您需要删除它,并且可能会引用正确的名称空间。

<?xml version="1.0"?>
<ns0:Employees xmlns:ns0="http://Scratch.Employees">
  <Employee>
    <First>John</First>
    <Last>Smith</Last>
    <Phone>1-800-123-4567</Phone>
  </Employee>
</ns0:Employees>
相关问题