您好我仍然是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>
感谢您的帮助!
答案 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
元素上使用 前缀。