针对XSD的XML验证:schemaLocation值必须具有偶数个URI

时间:2013-01-29 15:16:24

标签: xml validation xsd xsd-validation

我有一个 blog.xml 和一个 Blog.xsd 来验证XML文件。我正在使用http://www.xmlvalidation.com/?L=0来验证这两个文件,但我收到了错误。

你能告诉我什么是错的吗?

错误: enter image description here

blog.xml:

http://pastebin.com/He3xCxxC(抱歉不得不将其发布到pastebin(由于SO的字数限制)

Blog.xsd:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="blog">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="post" maxOccurs="unbounded" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:string" name="ptitle"/>
              <xs:element type="xs:string" name="psubtitle"/>
              <xs:element type="xs:anyURI" name="image"/>
              <xs:element type="xs:string" name="author"/>
              <xs:element type="xs:string" name="date"/>
              <xs:element type="xs:string" name="par"/>
              <xs:element type="xs:anyURI" name="source"/>
              <xs:element type="xs:string" name="comments"/>
            </xs:sequence>
            <xs:attribute type="xs:byte" name="id" use="optional"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

1 个答案:

答案 0 :(得分:0)

您尚未设置架构的targetNamespace(即“http://www.w3schools.com”)。

<xs:schema attributeFormDefault="unqualified" targetNamespace="http://www.w3schools.com" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

schemalocation必须指定命名空间和架构。这就是schemaLocation中必须包含偶数个元素的原因。

<a:blog xmlns:a="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com ./Blog.xsd">