Почему простейший yml — документ не проходит валидацию по dtd — схеме?

Прошу вашей помощи. Есть простейшее описание товара яндекс маркета (указаны только обязательные поля)
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2010-04-01 17:00">
<shop>
    <name>Magazin</name>
    <company>Magazin</company>
    <url>http://www.magazin.ru/</url>
    <currencies>
    <currency id="RUR" rate="1" plus="0"/>
    </currencies>
    <categories>
    <category id="1">Часы</category>
    </categories>
    <local_delivery_cost>300</local_delivery_cost>
    <offers>
        <offer id="12346" available="true" bid="21">
            <price>600</price>
            <currencyId>RUR</currencyId>
            <categoryId>1</categoryId>
            <name>Наручные часы Casio A1234567B</name>
        </offer>
    </offers>
</shop>
</yml_catalog>

Вот часть dtd-схемы, которая отвечает за валидацию тега offer:
<!ELEMENT offer 
(
  url?, buyurl?, price, wprice?, currencyId, xCategory?, categoryId+, market_category?, picture*, store?, pickup?, delivery?, deliveryIncluded?, local_delivery_cost?, orderingTime?,
  (
    (typePrefix?, vendor, vendorCode?, model, (provider, tarifplan?)?) |
    (author?, name, publisher?, series?, year?, ISBN?, volume?, part?, language?, binding?, page_extent?, table_of_contents?) |
    (author?, name, publisher?, series?, year?, ISBN?, volume?, part?, language?, table_of_contents?, performed_by?, performance_type?, storage?, format?, recording_length?) |
    (artist?, title, year?, media?, starring?, director?, originalName?, country?) |
    (worldRegion?, country?, region?, days, dataTour*, name, hotel_stars?, room?, meal?, included, transport, price_min?, price_max?, options?) |
    (name, place, hall?, hall_part?, date, is_premiere?, is_kids?) |
    (name, vendor?, vendorCode?)
  ),
  aliases?, additional*, description?, sales_notes?, promo?, manufacturer_warranty?, country_of_origin?, downloadable?, adult?, age?, barcode*, param*, related_offer*
)>

Я пытаюсь отвалидировать данный документ с помощью утилиты xmllint:
xmllint --valid --noout ~/XML/test321.yml
На что получаю следующую ошибку:
Content model of offer is not determinist.
Может быть вы заметите что не так в документе, что он не может пройти валидацию. Если не верите, можете скачать с яндекса shop.dtd и попытаться отвалидировать их, якобы, валидный пример. У меня не получилось (:

Заранее премного благодарен за любую попытку помочь.
  • Вопрос задан
  • 2322 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы