Wise monks, I seek counsel.

I can't figure out how to make an xpath query that involves more than one namespace. Full xml shown below. Anyway, this is the code I have been playing with:

#!usr/bin/perl -w use strict; use warnings; use XML::LibXML qw( ); use XML::LibXML::XPathContext qw( ); my $file = $ARGV[0]; my $parser = XML::LibXML->new (); my $dom = $parser->load_xml( location => $file ); my $root = $dom->getDocumentElement(); my $xpc = XML::LibXML::XPathContext->new($root); $xpc->registerNs( 'Borkbot' => 'http://www.Borkbot.com/content', ); my @nodes = $xpc->findnodes('//Borkbot:resourceFilename'); foreach my $node (@nodes) { print $node->to_literal; }

The output looks like so:

$ perl test.pl test.xml Bork_40kbps_44khz.mp3Bork_16khz.awbBork.rmf

But when I try to call out specifically the mp3resource, I get nothing:

my @nodes = $xpc->findnodes('//mp3Resource/Borkbot:resourceFilename'); foreach my $node (@nodes) { print $node->to_literal; }

I'm really new to xpath in general, so I am assuming I am doing something silly with more than one namespace... any tips much appreciated....

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <BorkProduct xmlns="http://www.Borkbot.net/telcel/Bork" xmlns:Borkbot= +"http://www.Borkbot.com/content" xmlns:jcr="http://www.Bork.org/jcr/1 +.0"> <Borkbot:merchant>t_Mexico</Borkbot:merchant> <Borkbot:rating> <Borkbot:scheme>Mexico</Borkbot:scheme> <Borkbot:value>12+</Borkbot:value> </Borkbot:rating> <providerGivenContentId>13224</providerGivenContentId> <title>BORK! Greatest Hits</title> <premium> <mp3Resource> <Borkbot:resourceFilename>Bork_40kbps_44khz.mp3</Borkbot:r +esourceFilename> <Borkbot:mimeType>audio/mp3</Borkbot:mimeType> <size>177320</size> <bitrate>40</bitrate> </mp3Resource> <amrwbResource> <Borkbot:resourceFilename>Bork_16khz.awb</Borkbot:resource +Filename> <Borkbot:mimeType>audio/awb</Borkbot:mimeType> <size>90738</size> </amrwbResource> <rmfResource> <Borkbot:resourceFilename>Bork.rmf</Borkbot:resourceFilena +me> <Borkbot:mimeType>audio/rmf</Borkbot:mimeType> <Borkbot:deviceId>nokia_n73_ver1_sub2020623008b</B +orkbot:deviceId> <Borkbot:deviceId>nokia_n73_ver1_sub30704101</Borkbot:deviceId +> <Borkbot:deviceId>nokia_n73_ver1_sub407473101</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_n73_ver1_sub40735302</Borkbot:deviceId +> <Borkbot:deviceId>nokia_n73_ver1_sub40727221</Borkbot:deviceId +> <Borkbot:deviceId>nokia_n73_ver1_submozilla30638_de</Borkbot:d +eviceId> <Borkbot:deviceId>nokia_n73_ver1_20628001</Borkbot:deviceId> <Borkbot:deviceId>nokia_n73_ver1_sub307051031</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_n73_ver1_20628003</Borkbot:deviceId> <Borkbot:deviceId>nokia_n73_ver1_sub40726201</Borkbot:deviceId +> <Borkbot:deviceId>nokia_n73_ver1_sub140812421</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_n73_ver1_sub408394201</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_n95_ver1_sub_mozilla</Borkbot:deviceId +> <Borkbot:deviceId>nokia_n95_ver1_sub_mozilla_b</Borkbot:device +Id> <Borkbot:deviceId>nokia_n95_ver1_sub_mozilla_c</Borkbot:device +Id> <Borkbot:deviceId>nokia_n95_ver1_sub_8gb</Borkbot:deviceId> <Borkbot:deviceId>nokia_n95_ver1_sub300015nosemi</Borkbot:devi +ceId> <Borkbot:deviceId>nokia_5800d_ver1</Borkbot:deviceId> <Borkbot:deviceId>nokia_5800d_ver1_sub5250200837</Borkbot:devi +ceId> <Borkbot:deviceId>nokia_5800d_ver1_sub1100006</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_5800d_ver1_sub1100009</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_5800d_ver1_sub52502008</Borkbot:device +Id> <Borkbot:deviceId>nokia_5800d_ver1_sub1100010</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_5800d_ver1_sub1100008</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_5800d_ver1_sub200012</Borkbot:deviceId +> <Borkbot:deviceId>nokia_5800d_ver1_sub200012_1</Borkbot:device +Id> <Borkbot:deviceId>nokia_5800d_ver1_sub210025</Borkbot:deviceId +> <Borkbot:deviceId>nokia_5800d_ver1b_212025</Borkbot:deviceId> <Borkbot:deviceId>nokia_n75_ver1_sub1</Borkbot:deviceId> <Borkbot:deviceId>nokia_n95_ver1_sub_8gb_fl3</Borkbot:deviceId +> <Borkbot:deviceId>nokia_n95_ver1_sub_8gb_vf3g</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_n95_ver1_sub_8gb_fl3sub20</Borkbot:dev +iceId> <Borkbot:deviceId>nokia_n95_ver1_sub_8gb_fl3_subusa</Borkbot:d +eviceId> <Borkbot:deviceId>nokia_n95_ver1_sub_8gb_c200016</Borkbot:devi +ceId> <Borkbot:deviceId>nokia_n95_ver1_sub_8gb_fl3sub30</Borkbot:dev +iceId> <Borkbot:deviceId>nokia_n95_ver1_sub_8gb_fl3_sub312011</Borkbo +t:deviceId> <Borkbot:deviceId>nokia_n95_ver1_sub_8gb_fl3_202005</Borkbot:d +eviceId> <Borkbot:deviceId>nokia_n95_ver1_sub_8gb</Borkbot:deviceId> <Borkbot:deviceId>nokia_e71_ver1</Borkbot:deviceId> <Borkbot:deviceId>nokia_e71_ver1_sub10000776</Borkbot:deviceId +> <Borkbot:deviceId>nokia_e71_ver1_sub2_1000776</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_e71_ver1_sub1020781</Borkbot:deviceId> <Borkbot:deviceId>nokia_e71_ver1_subua</Borkbot:deviceId> <Borkbot:deviceId>nokia_e71x_ver1</Borkbot:deviceId> <Borkbot:deviceId>nokia_e71_ver1_sub111007126</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_e71_ver1_sub111007127</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_e71_ver1_sub211007127</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_e71_ver1_sub311007127</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_e71_ver1_sub12002185</Borkbot:deviceId +> <Borkbot:deviceId>nokia_e71_ver1_sub21021006</Borkbot:deviceId +> <Borkbot:deviceId>nokia_e71_ver1_sub120021118</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_e71_ver1_usa_sub12002185</Borkbot:devi +ceId> <Borkbot:deviceId>nokia_e71_ver1_sub111007127u</Borkbot:device +Id> <Borkbot:deviceId>nokia_n85_ver1</Borkbot:deviceId> <Borkbot:deviceId>nokia_n85_ver1_sub10018</Borkbot:deviceId> <Borkbot:deviceId>nokia_n85_ver3</Borkbot:deviceId> <Borkbot:deviceId>nokia_n85_ver1_sub11047</Borkbot:deviceId> <Borkbot:deviceId>nokia_n85_ver1_plain</Borkbot:deviceId> <Borkbot:deviceId>nokia_5700_ver1_sub1</Borkbot:deviceId> <Borkbot:deviceId>nokia_5700_ver1_sub_safari</Borkbot:deviceId +> <Borkbot:deviceId>nokia_5700_ver1_sub</Borkbot:deviceId> <Borkbot:deviceId>nokia_5700_ver1_sub_safari3831</Borkbot:devi +ceId> <Borkbot:deviceId>nokia_5700_ver1</Borkbot:deviceId> <Borkbot:deviceId>nokia_3250_ver1_sub318</Borkbot:deviceId> <Borkbot:deviceId>nokia_3250_ver1_sub321</Borkbot:deviceId> <Borkbot:deviceId>nokia_3250_ver1_sub316</Borkbot:deviceId> <Borkbot:deviceId>nokia_3250_ver1</Borkbot:deviceId> <Borkbot:deviceId>nokia_3250_ver1_sub0414</Borkbot:deviceId> <Borkbot:deviceId>nokia_e65_ver1106335802</Borkbot:deviceId> <Borkbot:deviceId>nokia_e65_ver1</Borkbot:deviceId> <Borkbot:deviceId>nokia_e65_ver1_sub106331802</Borkbot:deviceI +d> <Borkbot:deviceId>nokia_e65_ver1101063316</Borkbot:deviceId> <Borkbot:deviceId>nokia_e65_sub106331801</Borkbot:deviceId> </rmfResource> </premium> </BorkProduct>


In reply to Libxml xpath queries involving more than one name space. by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.