Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Валидация нескольких XML по одному XSD (3 стр)

Валидация нескольких XML по одному XSD (3 стр)

Страницы: 1 2 3 4 Следующая »
X512Постоялецwww26 июня 201013:51#30
DevilDevil
> для генерации xml написал свой алгоритм
Лучше используй готовые библиотеки, например tinyxml.
DevilDevilПостоялецwww26 июня 201014:07#31
X512
не учи меня жить и я не скажу куда тебе идти
IskanderУдалёнwww26 июня 201014:09#32
DevilDevil
> У меня такое впечатление, что ты не работал с xml. И с xsd тоже
Работал. И в отличии от тебя понимаю, что XML и XSD в первую очередь предназначены для машины, для программной проверки, а не чтобы их бедная девочка-бухгалтер ручками правила.
> при отправке в налоговую всплывает дофига ограничений. Формат кодов, каких-то
> наименований, точек вместо запятых, реестровых записей
Я вижу это с другой стороны, можно сказать со стороны налоговой, угу. Мы предоставляем готовые xsd для документов и формулы логического контроля. XSD собственно бухам нафиг не нужны - это чисто техническая часть.

> "по определению правилен" - это убило
Меня убило другое - что ты генерируешь неправильный XML а потом его проверяешь.

> Нихрена себе откровение
Ну да. Ты генерацию XML как делаешь? Вначале делается готовая структура, а потом туда запихиваются данные. Либо я вообще не понял, что ты хочешь.

DevilDevil
> для генерации xml написал свой алгоритм
А, ну тогда конечно. Может из-за этого у тебя сгенерированный по схеме XML-файл не всегда проходит проверку по этой самой схеме?

DevilDevil
> валидации нескольких xml

Тебе примерно в таком виде надо? Или что?

SAXParser parser = new SAXParser();
parser.setValidationMode(SAXParser.SCHEMA_VALIDATION);
parser.setContentHandler(new ContentHandler());
parser.setErrorHandler(new ErrorHandler());
parser.setXMLSchema(xmlschema);

parser.parse(xml1);
parser.parse(xml2);
parser.parse(xml3);
parser.parse(xml4);

Или выделить мышкой все XML файлы в проводнике и нажать "Валидация по схеме" в контекстном меню? Altova XMLSpy глянь тогда.

X512Постоялецwww26 июня 201014:16#33
DevilDevil
> не учи меня жить и я не скажу куда тебе идти
Тогда сиди и исправляй свой вилосипед от багов.
DevilDevilПостоялецwww26 июня 201014:23#34
у меня нет багов
у меня есть задача проверять несколько xml по схеме
DevilDevilПостоялецwww26 июня 201014:24#35
Iskander,
это рабочий код ?

не могу юзать XMLSpy, потому что он платный. Бухгалтера не могут

IskanderУдалёнwww26 июня 201014:43#36
DevilDevil
> это рабочий код ?
Ну как сказать, это пример. Нужно определить классы обработчиков, ContentHandler и ErrorHandler, которые будут обрабатывать содержимое и ошибки.
Вообще это оракловые джава классы, но он унаследован от обычного org.xml.sax.Parser - они открыты.


Так про мышкой в проводнике я угадал? Это имелось в виду?

kvakvsПостоялецwww26 июня 201015:22#37
Автор темы, ты реально залип на своей валидации.
Ты просто пришёл услышать то что ты хочешь, и шаг влево-шаг вправо от темы тебя раздражает и называется тобой холиваром и другими обидными словами.

Тебе не нужна валидация XSD, окей? Тебе надо проверить корректность данных, это делается набором простых вычислений данных, собранных через XPath. Список правил тебе зададут сами бухгалтера. А соответствие XSD должен соблюдать твой генератор. Вот и всё, что тебе надо.

DevilDevilПостоялецwww26 июня 201023:44#38
kvakvs
> Тебе надо проверить корректность данных, это делается набором простых
> вычислений данных, собранных через XPath
поподробнее

kvakvs
> Список правил тебе зададут сами бухгалтера
есть список правил и указан в XSD. есть стандартный механизм проверки на соответствие. бухгалтера сами ошибаются в данных. поэтому нет

kvakvs
> Вот и всё, что тебе надо.
мне нужна валидация нескольких xml по одному xsd
трёп мне не нужен

Iskander
> Так про мышкой в проводнике я угадал? Это имелось в виду?
я посмотрю в понедельник

kvakvsПостоялецwww27 июня 20101:13#39
Как работает XPath написано в примерах и мудрых мануалах.
Это не XSD.
Загуглить можно по фразе "xpath example tutorial"
Запросил данные, сверился с правилами, вывел ошибку или не вывел и перешёл к следующему правилу.
chiaroscuroПостоялецwww27 июня 201015:25#40
DevilDevil
Разных schema language для XML много, наиболее распространенные:
- W3C XML Schema -- нечто переусложенное, data-oriented
- RELAX NG -- на основе регулярных грамматик для деревьев, хорошо подходит для проверки полуструктурированных данных (например, документов HTML)
- Schematron -- тут уже упомянули

Языков программирования с поддержкой schema-preserving transformation (как я понял, это волнует) по-моему, нету (экспериментальные, вроде CDuce, не в счет). Можно найти какой-нить schema-aware XSLT-процессор, но сам по себе XSLT не очень удобно править.

Еще можно взять какую-нибудь утилиту, которая генерирует соответствующие схеме типы в языке программирования. Тоже вариант.

> Ищу способ валидации нескольких XML по одной схеме

Не понимаю, что Вы имеете в виду:
- массовую проверку однотипных XML-документов (по одной схеме)
- что-то другое?

DevilDevilПостоялецwww27 июня 201017:48#41
chiaroscuro
> Не понимаю, что Вы имеете в виду:
> - массовую проверку однотипных XML-документов (по одной схеме)
> - что-то другое?

привет
есть схема и по ней генерируется много отчётов
все эти отчёты, которые были сгенерированы, надо проверять на соответствие схемы
я знаю как одну xml бесплатным софтом проверять на соответствие схеме, но отчётов может быть например 40 и их желательно проверять пакетом

chiaroscuroПостоялецwww27 июня 201018:56#42
DevilDevil
> есть схема и по ней генерируется много отчётов
> все эти отчёты, которые были сгенерированы, надо проверять на соответствие
> схемы
> я знаю как одну xml бесплатным софтом проверять на соответствие схеме, но
> отчётов может быть например 40 и их желательно проверять пакетом

"Отчеты" в наших краях -- программы, которые вытаскивают какие-то данные из базы данных (в соответствие с критериями, заданными пользователем), и представляют их в понятном пользователю виде. Например, "платежное поручение" -- на входе номер документа и год (задаются пользователем), на выходе -- формуляр, который можно распечатать.

А что Вы имеете в виду под "отчетами"? Все еще не понимаю, что Вы хотите сделать.

DevilDevilПостоялецwww27 июня 201019:47#43
chiaroscuro
отчёты в налоговую. Мы - крупный налогоплательщик
отчётность сдаётся в xml по внутренним каналам

для отчётов налоговая представляет свои схемы. Я по этим схемам программно генерирую xml. Но я не проверяю соответствие типам, всё представляю как строки. Возможно иногда преобразую типы до других. Например "2,2" преобразую до "2.2", а "5,3%" (double значение 0.053) преобразую до "5.3". Там очень много типов и на корректность всех заколебёшься писать проверки. Намного проще юзать стандартный механизм проверки файла по имеющейся схеме

об этом топик

IskanderУдалёнwww28 июня 20109:07#44
DevilDevil
> бухгалтера сами ошибаются в данных. поэтому нет
DevilDevil
> Там очень много типов и на корректность всех заколебёшься писать проверки


Еще раз. Данные != типы данных. Бухгалтера ошибаются в данных - XSD никак не сможет помочь здесь. Мое сообщение 15 глянь. № 39 - то же самое, только на другом этапе. Проверка схемы тебе не нужна. Тебе нужно взять другой генератор.

DevilDevil
> об этом топик
XY problem.  Тебе надо проверить несколько XML в поточном режиме? Так  напиши или на джаве/шарпе/чем угодно проверку. Ее писать-то полчаса. Не можешь писать - возьми альтову. Или ее бесплатные альтернативы. В чем проблема? Это тебе стандартный механизм проверки файла по схеме.

Если надо решить задачу - сделать чтобы отчеты генерировались правильно - послушай альтернативное мнение, тебе уже 10 раз сказали что надо проверять данные.

Я не пойму, какого фидбека ты еще ждешь?

Страницы: 1 2 3 4 Следующая »

/ Форум / Программирование игр / Общее

Тема в архиве.

2001—2018 © GameDev.ru — Разработка игр