powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Игнорировать строгую последовательность элементов в DTD
25 сообщений из 31, страница 1 из 2
Игнорировать строгую последовательность элементов в DTD
    #38876120
Zhazhah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, подскажите как заставить SAX-парсер не ругаться на неправельную последовательность элементов в файле.

Использую http://help.yandex.ru/partnermarket/yml/about-yml.xml

http://partner.market.yandex.ru/pages/help/shops.dtd
http://partner.market.yandex.ru/pages/help/YML.xml


Стоит только поменять местами пару элементов как мой парсер матерится...
The content of element type "offer" must match "(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*)".


Самое интересное, что если проверить измененный фид в я.маркете то он успешно проходит проверку. Как быть?
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38876195
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код покажи. При инициализации фабрик парсера там куча настроек. В том числе отключение валидации.
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38876208
Zhazhah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
       try {
            SAXParserFactory factory = SAXParserFactory.newInstance();
            factory.setValidating(true);
            SAXParser parser = factory.newSAXParser();
            XMLReader reader = parser.getXMLReader();
            reader.setContentHandler(this);
            reader.setErrorHandler(this);
            InputSource source = new InputSource(Cfg.realPath + "/tmp/" + shopID + ".xml");
            reader.parse(source);
        } finally {}
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38876227
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhazhahВот код:
Код: java
1.
            factory.setValidating(true);


Что делает этот метод?
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38876262
Zhazhah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверяет xml на соответствие схеме
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38876272
Zhazhah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е не схеме, ну вы поняли
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38876339
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем делать dtd на который все забивают болт?
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38876353
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhazhahПроверяет xml на соответствие схеме
Ну, так может ну его это? Проверять. Не соответствует же.
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38876817
Zhazhah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗачем делать dtd на который все забивают болт?

Яндекс почему то не хотит(


авторНу, так может ну его это? Проверять. Не соответствует же.

Ну это чисто русский подход. Он не устраивает.
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38876891
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhazhahНу это чисто русский подход. Он не устраивает.
А чисто индусский подход требовать безошибочной валидации у не валидного XML. Это устраивает?
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877219
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zhazhah,

Преобразовать DTD во что-то типа:
Код: xml
1.
<!ELEMENT shop ((name, company, url ...)|(company, name, url ...) ...)>



Не спасет отца русской демократии?
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877480
Zhazhah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА чисто индусский подход требовать безошибочной валидации у не валидного XML. Это устраивает?

А кто вам сказал что порядок элементов должен влиять на валидацию? xmllint например полностью валидный xml фатальной ошибкой завершает. Это все ошибки ПО!

авторПреобразовать DTD во что-то типа:

А это идея.
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877598
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhazhahА кто вам сказал что порядок элементов должен влиять на валидацию?

А кто вам сказал что не должен? Вы как-то сильно самоуверенно себя ведёте не посвящая ни минуты документации.

http://www.w3.org/TR/REC-xml/ 3.2.1 Element Content

[Definition: An element type has element content when elements of that type MUST contain only child elements (no character data), optionally separated by white space (characters matching the nonterminal S).] [Definition: In this case, the constraint includes a content model, a simple grammar governing the allowed types of the child elements and the order in which they are allowed to appear .] The grammar is built on content particles (cps), which consist of names, choice lists of content particles, or sequence lists of content particles:

Zhazhahxmllint например полностью валидный xml фатальной ошибкой завершает.

Не знаю кто такой xmllint и какое отношение он имеет к вопросу.

ZhazhahЭто все ошибки ПО!

Ладно!
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877616
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zhazhah,
если очень хочется контролировать состав элементов, но игнорировать их порядок, то лучше переделать схему в xsd и заменить где требуется xsd:sequence на xsd:all . Перечисление всех возможных комбинаций в dtd - это идея стоимостью n 2 , возрастание объема документации и времени валидации.
Это при условии, что конкретное приложение позволяет перестановку элементов. Потому как порядок элементов в xml имеет существенное значение
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877631
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra,

Ты что! DTD это же так винтажно :)
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877682
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraПотому как порядок элементов в xml имеет существенное значение
хмммм.
На одном уровне node?
Не должен.
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877700
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123На одном уровне node?
Не должен.
Кому не должен? Я же вон выше RTFM привел.
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877729
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
насколько помню, в самом стандарте XML это не важно.
А вот уже, возможно, схема DTD более ограничила этот формат.
Т.е. сузила.
Как. например,
YML у яндекс
https://partner.market.yandex.ru/legal/tt/
imho
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877760
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123насколько помню, в самом стандарте XML это не важно.

О каком именно "стандарте XML" речь? Я привел ссылку на w3.org (бывший w3c.org) выше. Какие есть другие XML стандарты?
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877777
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
втолкуй, я не врубаюсь
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<dsig:SignedInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig-more#gostr34102001-gostr3411"/>
<dsig:Reference URI="">
<dsig:Transforms>
<dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig-more#gostr3411"/>
<dsig:DigestValue>RDlGOEQ0NzhGMjVDQ0Y1M0I2MjkzM0FFRjU5RENDQTFEN0FBQzczNThFOTgyMEVDQjhEMzM5QTNB
MkNERTkwMQ==</dsig:DigestValue>
</dsig:Reference>
</dsig:SignedInfo>


вот тут 2 поднода имеет значение их очередность в XML выше?
<dsig:Transform Algorithm=" http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<dsig:Transform Algorithm=" http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877799
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
т.е. я всегда ходил по нодам
nextSibling и previousSibling
и было по барабану очерёдность
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877808
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Blazkowicz,
втолкуй, я не врубаюсь
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<dsig:SignedInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
   <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
   <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig-more#gostr34102001-gostr3411"/>
   <dsig:Reference URI="">
      <dsig:Transforms>
           <dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
           <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
      </dsig:Transforms>
    <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig-more#gostr3411"/>
    <dsig:DigestValue>RDlGOEQ0NzhGMjVDQ0Y1M0I2MjkzM0FFRjU5RENDQTFEN0FBQzczNThFOTgyMEVDQjhEMzM5QTNB
MkNERTkwMQ==</dsig:DigestValue>
    </dsig:Reference>
</dsig:SignedInfo>


вот тут 2 поднода имеет значение их очередность в XML выше?
<dsig:Transform Algorithm=" http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<dsig:Transform Algorithm=" http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
dsig:Transform это же один и тот же элемент. Конечно порядок не важен. Попробуй эти 3 местами поменять и провалидировать

Код: xml
1.
2.
3.
   <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
   <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig-more#gostr34102001-gostr3411"/>
   <dsig:Reference URI="">...</dsig:Reference>
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877816
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
счас другой пример приведу.
У меня выше было главное слово - уровень. Т.е. children
"Если уровень один, то порядок не важен" - это проще для понимания.
childNodes list
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877820
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
xml документ может описывать последовательность неких операций, например, по сборке автомобиля. Порядок очень даже важен.
Или еще проще - это документ с html элементами. Если переставить блоки текста - получится совсем другой документ.
Так что, хоть мы и привыкли к тому, что xml - это объектный язык, но это, прежде всего, язык разметки документов.
А чтобы точно различать, когда важна или не важна последовательность, при описании схемы используют xsd:sequence / xsd:all .
А для атрибутов явно оговорено - их порядок может быть произвольным
...
Рейтинг: 0 / 0
Игнорировать строгую последовательность элементов в DTD
    #38877825
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra,
я утверждаю, что в стандарте XML порядок не важен.
Если не прав, посыплю голову перцем.

автор-<Реквизит Ид="ID1С_0007556" Имя="ВремяДок --> ВремяДок">

<Источник Ид="ВремяДок" Тип="Строка" ТипАтрибута="АД" Длина="8"/>

<Приемник Ид="ВремяДок" Тип="Строка" ТипАтрибута="АД" Длина="8"/>

</Реквизит>


-<Реквизит Ид="ID1С_0007557" Имя="Контрагент --> Контрагент" Правило="Контрагенты_1С_0000793">

<Источник Ид="Контрагент" Вид="Контрагенты" Тип="Справочник" ТипАтрибута="РШД"/>

<Приемник Ид="Контрагент" Вид="Контрагенты" Тип="Справочник" ТипАтрибута="РШД"/>

</Реквизит>


-<Реквизит Ид="ID1С_0007558" Имя="Договор --> Договор" Правило="Договоры_1С_0000800">

<Источник Ид="Договор" Вид="Договоры" Тип="Справочник" ТипАтрибута="РШД"/>

<Приемник Ид="Договор" Вид="Договоры" Тип="Справочник" ТипАтрибута="РШД"/>

</Реквизит>
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Игнорировать строгую последовательность элементов в DTD
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]