nataraj: (Бритый небритый)
[personal profile] nataraj
Разобрался как XSD-валидировать XML'ки через перл... Оказывается достаточно просто:
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, и заблудился там...

В общем нету мне перлэксемельного счастья...

Date: 2008-01-27 09:30 am (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
use Source::Luke!
В смысле ответ надо искать не в гугле, а в исходнике модуля.

Date: 2008-01-27 09:57 am (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
В исходнике модуля никакого внятного ответа нет...
Он прямая обертка к libxml2, как минимум в случае XML::LibXML::Schema. А xmlschemas.c из него, который собственно валидацию осуществляет я не осилил... По оценкам, на то чтобы понять как он работает, мне с моей системой восприятия, потребуется не меньше недели, а скорее всего месяц. Уж больно непонятно он написан... Задача достаточно интересная, но увы на данном этапе имеющая весьма сомнительную практическую ценность...
Кроме того, есть подозрение, что когда я пойму, то потом его придется переписывать, ибо как я понял, он валидировать умеет ровно в одном режиме: Либо вернуть 1 если валиден, либо завершить работу вывалив в STDERR невбубенный список ошибок. Это совершенно не то, чего хотелось бы иметь в конечной программе...


Profile

nataraj: (Default)
Swami Dhyan Nataraj

July 2024

S M T W T F S
 123456
789 10111213
14151617181920
21222324252627
28293031   

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 21st, 2026 09:54 pm
Powered by Dreamwidth Studios