On Fri, Jul 9, 2010 at 12:51 PM, Jeremy Boynes <jboy...@apache.org> wrote:
> In light of the performance issues logged against the XML taglib and 
> functional issues like #49578, I was looking at refactor the XML tags to use 
> the JAXP XPath API to pre-compile expressions and dynamically resolve 
> variables. I think this can be done fairly easily and will eliminate a lot of 
> the integration code in XPathUtil. However, I could not see how to expose the 
> full iteration context described in the spec for <x:forEach>:
>
> * the context position is the iteration 'count' (with the same meaning as in 
> <c:forEach>)
> * the context size is equal to the number of nodes in the node-set over which 
> <x:forEach> is iterating
>
> It looks like the current implementation does not support this:
>        https://issues.apache.org/bugzilla/show_bug.cgi?id=22765
> and in testing these functions always return -1 and 0 respectively.
>
> Presumably these should be returned by the XPath core functions position() 
> and last() respectively. However, the JAXP API only allows a single Node to 
> be passed in for evaluation and I could not see a way to provide the context 
> needed by these functions. I think this might be a limitation of JAXP.
>
> I plan to go ahead with the refactor as I think by simplifying our 
> implementation we will address the current performance issues and fix some of 
> the functional edge cases. It will also remove the hard dependency on the 
> Xalan implementation.The iteration context functions will remain broken 
> consistent with the current implementation.
>
> It might be possible to make this work using the low-level internal Xalan 
> APIs as this functionality is supported in Xalan's XSLT processing. To 
> support this in the future, I'll try to make the XPath usage pluggable so we 
> can drop in a Xalan-specific version in the future.
>
> Thoughts?

+1. Resolving the speed and some of the issues is worth making it
harder to resolve the other issues imo.

Hen

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to