Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » JDOM User »

RE: [jdom-interest] JDOM and XPath confusion

Edelson, Justin

2006-08-21


Is the XML below a complete document or an element within some larger
document? If there's a parent element to the mets element, then I think
you should use
"//*[local-name()='mets']/*[local-name()='dmdSec']/*[local-name()='mdWra
p'][@(protected)
your Xpath.

-----Original Message-----
From: jdom-interest-bounces@(protected)
[mailto:jdom-interest-bounces@(protected)
Sent: Monday, August 21, 2006 11:10 AM
To: jdom-interest@(protected)
Subject: [jdom-interest] JDOM and XPath confusion

Hi Folks,

Apologies for the newbie question; I hope this list is the right place
to post this.

I'm trying to use the JDOM implementation for XPath, and am consistently

getting no results from any of my queries, despite following a variety
of different documentation pages all of which claim to work. I must be
doing something really obvious wrong, but I can't for the life of me see

what it is.

I have an XML document:

<mets xmlns="http://www.loc.gov/METS/">
 <dmdSec ID="ID0">
  <mdWrap MDTYPE="MODS">
    <xmlData>
     <mods xmlns="http://www.loc.gov/mods/v3" version="3.2">
  <genre>Journal</genre>
  <titleInfo>
    <title>
   Activation of the light sensitive channels,
   TRP and TRPL, in Drosophila.
        </title>
      </titleInfo>
      <name type="personal">
    <role>
         <roleTerm type="text">author</roleTerm>
    </role>
    <namePart>xxxx</namePart>
    <description>111111</description>
    <description>aaaaaa</description>
  </name>
 </mods>
    </xmlData>
  </mdWrap>
 </dmdSec>
</mets>

And I'm trying to extract the section starting <mods> using an XPath
expression.

So far, I have tried the following (the first one of which evaluates
correctly using the XPath Explorer):

/*[local-name()='mets']/*[local-name()='dmdSec']/*[local-name()='mdWrap'
][@(protected)']

/mets/dmdSec/mdWrap[@(protected)

using code that looks like this:

String xpath=ConfigurationManager.getProperty("mods.xpath");
System.out.println("using xpath: " + xpath);
XPath x = XPath.newInstance(xpath);
x.addNamespace("mets", "http://www.loc.gov/METS/");
List mods = x.selectNodes(mets);
System.out.println("I counted: " + mods.size() + "results");
System.out.println("This is the mods data:" + mods.toString());

I have also tried using

/mets:mets/mets:dmdSec/mets:mdWrap[@(protected)

to get the wrapper XML, and also replacing:

x.addNamespace("mets", "http://www.loc.gov/METS/");

with

x.addNamespace(mets.getNamespace());

where mets is the JDOM Element object that I am querying, representing
the above XML. I've also tried leaving this line out altogether.

Can anyone see what I'm doing wrong? I always get the result:

using xpath: [whatever expression I'm trying]
I counted: 0 results
This is the mods data:[]

Any help would be very gratefully received; thanks in advance

All the best,

--
Richard
-------
Richard Jones
Web and Database Technology Specialist
Imperial College London
t: +44 (0)20 759 41815
e: richard.d.jones@(protected)
_______________________________________________
To control your jdom-interest membership:
http://www.jdom.org/mailman/options/jdom-interest/youraddr@(protected)

_______________________________________________
To control your jdom-interest membership:
http://www.jdom.org/mailman/options/jdom-interest/youraddr@(protected)
©2008 junlu.com - Jax Systems, LLC, U.S.A.