Sitemap名称空间错误

时间:2018-01-07 12:10:59

标签: php xml sitemap

我正在尝试为网站制作网站地图,但问题是 当我只使用三个标签时,它显示没有错误

<loc>
<changefreq>
<priority>

当我添加news:name标签时,它会显示红色大框。 &#34;此页面包含以下错误: 第11行第4行的错误:名称空间前缀新闻名称未定义 下面是第一个错误之前的页面呈现。&#34;

任何帮助将不胜感激:

我已经这样做了

header("Content-Type: application/xml; charset=utf-8");

echo '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL; 

echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">' . PHP_EOL;

$base_url = "www.example.com";

while($row = mysqli_fetch_array($sitegrab))
{
    echo '<url>' . PHP_EOL;
    echo '<news:name>'.$row['Website'].'</news:name>' . PHP_EOL;
    echo '<loc>'.$base_url.'</loc>' . PHP_EOL;
    echo '<changefreq>daily</changefreq>' . PHP_EOL;
    echo '<priority>0.5</priority>' . PHP_EOL;
    echo '</url>' . PHP_EOL;
}

echo '</urlset>' . PHP_EOL;

2 个答案:

答案 0 :(得分:1)

news:是名称空间前缀/别名。你需要一个命名空间定义。

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">定义了默认命名空间,名称中没有前缀的元素可以读作{http://www.sitemaps.org/schemas/sitemap/0.9}urlset{http://www.sitemaps.org/schemas/sitemap/0.9}loc,...

name不是&#34;正常&#34;的一个元素。 sitemap命名空间,但是Google News sitemap namespace。您需要<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">之类的内容,其中http://www.google.com/schemas/sitemap-news/0.9name元素所属的名称空间。

Tipp:确保在将XML构建为文本时正确转义变量中的特殊字符。

Tipp:使用XMLWriter API创建XML。

答案 1 :(得分:0)

在网址集中指定xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"。并解决了这个问题。