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