XML验证-命名空间问题

xml namespaces schema

226 观看

1回复

1 作者的声誉

我是XML的新手。这是一项家庭作业。我已经尽力了,但是我无法让实例文档进行验证。我不断收到错误

“找不到元素'sites'的声明。”

我想我可能错误地声明了某些名称空间或schemaLocations。谁能指出我正确的方向?

作业步骤:

  • 在sites.xml文件中,向根站点元素添加名称空间声明,将xs前缀与XML Schema名称空间的URI关联。指定文件的默认名称空间htp://example.com/weekendfunsnacks/sites。将sites.xsd指定为默认名称空间的架构的位置。

  • 在sites.xsd文件的根元素中,将目标名称空间指定为http://example.com/weekendfunsnacks/sites,然后将前缀cc与目标名称空间关联。将前缀sm与命名空间ht tp://www.sitemaps.org/schemas/sitemap/0.9关联。指定默认情况下元素是合格的,并且默认情况下属性是不合格的。

  • 添加代码以从位置ht tp://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd导入ht tp://www.sitemaps.org/schemas/sitemap/0.9命名空间的架构。

  • 在对totalPages元素进行声明之后,立即从ht tp://www.sitemaps.org/schemas/sitemap/0.9命名空间中添加对urlset元素的引用。

实例文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <!--
       Filename:         sites.xml
       Supporting Files: sites.xsd
    -->
    <sites xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://example.com/weekendfunsnacks/sites" xs:noNamespaceSchemaLocation="sites.xsd">
        <site>
            <name>Weekend Fun Snacks</name>
            <totalPages>127</totalPages>
            <urlset xmlns:sm="http://www.sitemaps.org/schemas/sitemap/0.9" sm:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> 
             <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:sm="http://www.sitemaps.org/schemas/sitemap/0.9" sm:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> 
             <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:sm="http://www.sitemaps.org/schemas/sitemap/0.9" sm:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> 
             <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文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="cc:http://example.com/weekendfunsnacks/sites" xmlns:sm="http://www.sitemaps.org/schemas/sitemap/0.9" attributeFormDefault="unqualified" elementFormDefault="qualified">
   <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>
作者: B-Max 的来源 发布者: 2017 年 9 月 15 日

回应 1


0

118033 作者的声誉

名称空间不匹配。模式用于命名空间cc:http://example.com/weekendfunsnacks/sites,但是实例文档在命名空间中http://example.com/weekendfunsnacks/sites

作者: Michael Kay 发布者: 2017 年 9 月 15 日
32x32