Actualmente, estoy usando el módulo XML :: LibXML perl para validar un archivo XML con un esquema XML definido. Por el momento, si mi archivo XML no puede validar con éxito contra el Esquema XML definido, obtendré una lista de errores que me informan, por ejemplo, que ciertos elementos no se esperaban y luego se esperaba lo que se esperaba. En mi archivo XML tendré muchos elementos del mismo nombre pero pueden estar anidados en varios lugares en el archivo XML.Validar XML utilizando LibXML
Mi pregunta es, ¿de todos modos puedo dar salida a la ubicación XPath de cualquier elemento que pueda tener errores al intentar realizar la validación?
Actualmente, mi archivo XML es bastante grande y es difícil "depurarlo" cuando falla la validación ya que el nombre del elemento que se muestra en el error puede aparecer muchas veces en varios lugares del archivo XML.
Mi código está a continuación para usar LibXML para validar un archivo XML con un esquema.
#!/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";
Si nos fijamos en la fuente para XML :: :: Validar LibXML, verá que no informa de la línea y la columna al validar con LibXML. Es posible que desee utilizar una biblioteca diferente para validar con. – cjm