Hi Rhys,

I had a look at this problem, and the only mistake I noticed was that
content attribute of the first LookUpInfo element is missing the closing
quotation mark - but I'm assuming that's just a typo in  your e-mail.

It looks like this may be a bug in Xalan, but we'd need some more
information to reproduce it.  Can you provide some more Java code showing
how you are getting converterAdditionalMappingNode?  Ideally, put together
the simplest Java program and input XML file that shows this problem.  Also
- what version of Xalan are you using?

Thanks,

Kevin Cormier
Software Developer, XSLT Development
IBM Toronto Lab, D1-107
Phone: 905-413-5771
E-mail:  [EMAIL PROTECTED]


                                                                           
             "Rhys Parry"                                                  
             <[EMAIL PROTECTED]                                             
             .com>                                                      To 
                                       <xalan-j-users@xml.apache.org>      
             09/26/2006 11:32                                           cc 
             AM                                                            
                                                                   Subject 
                                       Problem with recursive xpath        
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




All,

I am getting the error: java.lang.RuntimeException: Could not resolve the
node to a handle
The error is very odd as it runs the first node successfully but throws an
exception on the second node, regardless of which node is executed ( I
moved the xml nodes around in the XML file).

Basically the program is parsing 2 files.  I file is the xml client data
(No problems even though I traverse the tree up and down) and the other is
an xml config file with xpath expressions in it.  An example of the xml I
am trying to run is (this is the xml config file):
<!-- Runs fine -->
<FieldMapping identifier="1.SubmissionType"
xpath="SubmissionTypeCode/text()"
converter="com.infoterra.grantium.service.integration.datamapper.converters.impl.LookupConverter">

             <ConverterAdditionalMapping>
                         <LookUpInfo constant="SF424_SUBMISSION_TYPE/>
             </ConverterAdditionalMapping>
</FieldMapping>

<!-- exception is thrown -->
<FieldMapping identifier="2.ApplicationType"
xpath="ApplicationTypeCode/text()"
converter="com.infoterra.grantium.service.integration.datamapper.converters.impl.LookupConverter">

             <ConverterAdditionalMapping>
                         <LookUpInfo constant="SF424_APPLICANT_TYPE"/>
             </ConverterAdditionalMapping>
</FieldMapping>

The java code that is calling the xpath is:
//Note that this is recreated for every node.  Is this part of the
problem?????
XPathFactory xpathfactory= XPathFactory.newInstance();

XPath xpath  = xpathfactory.newXPath();

//converterAdditionalMappingNode is the <ConverterAdditionalMapping> node
String lookupConstant = (String)xpath.evaluate("LookUpInfo/@constant",
converterAdditionalMappingNode, XPathConstants.STRING);


Note that I have XMLBean'ed the config file so that I can traverse it with
objects, however the <ConverterAdditionalMapping> node is supposed to be
client specific and therefore cannot be XMLBean'ed.

Why is there a problem with this?
The stack trace is:
Caused by: java.lang.RuntimeException: Could not resolve the node to a
handle
             at
org.apache.xml.dtm.ref.DTMManagerDefault.getDTMHandleFromNode(DTMManagerDefault.java:625)

             at
org.apache.xpath.XPathContext.getDTMHandleFromNode(XPathContext.java:220)
             at org.apache.xpath.XPath.execute(XPath.java:274)
             at org.apache.xpath.jaxp.XPathImpl.eval(XPathImpl.java:210)
             at
org.apache.xpath.jaxp.XPathImpl.evaluate(XPathImpl.java:275)
             at
com.infoterra.grantium.service.integration.datamapper.converters.impl.LookupConverter.convertSimpleData(LookupConverter.java:48)

             ... 27 more

I am trying to create a work around for now, but this will become a much
larger issue once the client configs become increasingly complicated.


Thanks in advance for any and all advice,
Rhys Parry
Product Development

Infoterra Inc. - Leadership in Enterprise Grants Management (EGM) Solutions
Phone #: 613-230-7890 Ext: 239
Fax #: 613-230-5243



Reply via email to