Thank you Henry, that worked. (i don't have it in endorsed, btw) But having
done that it still results in a NullPtrException the same as when i used new
XPatchFactoryImpl, here
because the dtm is null, HERE
public void setRoot(int root)
{
// %OPT% Get this directly from the lpi.
XPathContext xctxt = wi().getXPathContext();
m_dtm = xctxt.getDTM(root);
m_traverser = m_dtm.getAxisTraverser(m_axis); /* HERE m_dtm is null */
m_isFresh = true;
m_foundLast = false;
m_root = root;
m_currentNode = root;
if (DTM.NULL == root)
{
throw new RuntimeException(
XSLMessages.createXPATHMessage(XPATHErrorResources.ER_SETTING_WALKER_ROOT_TO_NULL,
null)); //"\n !!!! Error! Setting the root of a walker to null!!!");
}
resetProximityPositions();
}
AxesWalker.setRoot(int) line: 221
WalkingIterator.setRoot(int, Object) line: 157
XNodeSet(NodeSequence).setRoot(int, Object) line: 265
WalkingIterator(LocPathIterator).execute(XPathContext) line: 212
XPath.execute(XPathContext, int, PrefixResolver) line: 337
XPath.execute(XPathContext, Node, PrefixResolver) line: 303
XPathImpl.eval(String, Object) line: 216
XPathImpl.evaluate(String, Object, QName) line: 281
ExtensionsWithXPath.exfunc(ExpressionContext) line: 28
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available
[native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 585
ExtensionHandlerJavaClass.callFunction(String, Vector, Object,
ExpressionContext) line: 401
ExtensionHandlerJavaClass.callFunction(FuncExtFunction, Vector,
ExpressionContext) line: 440
ExtensionsTable.extFunction(FuncExtFunction, Vector, ExpressionContext) line:
222
TransformerImpl.extFunction(FuncExtFunction, Vector) line: 473
FuncExtFunction.execute(XPathContext) line: 208
FuncExtFunction(Expression).executeCharsToContentHandler(XPathContext,
ContentHandler) line: 313
ElemValueOf.execute(TransformerImpl) line: 274
ElemApplyTemplates.transformSelectedNodes(TransformerImpl) line: 395
ElemApplyTemplates.execute(TransformerImpl) line: 178
TransformerImpl.executeChildTemplates(ElemTemplateElement, boolean) line: 2400
TransformerImpl.applyTemplateToNode(ElemTemplateElement, ElemTemplate, int)
line: 2270
TransformerImpl.transformNode(int) line: 1356
TransformerImpl.transform(Source, boolean) line: 709
TransformerImpl.transform(Source, Result, boolean) line: 1273
TransformerImpl.transform(Source, Result) line: 1251
ExtensionsWithXPath.main(String[]) line: 21
----- Original Message -----
From: Henry Zongaro
To: [EMAIL PROTECTED]
Cc: [email protected]
Sent: Saturday, February 09, 2008 7:25 AM
Subject: RE: XPath in extension functions 'Could not resolve the node to a
handle'
Hi, Dave.
"Dave Brosius" <[EMAIL PROTECTED]> wrote on 2008-02-08 06:42:13 PM:
> Some further snooping reveals, that i am using the
> com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl
>
> factory, even tho i have xalan.jar on my path. Further when i set this
>
> System.setProperty("javax.xml.xpath.XPathFactory", "org.
> apache.xpath.jaxp.XPathFactoryImpl");
>
> I still am getting the sun factory.
>
> I am assuming this is the root of the problem. How do i get the
> apache one? I even set the property on the cmd line to no avail.
XPathFactory allows for different factories based on the input data model. I
believe the actual system property you set should be:
System.setProperty("javax.xml.xpath.XPathFactory:"
+XPathConstants.DOM_OBJECT_MODEL,
"org.apache.xpath.jaxp.XPathFactoryImpl");
Also, is xalan.jar merely on your class path or have you used the Java
endorsed standards override mechanism? See [1] for more information.
Thanks,
Henry
[1] http://xml.apache.org/xalan-j/faq.html#faq-N100EF
------------------------------------------------------------------
Henry Zongaro XSLT Processors Development
IBM SWS Toronto Lab T/L 313-6044; Phone +1 905 413-6044
mailto:[EMAIL PROTECTED]