首页 文章

尝试验证XML到架构时出错

提问于
浏览
0

在下面的模式验证下面的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 回答

  • 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>
    

相关问题