所以我试图为我的代码执行此步骤:
在sites.xml文件中,将名称空间声明添加到根站点元素,将xs前缀与XML Schema名称空间的URI相关联。为文件指定默认名称空间http://example.com/weekendfunsnacks/sites。将sites.xsd指定为默认命名空间的架构位置。但是继续得到这个错误cvc-elt.1:找不到元素'sites'的声明。我很确定我的代码是正确的,但你能看出是否有什么问题。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<sites xmlns:xs="http://www.w3.org/2001/XMLSchema"
xs:schemaLocation="http://example.com/weekendfunsnacks/sites sites.xsd"
xmlns ="http://example.com/weekendfunsnacks/sites">
<site>
<name>Weekend Fun Snacks</name>
<totalPages>127</totalPages>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://example.com/weekendfunsnacks/?cat=58</loc>
</url>
<url>
<loc>http://example.com/weekendfunsnacks/?cat=2</loc>
<lastmod>2017-12-29T06:03:34+00:00</lastmod>
</url>
<url>
<loc>http://example.com/weekendfunsnacks/?cat=15</loc>
<lastmod>2017-12-29T05:24:04+00:00</lastmod>
</url>
<url>
<loc>http://example.com/weekendfunsnacks/?cat=93</loc>
</url>
<url>
<loc>http://example.com/weekendfunsnacks/?cat=55</loc>
</url>
</urlset>
</site>
<site>
<name>Paleo Snacks</name>
<totalPages>52</totalPages>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://example.com/primalsnacks/?cat=6</loc>
</url>
<url>
<loc>http://example.com/primalsnacks/?cat=18</loc>
<lastmod>2017-09-19T17:13:19+00:00</lastmod>
</url>
<url>
<loc>http://example.com/primalsnacks/?cat=54</loc>
<lastmod>2017-09-19T15:24:01+00:00</lastmod>
</url>
<url>
<loc>http://example.com/primalsnacks/?cat=52</loc>
<lastmod>2017-09-28T21:03:11+00:00</lastmod>
</url>
<url>
<loc>http://example.com/primalsnacks/?cat=201</loc>
<lastmod>2017-10-06T07:03:26+00:00</lastmod>
</url>
<url>
<loc>http://example.com/primalsnacks/?cat=11</loc>
</url>
</urlset>
</site>
<site>
<name>Veg Snacks</name>
<totalPages>17</totalPages>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://example.com/vegsnacks/?cat=102</loc>
</url>
<url>
<loc>http://example.com/vegsnacks/?cat=23</loc>
</url>
<url>
<loc>http://example.com/vegsnacks/?cat=1</loc>
</url>
<url>
<loc>http://example.com/vegsnacks/?cat=55</loc>
<lastmod>2017-06-12T08:05:32+00:00</lastmod>
</url>
<url>
<loc>http://example.com/vegsnacks/?cat=201</loc>
</url>
<url>
<loc>http://example.com/vegsnacks/?cat=87</loc>
</url>
</urlset>
</site>
</sites>
也在我的xsd中我只得到这个错误“与元素类型”xs:schema“相关联的属性”cc:targetNamespace“的前缀”cc“没有绑定。”但我也有点困惑的一步,并想知道你能澄清他们问这个步骤:
5.在sites.xsd文件的根元素中,将目标名称空间指定为http://example.com/weekendfunsnacks/sites,然后将前缀cc与目标名称空间相关联。将前缀sm与命名空间http://www.sitemaps.org/schemas/sitemap/0.9.Specify相关联,默认情况下元素是合格的,并且默认情况下这些属性是不合格的。我不知道他们引用了哪个前缀,并且xsd中没有任何属性可以取消限定。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
cc:targetNamespace="http://example.com/weekendfunsnacks/sites"
sm:xmlns ="http://www.sitemaps.org/schemas/sitemap/0.9">
<xs:import namespace="http://www.sitemaps.org/schemas/sitemap/0.9"
schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" />
<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" ref="sitemap"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我可以让您的示例工作(这里假设sites.xsd
在同一目录中。)通过将您的XML文件的顶部更改为
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<sites xmlns:xs="http://www.w3.org/2001/XMLSchema"
xs:schemaLocation="file://sites.xsd" xmlns ="http://example.com/weekendfunsnacks/sites">
这里,xs:schemaLocation
指定XSD的路径,xmlns:
设置默认命名空间。在XSD中,我从sm:
的属性中删除了(错误的)名称空间cc:
和xs:schema
。
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/weekendfunsnacks/sites" xmlns ="http://www.sitemaps.org/schemas/sitemap/0.9">
请参阅这些属性的here for an explanation。因此,应用于您的示例,targetNamespace="http://example.com/weekendfunsnacks/sites"
指定此架构定义的元素来自与XML中的元素相同的命名空间。
应用这些修复程序,XML验证。