2016-12-05 166 views
1

您好,我还是比较陌生的XML,虽然我曾考虑过这个问题,但我发现的答案与我的问题不太吻合。当我验证这个XML它出现了错误“无法找到元素'网站的声明'”。我似乎无法弄清楚究竟发生了什么,我很好奇,如果有人能够帮助。XML无法找到元素的声明

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> 

感谢您的帮助!

回答

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元素上使用前缀

+0

你好,感谢您的输入!我已经修复了一些关于代码的事情。我给了''一个前缀。虽然当我给出前缀时,它给了我一个错误,指出“元素”xs:sites“的前缀”xs“没有绑定,是因为我给了它”xs“前缀吗?我被告知 ”In sites.xml文件中,向根网站元素添加一个名称空间声明,将xs前缀与XML Schema名称空间的URI相关联。 “这样做会不对? 对不起,如果这似乎是添加的信息或作为一个无关的问题 –

相关问题