W3 XML演示未验证 - 验证根目录没有可用的匹配全局声明

时间:2014-03-20 12:59:39

标签: xml validation xsd

我正在尝试学习如何在xml架构中使用扩展。我采用了这个例子(例子2:http://www.w3schools.com/schema/el_extension.asp

myschema.xsd

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

<xs:element name="employee" type="fullpersoninfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType> 

</xs:schema>

并制作了一个演示xml数据文件:

data.xml中

<?xml version="1.0"?>

<personinfo>
    <firstname>John</firstname>
    <lastname>Doe</lastname>
</personinfo>

但是当我尝试验证它时,我得到了:

xmllint --schema myschema.xsd data.xml
<?xml version="1.0"?>
<personinfo>
    <firstname>John</firstname>
    <lastname>Doe</lastname>
</personinfo>
data.xml:3: element personinfo: Schemas validity error : Element 'personinfo': No matching global declaration available for the validation root.
data.xml fails to validate

任何人都可以解释我做错了吗?

1 个答案:

答案 0 :(得分:1)

您的XML文件有一个名为personinfo的根元素,但您的架构不包含具有该名称的元素的声明。它包含一个名为personinfo类型的声明,但唯一的元素声明适用于employee(类型为fullpersoninfo)。< / p>

针对当前架构验证的示例XML文件类似于

<?xml version="1.0"?>
<employee>
    <firstname>John</firstname>
    <lastname>Doe</lastname>
    <address>5 Somewhere Street</address>
    <city>Anytown</city>
    <country>Australia</country>
</employee>