XML无法找到元素的声明

时间:2016-12-05 19:38:08

标签: xml

您好我仍然是XML的新手,虽然我确实在寻找这个问题,但我找到的答案并不适合我的问题。当我验证这个xml时,它会出现错误"无法找到元素' sites' &#34 ;.我似乎无法弄清楚到底发生了什么,如果有人能提供帮助,我很好奇。

下面的XML

  <sites xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsi="http://example.com/weekendfunsnacks/site"
      xsi:schemaLocation="http://example.com/weekendfunsnacks/site  sites.xsd">

    <xs:import namespace="http://sitemaps.org/schemas/sitemap/0.9"
         schemaLocation="http://sitemaps.org/schemas/sitemap/0.9sitemap.xsd" />

XSD

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:cc="http://example.com/weekendfunsnacks/sites"
xmlns:sm="http://www.sitemaps.org/schemas/sitemap/0.9"
targetNamespace="http://example.com/weekendfunsnacks/sites"
elementFormDefault="qualified" attributeFormDefault="unqualified">

<xs:element name="sites">
  <xs:complexType>
     <xs:sequence>
        <xs:element name="site" maxOccurs="unbounded" minOccurs="0">
           <xs:complexType>
              <xs:sequence>
                 <xs:element type="xs:string" name="name"/>
                 <xs:element type="xs:byte" name="totalPages"/>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
         </xs:sequence>
      </xs:complexType>
   </xs:element>
</xs:schema>

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你有几个问题:

  • sites无法识别,因为架构声明elementFormDefault="qualified" - 这意味着架构中的元素位于架构的目标命名空间中。 <sites>在全局命名空间中声明了一个元素 - <sites><prefix:sites>不同的元素。创建名称空间前缀并使用它来限定实例文档中的<sites>元素以修复此错误。
  • <sites>未关闭 - 这不是格式良好的XML,假设这是您的整个文档。

回答你的后续评论: <xs:sites>不正确,因为前缀xs被声明为http://www.w3.org/2001/XMLSchema-instance的前缀。 <sites>不在此命名空间中 - 它位于http://example.com/weekendfunsnacks/sites中。因此,要添加新的名称空间前缀,请将属性xmlns:prefix="http://example.com/weekendfunsnacks/sites"添加到sites元素,然后在sites元素上使用 前缀。