[jdom-interest] XPath selectNodes() returns empty List

Leyzerzon, Simeon simeon.leyzerzon at csfb.com
Tue Oct 18 10:18:57 PDT 2005


Hi,

I'm having a problem and don't seem to be able to find the cause of it.  
Here are the details.

I'm processing the following xml file insided of a Java program using JDOM 1.0



<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE decision-process SYSTEM "decision-process.dtd">-->
<decision-process>
	<decision type="primitive" id="fppLogic">
		<rule-file>FPPLogic.drl</rule-file>
		<supporting-class>com.csfb.fao.clr.calc.rule.FacilPortfPosition</supporting-class>
	</decision>
	<decision type="primitive" id="sellExists">
		<rule-file>SellExists.drl</rule-file>
		<supporting-class>com.csfb.fao.clr.calc.rule.PortfolioParticipationSell</supporting-class>
	</decision>
	<decision type="primitive" id="outstanding">
		<rule-file>OutstandingLogic.drl</rule-file>
		<supporting-class>com.csfb.fao.clr.calc.rule.Outstanding</supporting-class>
	</decision>
	<decision type="composite" id="outstandingComposite">
		<supporting-class>com.csfb.fao.clr.calc.rule.OutstandingComposite</supporting-class>
		<!--<decision type="primitive" name="sellExists">
			<rule-file>SellExists.drl</rule-file>
			<supporting-class>com.csfb.fao.clr.calc.rule.PortfolioParticipationSell</supporting-class>
		</decision>-->
		<decision ref="sellExists"/>
		<decision ref="outstanding"/>
	</decision>
</decision-process>

The following is the xpath string I'm evaluating:

//decision [@id =//decision [supporting-class='com.csfb.fao.clr.calc.rule.OutstandingComposite']/decision/@ref/text()]/supporting-class/text()

The problem is that inside my Java code the List of nodes doesn't get populated and stays empty whereas when I'm using XPath Explorer from http://www.purpletech.com/xpe/index.jsp

it returns the expected list of supporting classes:

com.csfb.fao.clr.calc.rule.PortfolioParticipationSell
com.csfb.fao.clr.calc.rule.Outstanding

I'm using the following syntax in my Java code where xpathString is the expression mentioned above:

XPath x = XPath.newInstance(xpathString);
result = x.selectNodes(doc);

and the result returns empty.

I've been experimenting with passing different expressions in the hopes of maybe figuring this behavior out, and found out
that this expression works:

//decision [supporting-class='com.csfb.fao.clr.calc.rule.OutstandingComposite']/decision/@ref

but as soon as I add text() onto it, it stops working in Java, that is

//decision [supporting-class='com.csfb.fao.clr.calc.rule.OutstandingComposite']/decision/@ref/text() doesn't work.

XPath Explorer works in every case.

Please give me a hand as I don't want to resort to handcoding a bunch of loops inside of my Java code if I could use a simple XPath expression instead.

Thank you very much in advance!


> Simeon Leyzerzon
> Risk IT
> CREDIT | First 
>       SUISSE | Boston
      
      Tel: 212-538-7518



==============================================================================
Please access the attached hyperlink for an important electronic communications disclaimer: 

http://www.csfb.com/legal_terms/disclaimer_external_email.shtml

==============================================================================



More information about the jdom-interest mailing list