You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xindice-dev@xml.apache.org by Gul Akbar <G....@Bradford.ac.uk> on 2003/03/30 17:56:13 UTC

Re: XPath for Xindice - the solution

Hello,

I have finally solved my problem. I am writing this in case someone else has a 
similar problem.

For the document that contains multiple namespaces, you need to have a line in 
your Java class for each of the namespace (thanks Ciao).
The XPath would look different for having different types of namespaces.

For example, you can define a "global" namespace like the following:

<mets:mets xmlns:mets="some uri" xmlns:nnn="some other uri">
 <mets:fieldOne> bb </mets:fieldOne>
 <mets:fieldTwo> aa </mets:fieldTwo>
 <nnn:aField> dd </nnn:aField>
</mets:mets>

which is equivalent to:

<mets xmlns="http://wateva.com/some/" xmlns:nnn="http://someOtherURI.com/">
 <fieldOne> bb </fieldOne>
 <fieldTwo> aa </fieldTwo>
 <nnn:aField> dd </nnn:aField>
</mets>

[Note: the xmlns declaration defines the global ]

Therefore to access these, the XPathQueryService would have the following:

XPathQueryService service = (XPathQueryService) col.getService
("XPathQueryService", "1.0");

 service.setNamespace("mets","http://wateva.com/some/");
 service.setNamespace("nnn","http://someOtherURI.com/");


and the XPath to use here would be:

 //mets:mets [ /mets:mets/mets:fieldOne = ' bb ' ]

and similarly for the other namespaces:

 //mets:mets [ /mets:mets/nnn:aField = ' dd ' ]



Thanks for the responses.
Gul Akbar


Quoting Gul Akbar <G....@Bradford.ac.uk>:

> Hi,
> I have now found that the XPath is wrong. I tried the XPath in an XSL
> and it
> didnt pick the node up. Is there a good site I can look at, or examples
> for XSL
> 
> (XPath) for the namespace tags? I think if I can sort the XPath out
> first in
> XSL then I'l use the XPathQueryService class.
> 
> Does anyone know the XPath to the <name> and <ETOC:TEXT> tags in the
> attached
> document?
> 
> Thanks
> Gul
> 
> 
> Quoting Gianugo Rabellino <gi...@apache.org>:
> 
> > Gul Akbar wrote:
> > > I have tried removing all the occurences of the namespace in the
> XML
> > records,
> > > and the XPath works fine. So this leaves me to believe that there
> must
> > be
> > > something to do with the XPathQueryService class and the way it
> > detects
> > > namespaces.
> > >
> > > Has anyone come across this before.
> > >
> >
> > AFAIK namespaces work just fine: we rely on the Xalan engine, so
> > basically if they work with XSLT they should work with Xindice, so I
> > tend to suspect that there is something wrong in your code or in
> your
> > documents. Have you removed the following line?
> >
> >   service.setNamespace("xmlns","http://www.loc.gov/METS/");
> >
> > Ciao,
> >
> > --
> > Gianugo Rabellino
> > Pro-netics s.r.l.
> > http://www.pro-netics.com
> >
> >
> 
> 
> -------------------------------------------------
> This mail sent through IMP: webmail.brad.ac.uk
> 
> ----- End forwarded message -----
> 
> 
> -------------------------------------------------
> This mail sent through IMP: webmail.brad.ac.uk
> 


-------------------------------------------------
This mail sent through IMP: webmail.brad.ac.uk