Attualmente sto utilizzando il modulo perl XML :: LibXML per convalidare un file XML rispetto a uno schema XML definito. Al momento, se il mio file XML non riesce a convalidare con successo lo Schema XML definito, otterrò un elenco di errori che mi informano, ad esempio che alcuni elementi non erano previsti e quindi cosa invece era previsto. Nel mio file XML avrò molti elementi con lo stesso nome ma potrebbero essere annidati in vari punti del file XML.Convalidare XML utilizzando LibXML
La mia domanda è, c'è comunque in cui posso generare la posizione XPath di eventuali elementi che possono causare errori quando si tenta di eseguire la convalida?
Attualmente il mio file XML è abbastanza grande ed è difficile "eseguirne il debug" quando la convalida fallisce poiché il nome dell'elemento visualizzato nell'errore può verificarsi molte volte in vari punti del file XML.
Il mio codice è sotto per l'utilizzo di LibXML per convalidare un file XML su uno schema.
#!/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 [email protected] if [email protected];
print "$document validated successfully\n";
Se si guarda alla fonte per XML :: :: Convalida LibXML, vedrete che non riporta la linea e colonna durante la convalida con LibXML. Potresti voler usare una libreria diversa con cui convalidare. – cjm