Validar XML usando LibXML

Actualmente, estoy usando el módulo perl XML :: LibXML para validar un archivo XML contra un esquema XML definido. Por el momento, si mi archivo XML no se valida correctamente con el esquema XML definido, obtendré una lista de errores que me informa, por ejemplo, que ciertos elementos no se esperaban y luego 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.

Mi pregunta es, ¿hay alguna forma en la que pueda generar la ubicación XPath de cualquier elemento que pueda producir un error al intentar realizar la validación?

Actualmente, mi archivo XML es bastante grande y es difícil "depurarlo" cuando la validación falla, ya que el nombre del elemento que se muestra en el error puede ocurrir muchas veces en varios lugares del archivo XML.

Mi código está debajo para usar LibXML para validar un archivo XML contra 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 $@ if $@;

print "$document validated successfully\n";

Respuestas a la pregunta(3)

Su respuesta a la pregunta