fb2-perl-tools
Jan. 26th, 2008 10:03 pmРазобрался как XSD-валидировать XML'ки через перл... Оказывается достаточно просто:
Только эта сволочь номера строк не выводит...
Установка $parser->line_numbers(1); -- не помогает...
Номера строк, как тоже по ходу выяснилось выводит
xmllint --noout --schema SCHEMA2.1/FictionBook2.1.xsd krishnananda-02.utf8.xml
Но только это уже нехрена не перл-решение.
В гугле про номера сток для XML::LibXML::Schema ничего не говорят.
Попытался залесть в исходники xmllint, и заблудился там...
В общем нету мне перлэксемельного счастья...
use XML::LibXML; my $file_name='krishnananda-02.utf8.xml'; my $parser = XML::LibXML->new(); my $xmlschema = XML::LibXML::Schema->new( location =>'SCHEMA2.1/FictionBook2.1.xsd'); my $doc = $parser->parse_file($file_name); $xmlschema->validate($doc);
Только эта сволочь номера строк не выводит...
Установка $parser->line_numbers(1); -- не помогает...
Номера строк, как тоже по ходу выяснилось выводит
xmllint --noout --schema SCHEMA2.1/FictionBook2.1.xsd krishnananda-02.utf8.xml
Но только это уже нехрена не перл-решение.
В гугле про номера сток для XML::LibXML::Schema ничего не говорят.
Попытался залесть в исходники xmllint, и заблудился там...
В общем нету мне перлэксемельного счастья...
no subject
Date: 2008-01-27 09:30 am (UTC)В смысле ответ надо искать не в гугле, а в исходнике модуля.
no subject
Date: 2008-01-27 09:57 am (UTC)Он прямая обертка к libxml2, как минимум в случае XML::LibXML::Schema. А xmlschemas.c из него, который собственно валидацию осуществляет я не осилил... По оценкам, на то чтобы понять как он работает, мне с моей системой восприятия, потребуется не меньше недели, а скорее всего месяц. Уж больно непонятно он написан... Задача достаточно интересная, но увы на данном этапе имеющая весьма сомнительную практическую ценность...
Кроме того, есть подозрение, что когда я пойму, то потом его придется переписывать, ибо как я понял, он валидировать умеет ровно в одном режиме: Либо вернуть 1 если валиден, либо завершить работу вывалив в STDERR невбубенный список ошибок. Это совершенно не то, чего хотелось бы иметь в конечной программе...