David wrote:

Upayavira wrote:

David wrote:

Sylvain Wallez wrote:

David wrote:

I am writing a cocoon transformer and need to know when any of multiple xpaths match. I'm sure there must be a be a more efficient way then converting it to a DOM document and then running each xpath to get the nodelist of each.

What is the best way to do this?

Take a look at this http://www.idealliance.org/papers/dx_xmle04/papers/03-07-02/03-07-02.html, stream based matching against several XPaths. IIRC there are more research and maybe even implementations of similar ideas, but I don't remember any references.

The problem with XPath is that it's intrinsically tied to the DOM hierarchical model. So you need to have a DOM ready to query the document with XPath.

You may want to have a look at STX [1], which uses a subset of XPath that is suited to streamed processing.

Sylvain

[1] http://stx.sourceforge.net/

I was looking at STX too but couldn't find a way to use it from Java. Anyone know how you use it without making an stx file?

I understand the issue with xpaths and needing DOM. I know xalan has its Document Table Model (DTM) that improves on performance. Anyone know if we can tap into that without writting a XSL file?

For an example of using STX in java, see the STX block, that allows you to use STX as a normal Cocoon transformer.

Regards, Upayavira

I looked in there already :-)
There are no Java examples. Only xmap and stx files. Maybe in some branch of cocoon?

Take a look at http://joost.sourceforge.net/ the implementation that we use, there are some Java examples there, IIRC. Joost implements the Trax API, so there where never any need for writting any Java code for the STX transformer, I just used the TraxTransformer with another configuration.

/Daniel

Reply via email to