Проверка XML с помощью LibXML

В настоящее время я использую модуль XML::LibXML perl для проверки XML-файла на соответствие определенной XML-схеме. В настоящее время, если мой XML-файл не удается успешно проверить на соответствие определенной XML-схеме, я получаю список ошибок, информирующий меня, например, о том, что определенные элементы не ожидались, а затем о том, что ожидалось вместо них. В моем XML-файле будет много элементов с одинаковыми именами, но они могут быть вложены в различные места XML-файла.

Мой вопрос заключается в том, могу ли я каким-либо образом вывести XPath расположение любых элементов, которые могут ошибиться при попытке выполнить валидацию?

В настоящее время мой XML файл довольно большой и его трудно "отладить", когда валидация не проходит, так как имя элемента, которое отображается в ошибке, может встречаться много раз в различных местах XML файла.

Ниже приведен мой код для использования LibXML для проверки XML файла на соответствие схеме.

#!/usr/bin/perl
use strict;
use warnings;
use XML::LibXML;

my $schema_file = 'MySchema.xml';
my $document    = 'MyFile.xml';

my $schema = XML::LibXML::Schema->new(location => $schema_file);

my $parser = XML::LibXML->new;
my $doc    = $parser->parse_file($document);

eval { $schema->validate($doc) };
die $@ if $@;

print "$document validated successfully\n";
6
задан Dimitre Novatchev 5 September 2010 в 21:30
поделиться