помогите найти ошибку в yml файле

C
На сайте с 11.01.2013
Offline
0
4757

Проверяю файл в валидаторе яндекса. Выдает такую ошибку

XML-файл не соответствует схеме.

Строка: 25 Позиция: 41

Подробнее

s4s-elt-character: Non-whitespace characters are not allowed in schema elements other than 'xs:appinfo' and 'xs:documentation'. Saw 'Интернет-магазин сортового мёда'.

Помогите, пожалуйста, найти и устранить эту ошибку. Содержание файла ниже:

<?php

//***********************************************************

//

// Версия коннектора к Yandex.Market от 18.04.2009

// автор доработок Саид Дашук (dashuk@ngs.ru)

//

// Доработки:

// 1. Подключение к настройкам Joomla (теперь не надо прописывать реквизиты доступа к БД,

// а достаточно указать конфигурационный файл 'configuration.php')

// 2. Добавлены комментарии для новичков

// 3. ВЫБОРКА ВСЕХ ТОВАРОВ ПРОИСХОДИТ ОДНИМ ЗАПРОСОМ!

// 4. Добавлен шаблон для описания товара (тег <description>)

// 5. Курсы валют, приравнены к курсу ЦБРФ

// 6. Добавлены теги "доставка" и "производитель" (просто мне они нужны, а Вы решайте сами)

// а также: форматирование для удобства кода и вывода и еще что то по мелочам.

//

// Проверялось на Joomla! 1.5.9 Production/Stable / VirtueMart 1.1.2 stable

//

//***********************************************************

// Пропишите относительный путь к 'configuration.php' (он находится в корне Joomla)

// Например: include '../configuration.php';

include '../configuration.php';

$cfg = new JConfig();

//NAME - Короткое название магазина (название, которое выводится в списке найденных на Яндекс.Маркете товаров.

//Не должно содержать более 20 символов). Нельзя использовать слова, не имеющие отношения к

//наименованию магазина ("лучший", "дешевый"), указывать номер телефона и т.п. Название магазина,

//должно совпадать с фактическим названием магазина, которое публикуется на сайте. При несоблюдении

//данного требования наименование может быть изменено Яндексом самостоятельно без уведомления Клиента.

$cfg_name = $cfg->fromname;

//Полное наименование компании, владеющей магазином. Не публикуется, используется для внутренней идентификации.

$cfg_company = $cfg->sitename;

//URL-адрес главной страницы магазина без http://

$cfg_url = 'modameda.com';

// Шаблон для описания товара

// Вместо {product_name} - будет вставлено наименование товара

// Вместо {product_desc} - будет вставлено краткое описание

// ПРИМЕР:

// $description_template = '{product_name} от производителя';

$description_template = '{product_desc}';

// Ставка за клик (в центах)

$bid = '5';

$hostname = $cfg->host;

$username = $cfg->user;

$password = $cfg->password;

$dbName = $cfg->db;

$category = $cfg->dbprefix."vm_category";

$category_xref = $cfg->dbprefix."vm_category_xref";

$userstable = $cfg->dbprefix."vm_product";

$pricetable = $cfg->dbprefix."vm_product_price";

$product_category_xref = $cfg->dbprefix."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=\"utf-8\"?>\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>$cfg_name</name>\n";

echo"<company>$cfg_company</company>\n";

echo"<url>$cfg_url</url>\n";

// курсы валют, приравнены к курсу ЦБРФ

echo"<currencies>\n";

echo"<currency id=\"RUR\" rate=\"1\"/>\n";

echo"<currency id=\"USD\" rate=\"CBRF\"/>\n";

echo"<currency id=\"EUR\" rate=\"CBRF\"/>\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 "<category id=\"1\">Кондитерские изделия</category>";

echo "<category parentId=\"1\" id=\"2\">Мед</category>";

echo"</categories>\n";

// Секция описания товаров

echo"<offers>\n";

$tb_product = $cfg->dbprefix."vm_product";

$tb_manufacturer = $cfg->dbprefix."vm_manufacturer";

$tb_product_mf_xref = $cfg->dbprefix."vm_product_mf_xref";

$tb_category = $cfg->dbprefix."vm_category";

$tb_product_category_xref = $cfg->dbprefix."vm_product_category_xref";

$tb_price = $cfg->dbprefix."vm_product_price";

$query = "

SELECT

$tb_product.product_id,

$tb_product.product_name,

$tb_manufacturer.mf_name,

$tb_manufacturer.manufacturer_id,

$tb_category.category_name,

$tb_category.category_id,

$tb_product_category_xref.category_id,

$tb_price.product_price,

$tb_product.product_sku,

$tb_product.product_in_stock,

$tb_product.product_unit,

$tb_product.product_full_image,

$tb_product.product_s_desc,

$tb_product.product_weight,

$tb_product.attribute

FROM

($tb_product_category_xref

RIGHT JOIN ($tb_price

RIGHT JOIN (($tb_product_mf_xref

RIGHT JOIN $tb_product

ON $tb_product_mf_xref.product_id = $tb_product.product_id)

LEFT JOIN $tb_manufacturer

ON $tb_product_mf_xref.manufacturer_id = $tb_manufacturer.manufacturer_id)

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'

GROUP BY $tb_product.product_id

";

$row = d2a($query);

$product_log = Array(13);

for($i=0;$i<count($row);$i++) {

if (!in_array($row[$i]['product_id'],$product_log) AND ($row[$i]['product_price']) AND $row[$i]['product_price'] != 0) {

$prname = strip_tags($row[$i]['product_name']);

//обработка атрибута

$tprice = $row[$i]['attribute'];

//echo $tprice;

$tprice = explode(',', $tprice);

if(isset($tprice[0])) {

if(preg_match('/=([0-9]*)/', $tprice[1], $m)) {

$product_price = $m[1];

$tname = explode('[',$tprice[1]);

$prname .= (!empty($tname[0])) ? ' (' . $tname[0] . ')' : '';

} else {

$product_price = substr($row[$i]['product_price'], 0, -3);

}

}

$product_log[] = $row[$i]['product_id'];

$url="http://modameda.com/component/virtuemart/details/".$row[$i]['product_id']."/".$row[$i]['category_id'];

$product_full_image = "http://$cfg_url/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"<categoryId>2</categoryId>\n";

echo"<picture>".$product_full_image ."</picture>\n";

// Возможность доставки

echo"<delivery>true</delivery> \n";

echo"<name>".$prname."</name>\n";

echo"<description>".strip_tags(str_replace($tags,$repl,$description_template))."</description>\n";

echo"</offer>\n";

}

}

/*

Вес,500 гр[=550],1 кг[=950]

*/

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;

}

?>

BL
На сайте с 05.12.2009
Offline
71
#1

Вы бы на саму yml ссылку дали что ли...

Магазин аккаунтов с балансом Litres,DNS,Ozon,Rotapost и еще 50+ других сервисов тут - vk.cc/7QK0Sk
C
На сайте с 11.01.2013
Offline
0
#2
ByLex:
Вы бы на саму yml ссылку дали что ли...

Да, пожалуйста :)

http://modameda.com/ymexporter/market.yml

C
На сайте с 11.01.2013
Offline
0
#3

отправляю. модератор больше часа модерирует (((

Уи-папапара-пум
На сайте с 23.11.2011
Offline
22
#4

а почему это в разделе форума про Я.Каталог?

C
На сайте с 11.01.2013
Offline
0
#5
Уи-папапара-пум:
а почему это в разделе форума про Я.Каталог?

тут были уже топики про YML

а куда лучше писать, по Вашему?

BL
На сайте с 05.12.2009
Offline
71
#6

colibri, кодировку нормальную поставьте...и будет счастье

C
На сайте с 11.01.2013
Offline
0
#7
ByLex:
colibri, кодировку нормальную поставьте...и будет счастье

как? где? пожалуйста!!!

Xover
На сайте с 22.05.2006
Offline
101
#8

У вас модератор отклоняет yml за несоответствие правилам или yml невалидный?

Как минимум здесь недоработка

<picture>http://modameda.com/components/com_virtuemart/shop_image/product/финский мед.jpg</picture>
В ссылках, указанных в YML-файле, не рекомендуется использовать пробелы и кириллические символы. Это может привести к невалидности файла.
источник

Переименуйте картинки.

Покупаю внутренние PR4 на sape.ru (http://www.sape.ru/r.f3cfb23480.php)
C
На сайте с 11.01.2013
Offline
0
#9

изменила названия фото продуктов на латинские.

Все равно ошибка 😕

XML-файл не соответствует схеме.

Строка: 25 Позиция: 41

Подробнее

s4s-elt-character: Non-whitespace characters are not allowed in schema elements other than 'xs:appinfo' and 'xs:documentation'. Saw 'Интернет-магазин сортового мёда'.

Xover
На сайте с 22.05.2006
Offline
101
#10
http://modameda.com/components/com_virtuemart/shop_image/product/finskiy med.jpg

В ссылках, указанных в YML-файле, не рекомендуется использовать пробелы и кириллические символы.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий