php – 迁移到“Sitemap协议0.9”

我有一个创建站点地图的PHP脚本.但它基于“Sitemap Protocol 0.84”.

我想更改代码以生成有效的“Sitemap Protocol 0.9”输出.

在0.84和0.9之间进行了哪些更改?

最佳答案
这是0.8和0.9站点地图和站点索引版本之间差异的完整输出.

$diff -u sitemap0.8.xml sitemal0.9.xml

--- sitemap0.8.xsd  2015-12-19 12:40:36.558949286 -0300
+++ sitemap.xsd 2015-12-19 12:40:55.958939049 -0300
@@ -1,85 +1,86 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.google.com/schemas/sitemap/0.84" xmlns="http://www.google.com/schemas/sitemap/0.84">
-<xsd:annotation>
-  <xsd:documentation>
-    XML Schema for Sitemap files.
-    Last Modifed 2005-05-24
-  </xsd:documentation>
-</xsd:annotation>
-
-<xsd:element name="urlset">
-  <xsd:annotation>
-    <xsd:documentation>
-      Container for a set of up to 50,000 document elements.
-      This is the root element of the XML file.
-    </xsd:documentation>
-  </xsd:annotation>
- <xsd:complexType>
-   <xsd:sequence>
-     <xsd:element ref="url" maxOccurs="unbounded"/>
-   </xsd:sequence>
- </xsd:complexType>
-</xsd:element>
-
-<xsd:element name="url">
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" elementFormDefault="qualified">
   <xsd:annotation>
     <xsd:documentation>
-      Container for the data needed to describe a document to crawl.
+      XML Schema for Sitemap files.
+      Last Modifed 2008-03-26
     </xsd:documentation>
   </xsd:annotation>
- <xsd:complexType>
-   <xsd:all>
-     <xsd:element ref="loc"/>
-     <xsd:element ref="lastmod" minOccurs="0"/>
-     <xsd:element ref="changefreq" minOccurs="0"/>
-     <xsd:element ref="priority" minOccurs="0"/>
-   </xsd:all>
- </xsd:complexType>
-</xsd:element>

-<xsd:element name="loc">
-  <xsd:annotation>
-    <xsd:documentation>
-      REQUIRED: The location URI of a document.
-      The URI must conform to RFC 2396 (http://www.ietf.org/rfc/rfc2396.txt).
-    </xsd:documentation>
-  </xsd:annotation>
-  <xsd:simpleType>
+  <xsd:element name="urlset">
+    <xsd:annotation>
+      <xsd:documentation>
+        Container for a set of up to 50,000 document elements.
+        This is the root element of the XML file.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="strict"/>
+        <xsd:element name="url" type="tUrl" maxOccurs="unbounded"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="tUrl">
+    <xsd:annotation>
+      <xsd:documentation>
+        Container for the data needed to describe a document to crawl.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="loc" type="tLoc"/>
+      <xsd:element name="lastmod" type="tLastmod" minOccurs="0"/>
+      <xsd:element name="changefreq" type="tChangeFreq" minOccurs="0"/>
+      <xsd:element name="priority" type="tPriority" minOccurs="0"/>
+      <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="strict"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:simpleType name="tLoc">
+    <xsd:annotation>
+      <xsd:documentation>
+        REQUIRED: The location URI of a document.
+        The URI must conform to RFC 2396 (http://www.ietf.org/rfc/rfc2396.txt).
+      </xsd:documentation>
+    </xsd:annotation>
     <xsd:restriction base="xsd:anyURI">
       <xsd:minLength value="12"/>
       <xsd:maxLength value="2048"/>
     </xsd:restriction>
   </xsd:simpleType>
-</xsd:element> 

-<xsd:element name="lastmod">
-  <xsd:annotation>
-    <xsd:documentation>
-      OPTIONAL: The date the document was last modified. The date must conform
-      to ISO 8601 (http://www.w3.org/TR/NOTE-datetime). Example: 2005-05-10
-      Lastmod may also contain a timestamp. Example: 2005-05-10T17:33:30+08:00
-    </xsd:documentation>
-  </xsd:annotation>
-  <xsd:simpleType>
-    <xsd:restriction base="xsd:string">
-      <xsd:minLength value="10"/>
-      <xsd:maxLength value="25"/>
-    </xsd:restriction>
+  <xsd:simpleType name="tLastmod">
+    <xsd:annotation>
+      <xsd:documentation>
+        OPTIONAL: The date the document was last modified. The date must conform
+        to the W3C DATETIME format (http://www.w3.org/TR/NOTE-datetime).
+        Example: 2005-05-10
+        Lastmod may also contain a timestamp.
+        Example: 2005-05-10T17:33:30+08:00
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:union>
+      <xsd:simpleType>
+        <xsd:restriction base="xsd:date"/>
+      </xsd:simpleType>
+      <xsd:simpleType>
+        <xsd:restriction base="xsd:dateTime"/>
+      </xsd:simpleType>
+    </xsd:union>
   </xsd:simpleType>
-</xsd:element> 

-<xsd:element name="changefreq">
-  <xsd:annotation>
-    <xsd:documentation>
-      OPTIONAL: Indicates how frequently the content at a particular URL is
-      likely to change. The value "always" should be used to describe
-      documents that change each time they are accessed. The value "never"
-      should be used to describe archived URLs. Please note that web
-      crawlers may not necessarily crawl pages marked "always" more often.
-      Consider this element as a friendly suggestion and not a command.
-    </xsd:documentation>
-  </xsd:annotation>
-  <xsd:simpleType>
+  <xsd:simpleType name="tChangeFreq">
+    <xsd:annotation>
+      <xsd:documentation>
+        OPTIONAL: Indicates how frequently the content at a particular URL is
+        likely to change. The value "always" should be used to describe
+        documents that change each time they are accessed. The value "never"
+        should be used to describe archived URLs. Please note that web
+        crawlers may not necessarily crawl pages marked "always" more often.
+        Consider this element as a friendly suggestion and not a command.
+      </xsd:documentation>
+    </xsd:annotation>
     <xsd:restriction base="xsd:string">
       <xsd:enumeration value="always"/>
       <xsd:enumeration value="hourly"/>
@@ -90,26 +91,23 @@
       <xsd:enumeration value="never"/>
     </xsd:restriction>
   </xsd:simpleType>
-</xsd:element> 

-<xsd:element name="priority">
-  <xsd:annotation>
-    <xsd:documentation>
-      OPTIONAL: The priority of a particular URL relative to other pages
-      on the same site. The value for this element is a number between
-      0.0 and 1.0 where 0.0 identifies the lowest priority page(s).
-      The default priority of a page is 0.5. Priority is used to select
-      between pages on your site. Setting a priority of 1.0 for all URLs
-      will not help you, as the relative priority of pages on your site
-      is what will be considered.
-    </xsd:documentation>
-  </xsd:annotation>
-  <xsd:simpleType>
+  <xsd:simpleType name="tPriority">
+    <xsd:annotation>
+      <xsd:documentation>
+        OPTIONAL: The priority of a particular URL relative to other pages
+        on the same site. The value for this element is a number between
+        0.0 and 1.0 where 0.0 identifies the lowest priority page(s).
+        The default priority of a page is 0.5. Priority is used to select
+        between pages on your site. Setting a priority of 1.0 for all URLs
+        will not help you, as the relative priority of pages on your site
+        is what will be considered.
+      </xsd:documentation>
+    </xsd:annotation>
     <xsd:restriction base="xsd:decimal">
       <xsd:minInclusive value="0.0"/>
       <xsd:maxInclusive value="1.0"/>
     </xsd:restriction>
   </xsd:simpleType>
-</xsd:element> 

 </xsd:schema>
\ No newline at end of file

$diff -u siteindex0.8.xml siteindex.xml

--- siteindex0.8.xsd    2015-12-19 12:40:44.782945495 -0300
+++ siteindex.xsd   2015-12-19 12:40:51.318941905 -0300
@@ -1,69 +1,72 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.google.com/schemas/sitemap/0.84" xmlns="http://www.google.com/schemas/sitemap/0.84">
-<xsd:annotation>
-  <xsd:documentation>
-    XML Schema for Sitemap index files.
-    Last Modifed 2005-05-24
-  </xsd:documentation>
-</xsd:annotation>
-
-<xsd:element name="sitemapindex">
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" elementFormDefault="qualified">
   <xsd:annotation>
     <xsd:documentation>
-      Container for a set of up to 1,000 sitemap URLs.
-      This is the root element of the XML file.
+      XML Schema for Sitemap index files.
+      Last Modifed 2009-04-08
     </xsd:documentation>
   </xsd:annotation>
-  <xsd:complexType>
+
+  <xsd:element name="sitemapindex">
+    <xsd:annotation>
+      <xsd:documentation>
+        Container for a set of up to 50,000 sitemap URLs.
+        This is the root element of the XML file.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="strict"/>
+        <xsd:element name="sitemap" type="tSitemap" maxOccurs="unbounded"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="tSitemap">
+    <xsd:annotation>
+      <xsd:documentation>
+        Container for the data needed to describe a sitemap.
+      </xsd:documentation>
+    </xsd:annotation>
     <xsd:sequence>
-      <xsd:element ref="sitemap" maxOccurs="1000"/>
+      <xsd:element name="loc" type="tLocSitemap"/>
+      <xsd:element name="lastmod" type="tLastmodSitemap" minOccurs="0"/>
+      <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="strict"/>
     </xsd:sequence>
   </xsd:complexType>
-</xsd:element>
-
-<xsd:element name="sitemap">
-  <xsd:annotation>
-    <xsd:documentation>
-      Container for the data needed to describe a sitemap.
-    </xsd:documentation>
-  </xsd:annotation>
-  <xsd:complexType>
-    <xsd:all>
-      <xsd:element ref="loc"/>
-      <xsd:element ref="lastmod" minOccurs="0"/>
-    </xsd:all>
-  </xsd:complexType>
-</xsd:element>

-<xsd:element name="loc">
-  <xsd:annotation>
-    <xsd:documentation>
-      REQUIRED: The location URI of a sitemap.
-      The URI must conform to RFC 2396 (http://www.ietf.org/rfc/rfc2396.txt).
-    </xsd:documentation>
-  </xsd:annotation>
-  <xsd:simpleType>
+  <xsd:simpleType name="tLocSitemap">
+    <xsd:annotation>
+      <xsd:documentation>
+        REQUIRED: The location URI of a sitemap.
+        The URI must conform to RFC 2396 (http://www.ietf.org/rfc/rfc2396.txt).
+      </xsd:documentation>
+    </xsd:annotation>
     <xsd:restriction base="xsd:anyURI">
       <xsd:minLength value="12"/>
       <xsd:maxLength value="2048"/>
     </xsd:restriction>
   </xsd:simpleType>
-</xsd:element> 

-<xsd:element name="lastmod">
-  <xsd:annotation>
-    <xsd:documentation>
-      OPTIONAL: The date the sitemap was last modified. The date must conform
-      to ISO 8601 (http://www.w3.org/TR/NOTE-datetime). Example: 2005-05-10
-      Lastmod may also contain a timestamp. Example: 2005-05-10T17:33:30+08:00
-    </xsd:documentation>
-  </xsd:annotation>
-  <xsd:simpleType>
-    <xsd:restriction base="xsd:string">
-      <xsd:minLength value="10"/>
-      <xsd:maxLength value="25"/>
-    </xsd:restriction>
+  <xsd:simpleType name="tLastmodSitemap">
+    <xsd:annotation>
+      <xsd:documentation>
+        OPTIONAL: The date the document was last modified. The date must conform
+        to the W3C DATETIME format (http://www.w3.org/TR/NOTE-datetime).
+        Example: 2005-05-10
+        Lastmod may also contain a timestamp.
+        Example: 2005-05-10T17:33:30+08:00
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:union>
+      <xsd:simpleType>
+        <xsd:restriction base="xsd:date"/>
+      </xsd:simpleType>
+      <xsd:simpleType>
+        <xsd:restriction base="xsd:dateTime"/>
+      </xsd:simpleType>
+    </xsd:union>
   </xsd:simpleType>
-</xsd:element> 
+

 </xsd:schema>
\ No newline at end of file

转载注明原文:php – 迁移到“Sitemap协议0.9” - 代码日志