Thank Andreas for the detailed information. I think the option 2 is great but seems a long-term solution. The option 1 is an acceptable solution if there is an XPATH 2.0 engine supporting custom object models effectively.
~ Indika On Sun, Jul 24, 2011 at 2:23 AM, Andreas Veithen <[email protected]> wrote: > Axiom uses Jaxen for its XPath support because Jaxen has an > abstraction layer that allows to plug in any object model. The > javax.xml.xpath API is also designed to support multiple object > models, however AFAIK existing implementations only support DOM. That > means that one would have to convert the entire message to DOM every > time an XPath expression is evaluated. Obviously that is not a good > thing to do. > > Since building and maintaining an XPath 2.0 implementation is out of > the scope of the Axiom project, this leaves us with two reasonable > options: > > 1. Find an existing XPath 2.0 implementation that has the same level > of object model independence as Jaxen. If such an implementation > exists, one would only have to write the glue code to integrate it > with Axiom. > > 2. Use an Axiom implementation that not only implements enough of the > Axiom API to support the Axis2 and Synapse runtime, but also provides > a decent implementation of the DOM API so that an existing > implementation of the javax.xml.xpath API can be used. This is not the > case for DOOM: it doesn't implement the Axiom API well enough to run > Axis2. I've been working for some time on a project [1] that provides > this kind of implementation. It is making steady progress, but it is > still very experimental and is only able to run some parts of the > Axis2 runtime. > > Andreas > > [1] http://code.google.com/p/ddom/ > > On Fri, Jul 15, 2011 at 05:01, indika kumara <[email protected]> wrote: >> Heshan, I think the better option is to use the standard >> javax.xml.xpath API, and try to avoid AXIOMXPath. It seems that saxon >> supports javax.xml.xpath API. It should be a matter of configuring a >> property to force to use Saxon implementation - just like XSLT >> transformation, Schema validation. >> >> There may be a trade-off between flexibility and performance with the >> selection of a standard API or AXIOMXPath. However, with OMSource >> [3-4] or similar thing, you should be able to plug AXIOM XML model to >> the XPATH engine in a standard way. So, effectively, you may be able >> to get any performance gain (if there are) from the use of AXIOMXPath >> with the standard way too. BTW, anything needs to be validated. >> >> Thanks, >> >> Indika >> >> [1] >> http://download.oracle.com/javase/1.5.0/docs/api/javax/xml/xpath/package-frame.html >> [2] http://www.saxonica.com/documentation/javadoc/index.html >> [3] >> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/jaxp/ >> [4] >> http://ws.apache.org/axiom/apidocs/org/apache/axiom/om/impl/jaxp/OMSource.html >> >> On Fri, Jul 15, 2011 at 12:15 PM, Heshan Suriyaarachchi >> <[email protected]> wrote: >>> Hi Devs, >>> Synapse currently does not support XPath 2.0. I am looking into a way of >>> adding this support for Synapse. >>> SynapseXPath is written by extending AXIOMXPath which is using Jaxen. Jaxen >>> does not support XPath 2.0. That is the reason that we can not use XPath 2.0 >>> in Synapse. >>> I would like to get your valuable feedback on the way to go with $subject. >>> >>> [1] >>> - http://mail-archives.apache.org/mod_mbox/ws-dev/201107.mbox/%3ccamtot2qsuf2vb7pas_hln29_k3anwnywyceolq_s6ygtaas...@mail.gmail.com%3E >>> [2] - https://issues.apache.org/jira/browse/AXIOM-367 >>> -- >>> Regards, >>> Heshan Suriyaarachchi >>> >>> http://heshans.blogspot.com/ >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
