Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Validate XML with schemas specified inline (xsi:schemaLocation) (with libxml or anything different from Xerces)

by ikegami (Patriarch)
on Apr 21, 2021 at 22:04 UTC ( [id://11131559]=note: print w/replies, xml ) Need Help??


in reply to Validate XML with schemas specified inline (xsi:schemaLocation) (with libxml or anything different from Xerces)

Generally speaking, you want to validate against a specific schema. For example, if you expect an Open Travel Alliance (OTA) request, you're going to validate against the schema for an OTA request. Or maybe you want to check that your own code generates a proper OTA request or response. Either way, you don't need xsi:schemaLocation. What this means is that ::Schema's interface is more than adequate for most people.

To validate against the schema mentioned within the XML doc, you will to extract the schema URL yourself from the XML doc yourself. This is a rather trivial thing to do. Something like:

my $xpc = XML::LibXML::XPathContext->new; $xpc->registerNs( xsi => 'http://www.w3.org/2001/XMLSchema-instance' ) +; my $doc = XML::LibXML->new->parse_XXX(...); my $schema_loc = $xpc->findvalue('/*/@xsi:schemaLocation', $doc) or die("...\n"); my ($schema_ns, $schema_url) = split(' ', $schema_loc); defined($schema_url) or die("...\n");

Which you'd simply follow up with

my $schema = XML::LibXML::Schema->new( location => $schema_url ); eval { $schema->validate($doc); 1 } or die("...\n");

Seeking work! You can reach me at ikegami@adaelis.com

  • Comment on Re: Validate XML with schemas specified inline (xsi:schemaLocation) (with libxml or anything different from Xerces)
  • Select or Download Code

Replies are listed 'Best First'.
Re^2: Validate XML with schemas specified inline (xsi:schemaLocation) (with libxml or anything different from Xerces)
by jjmoka (Beadle) on Apr 22, 2021 at 06:39 UTC
    Thank you very much. I was thinking to go for the this way, just wishing a confirmation from the experts. More than happy of your solution. Thanks again
Re^2: Validate XML with schemas specified inline (xsi:schemaLocation) (with libxml or anything different from Xerces)
by ikegami (Patriarch) on Apr 21, 2021 at 22:50 UTC

    Fixed errors in find line.

    Seeking work! You can reach me at ikegami@adaelis.com

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11131559]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (3)
As of 2024-04-19 20:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found