Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Игнорировать строгую последовательность элементов в DTD / 25 сообщений из 31, страница 1 из 2
10.02.2015, 16:25
    #38876120
Zhazhah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игнорировать строгую последовательность элементов в DTD
Здравствуйте, подскажите как заставить 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
10.02.2015, 17:04
    #38876195
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игнорировать строгую последовательность элементов в DTD
Код покажи. При инициализации фабрик парсера там куча настроек. В том числе отключение валидации.
...
Рейтинг: 0 / 0
10.02.2015, 17:18
    #38876208
Zhazhah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игнорировать строгую последовательность элементов в DTD
Вот код:
Код: 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
10.02.2015, 17:31
    #38876227
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игнорировать строгую последовательность элементов в DTD
ZhazhahВот код:
Код: java
1.
            factory.setValidating(true);


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

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


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

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

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



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

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

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

А это идея.
...
Рейтинг: 0 / 0
12.02.2015, 08:58
    #38877598
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игнорировать строгую последовательность элементов в DTD
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
12.02.2015, 09:22
    #38877616
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игнорировать строгую последовательность элементов в DTD
Zhazhah,
если очень хочется контролировать состав элементов, но игнорировать их порядок, то лучше переделать схему в xsd и заменить где требуется xsd:sequence на xsd:all . Перечисление всех возможных комбинаций в dtd - это идея стоимостью n 2 , возрастание объема документации и времени валидации.
Это при условии, что конкретное приложение позволяет перестановку элементов. Потому как порядок элементов в xml имеет существенное значение
...
Рейтинг: 0 / 0
12.02.2015, 09:44
    #38877631
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игнорировать строгую последовательность элементов в DTD
ivanra,

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

О каком именно "стандарте XML" речь? Я привел ссылку на w3.org (бывший w3c.org) выше. Какие есть другие XML стандарты?
...
Рейтинг: 0 / 0
12.02.2015, 11:31
    #38877777
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игнорировать строгую последовательность элементов в DTD
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
12.02.2015, 11:43
    #38877799
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игнорировать строгую последовательность элементов в DTD
Blazkowicz,
т.е. я всегда ходил по нодам
nextSibling и previousSibling
и было по барабану очерёдность
...
Рейтинг: 0 / 0
12.02.2015, 11:49
    #38877808
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игнорировать строгую последовательность элементов в DTD
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
12.02.2015, 11:53
    #38877816
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игнорировать строгую последовательность элементов в DTD
Blazkowicz,
счас другой пример приведу.
У меня выше было главное слово - уровень. Т.е. children
"Если уровень один, то порядок не важен" - это проще для понимания.
childNodes list
...
Рейтинг: 0 / 0
12.02.2015, 11:57
    #38877820
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игнорировать строгую последовательность элементов в DTD
Petro123,
xml документ может описывать последовательность неких операций, например, по сборке автомобиля. Порядок очень даже важен.
Или еще проще - это документ с html элементами. Если переставить блоки текста - получится совсем другой документ.
Так что, хоть мы и привыкли к тому, что xml - это объектный язык, но это, прежде всего, язык разметки документов.
А чтобы точно различать, когда важна или не важна последовательность, при описании схемы используют xsd:sequence / xsd:all .
А для атрибутов явно оговорено - их порядок может быть произвольным
...
Рейтинг: 0 / 0
12.02.2015, 12:00
    #38877825
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Игнорировать строгую последовательность элементов в DTD
ivanra,
я утверждаю, что в стандарте XML порядок не важен.
Если не прав, посыплю голову перцем.

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

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

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

</Реквизит>


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

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

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

</Реквизит>


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

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

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

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


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