Hi, Ive just joined this mailing list and I have a question regarding XPath and namespaces which I am trying to achive through a Java class. Below, I have included the XML docuement in my database which I am trying to query. Basically there are many namespaces declared in the root node, and I was wondering how the XPathQueryServive interface can handle this.
The XPath:
----------------
//mets[ /mets/metsHdr/agent/name='Gul Akbar' ]
----------------
However this returns no results.
The Java part (ive tried with and without setNamespaces - both returning no
results). Later I want to try getting the tags that have ETOC namespace (see
below).
----------------
XPathQueryService service = (XPathQueryService) col.getService
("XPathQueryService", "1.0");
service.setNamespace("xmlns","http://www.loc.gov/METS/");
service.setNamespace("xmlns:xlink","http://www.w3.org/TR/xlink");
service.setNamespace("xmlns:DC","http://purl.org/dc/elements/1.1/");
service.setNamespace
("xmlns:ETOC","http://localhost:8080/Project/xsd/etoc.xsd");
service.setNamespace("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
service.setNamespace("xsi:schemaLocation","http://www.loc.gov/METS/
http://www.loc.gov/standards/mets/mets.xsd
http://purl.org/dc/elements/1.1/
http://dublincore.org/schemas/xmls/simpledc20021212.xsd");
System.out.println("xmlns: "+ service.getNamespace("xmlns"));
System.out.println("xlink: "+ service.getNamespace("xlink"));
System.out.println("DC: "+ service.getNamespace("DC"));
System.out.println("ETOC: "+ service.getNamespace("ETOC"));
System.out.println("xsi: "+ service.getNamespace("xsi"));
System.out.println("schemaLocation: "+
service.getNamespace("schemaLocation"));
ResourceSet resultSet = service.query(xpath);
ResourceIterator results = resultSet.getIterator();
----------------
The record in question.
----------------
<?xml version="1.0"?>
<mets xmlns="http://www.loc.gov/METS/"
xmlns:xlink="http://www.w3.org/TR/xlink"
xmlns:DC="http://purl.org/dc/elements/1.1/"
xmlns:ETOC="http://localhost:8080/Project/xsd/etoc.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.loc.gov/METS/
http://www.loc.gov/standards/mets/mets.xsd
http://purl.org/dc/elements/1.1/
http://dublincore.org/schemas/xmls/simpledc20021212.xsd">
<metsHdr>
<agent ROLE="CREATOR" TYPE="INDIVIDUAL">
<name>Gul Akbar</name>
</agent>
</metsHdr>
<dmdSec ID="ART_DMDID_DC">
<mdWrap MDTYPE="DC">
<xmlData>
<DC:identifier>RN087521709</DC:identifier>
</xmlData>
</mdWrap>
</dmdSec>
<dmdSec ID="ART_DMDID_ETOC">
<mdWrap MDTYPE="OTHER" OTHERMDTYPE="ETOC">
<xmlData>
<ETOC:ATI>BRV</ETOC:ATI>
<ETOC:ID>RN087521709</ETOC:ID>
<ETOC:ISSUE>2000; VOL 9; PART 3</ETOC:ISSUE>
<ETOC:LANG>E</ETOC:LANG>
<ETOC:PAGE>189-200</ETOC:PAGE>
<ETOC:TEXT>Book review/viewpoint on Ian Angell's book- `The New
Barbarian Manifesto: How to Survive in the Information Age'
</ETOC:TEXT>
</xmlData>
</mdWrap>
</dmdSec>
<amdSec>
<rightsMD ID="ART_ADMID1">
<mdWrap MDTYPE="DC">
<xmlData>
<DC:rights>Copyright is owned by the publisher</DC:rights>
</xmlData>
</mdWrap>
</rightsMD>
</amdSec>
<structMap>
<div TYPE="ARTICLE" DMDID="ART_DMDID_ETOC ART_DMDID_DC" ADMID="ART_ADMID1">
<mptr LOCTYPE="URN" xlink:type="simple" xlink:href="RN087521709.xml" />
</div>
</structMap>
</mets>
----------------
I have used XML Spy 5 and used the XPath creator to test the above XPath, and
that seems to be picking it up. Im definately doing something wrong in the
Java, as far as I know.
Ive attached the record and the Java class.
Can anyone help me?
Thanks in advance.
Gul Akbar
-------------------------------------------------
This mail sent through IMP: webmail.brad.ac.uk
<?xml version="1.0"?> <mets xmlns="http://www.loc.gov/METS/" xmlns:xlink="http://www.w3.org/TR/xlink" xmlns:DC="http://purl.org/dc/elements/1.1/" xmlns:ETOC="http://localhost:8080/Project/xsd/etoc.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/METS/ http://www.loc.gov/standards/mets/mets.xsd http://purl.org/dc/elements/1.1/http://dublincore.org/schemas/xmls/simpledc20021212.xsd"> <metsHdr> <agent ROLE="CREATOR" TYPE="INDIVIDUAL"> <name>Gul Akbar</name> </agent> </metsHdr> <dmdSec ID="ART_DMDID_DC"> <mdWrap MDTYPE="DC"> <xmlData> <DC:identifier>RN087521709</DC:identifier> </xmlData> </mdWrap> </dmdSec> <dmdSec ID="ART_DMDID_ETOC"> <mdWrap MDTYPE="OTHER" OTHERMDTYPE="ETOC"> <xmlData> <ETOC:ATI>BRV</ETOC:ATI> <ETOC:ID>RN087521709</ETOC:ID> <ETOC:ISSUE>2000; VOL 9; PART 3</ETOC:ISSUE> <ETOC:LANG>E</ETOC:LANG> <ETOC:PAGE>189-200</ETOC:PAGE> <ETOC:TEXT>Book review/viewpoint on Ian Angell's book- `The New Barbarian! Manifesto: How to Survive in the Information Age'</ETOC:TEXT> </xmlData> </mdWrap> </dmdSec> <amdSec> <rightsMD ID="ART_ADMID1"> <mdWrap MDTYPE="DC"> <xmlData> <DC:rights>Copyright is owned by the publisher</DC:rights> </xmlData> </mdWrap> </rightsMD> </amdSec> <structMap> <div TYPE="ARTICLE" DMDID="ART_DMDID_ETOC ART_DMDID_DC" ADMID="ART_ADMID1"> <mptr LOCTYPE="URN" xlink:type="simple" xlink:href="RN087521709.xml" /> </div> </structMap></mets>
XMLDatabase.java
Description: Binary data
