Подскажите, пожалуйста, как исправить эту ошибку парсинга.
Детали валидации YML файла
--------------------------------------------------------------------------------
http://www.XXX.ru/market.phpОпределена кодировка: windows-1251 (строка 0, столбец 0)
Дата из файла: 2010-12-08 21:16 (строка 3, столбец 113)
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: No character data is allowed by content model (строка 71, столбец 13)
т.е это эти строки
строка 70 $tb_product.product_id,
строка 71
строка 72 $tb_product.product_name,
Т.е. Яндекс дальше 3 этапа не пропустил.
На сайте
http://www.XXX.ru/market.php (во время тестирования, с включенной опцией вывода ошибок) выводились все категории, а потом стояло сообщение на английском что-то вроде "проверьте правильность запроса к БД"... - Query failed : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM
(jos_vm_product_category_xref
RIGHT JOIN (jos_vm_product_price
' at line 22
А когда был запрещен вывод ошибок появлялось такое сообщение на английском по адресу
http://www.XXX.ru/market.php:
XML-страница не может быть отображена
Следующие Tags не закрыты: yml_catalog, shop, offers. Ошибка при обработке ресурса '
http://www.ххх.ru
<?php
//БД, наименование магазина, адрес
www.XXX.ru $hostname = "localhost";
$username = "XXX";
$password = "XXX";
$dbName = "XXX";
$category = "jos_vm_category";
$category_xref = "jos_vm_category_xref";
$userstable = "jos_vm_product";
$pricetable = "jos_vm_product_price";
$product_category_xref = "jos_vm_product_category_xref";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die(mysql_error());
//mysql_query('set names utf8');
echo"<?xml version='1.0' encoding='windows-1251'?>\n";
echo"<!DOCTYPE yml_catalog SYSTEM 'shops.dtd'>\n";
echo"<yml_catalog date=\"";
echo date('Y-m-d H:i');
echo"\">\n";
echo"<shop>\n";
//Здесь название магазина
echo"<name>XXX</name>\n";
echo"<company>XXX</company>\n";
echo"<url>
http://www.XXX.ru</url>\n";
echo"<currencies>\n";
echo"<currency id=\"RUR\" rate=\"1\"/>\n";
echo"</currencies>\n";
echo"<categories>\n";
$query_cat = "SELECT * FROM $category_xref";
$res_cat = mysql_query($query_cat) or die(mysql_error());
$rw=1;
while ($row_cat=mysql_fetch_array($res_cat)) {
$cat_parent_id=$row_cat['category_parent_id'];
$cat_child_id=$row_cat['category_child_id'];
$query2 = "SELECT category_name FROM $category WHERE category_id=".$row_cat['category_child_id'];
$res_cat1 = mysql_query($query2) or die(mysql_error());
$name_cat=mysql_fetch_array($res_cat1);
$cat_name=$name_cat['category_name'];
if ($cat_parent_id==0) {
echo"<category id=\"".$cat_child_id."\">".$cat_name."</category>\n";
}
else {
echo"<category id=\"".$cat_child_id."\" parentId=\"".$cat_parent_id."\">".$cat_name."</category>\n";
}
$rw++;
}
echo"</categories>\n";
echo"<offers>\n";
$tb_product = "jos_vm_product";
$tb_category = "jos_vm_category";
$tb_product_category_xref = "jos_vm_product_category_xref";
$tb_price = "jos_vm_product_price";
$query = "
SELECT
$tb_product.product_id,
$tb_product.product_name,
$tb_category.category_name, $tb_category.category_id,
$tb_product_category_xref.category_id,
$tb_price.product_price,
$tb_product.product_unit,
$tb_product.product_full_image,
$tb_product.product_s_desc,
FROM
($tb_product_category_xref
RIGHT JOIN ($tb_price
RIGHT JOIN ($tb_product
ON $tb_price.product_id = $tb_product.product_id)
ON $tb_product_category_xref.product_id = $tb_product.product_id)
LEFT JOIN $tb_category
ON $tb_product_category_xref.category_id = $tb_category.category_id
WHERE $tb_product.product_publish='Y'
";
$row = d2a($query);
$product_log = Array();
for($i=0;$i<count($row);$i++) {
if (!in_array($row[$i]['product_id'],$product_log) AND ($row[$i]['product_price'])) {
$product_log[] = $row[$i]['product_id'];
$url="
http://www.XXX.ru/component/product_id,".$row[$i]['product_id'];
$url=htmlspecialchars($url);
$product_full_image = "
http://XXX.ru/components/com_virtuemart/shop_image/product/".$row[$i]['product_full_image'];
$tags = Array ('{product_name}','{product_desc}');
$repl = Array ($row[$i]['product_name'],$row[$i]['product_s_desc']);
$product_price = substr($row[$i]['product_price'], 0, -3);
$product_cat_id=$row[$i]['category_id'];
echo"\n<offer id=\"".$row[$i]['product_id']."\" available=\"true\" bid=\"$bid\">\n";
echo"<url>".$url."</url>\n";
echo"<price>$product_price</price>\n";
// Валюта в которой указаны Ваши цены
echo"<currencyId>RUR</currencyId>\n";
echo"<categoryId>".$product_cat_id."</categoryId>\n";
echo"<picture>".$product_full_image ."</picture>\n";
// Возможность доставки
//echo"<delivery>true</delivery> \n";
echo"<name>".HtmlSpecialChars(strip_tags($row[$i]['product_name']))."\"</name>\n";
echo"<description>".HtmlSpecialChars(strip_tags(str_replace($tags,$repl,$description_template)))."</description>\n";
echo"</offer>\n";
}
}
echo"</offers>\n";
echo"</shop>\n";
echo"</yml_catalog>\n";
function d2a($query){
$result = mysql_query($query) or die("Query failed : " . mysql_error());
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {$res[] = $line;}
mysql_free_result($result);
return $res;
}
?>