我正在尝试为网站制作网站地图,但问题是 当我只使用三个标签时,它显示没有错误
<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;
答案 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.9
是name
元素所属的名称空间。
Tipp:确保在将XML构建为文本时正确转义变量中的特殊字符。
Tipp:使用XMLWriter API创建XML。
答案 1 :(得分:0)
在网址集中指定xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"
。并解决了这个问题。