47d_
47d_

Reputation: 3527

Express XPath as an expression tree

If I have an XPath query like

NodeA/NodeB[@WIDTH and not(@WIDTH="20")] | NodeC[@WIDTH and not(@WIDTH="20")]/NodeD

Is there any API available to visualize this XPath query as a stack of atomic expressions, something like (following is generic)

  1. Get results of NodeA, call it "first set"
  2. Get results of NodeB from "first set"
  3. Filter where [@WIDTH and not(@WIDTH="20")]
  4. Filter NodeD, call this "node d for B"
  5. Get results of NodeC from "first set"
  6. Filter where [@WIDTH and not(@WIDTH="20")]
  7. Filter NodeD, call this "node d for C"
  8. Combine "node d for B" and "node d for C"

I am trying to see if we can convert the XPath expression into custom expression which is close to english and vice versa.

If no API is available, what would be the best approach? Thanks in advance.

Upvotes: 1

Views: 644

Answers (1)

Dimitre Novatchev
Dimitre Novatchev

Reputation: 243569

You can use any open source XPath parser and customize it for your needs, but this could be quite challenging.

XQuery has a XML-based representation (XQueryX) and this covers XPath 2.0 completely. However people have to write in this XML representation, not the reverse. I am not aware of a translator between XQuery and XQueryX. If such existed, it would come close to serving your needs.

Update: There is such translating tool: the W3C XPath/XQuery Applets. Especially see the Grammar Test Page for XPath 2.0.

Here is how the tool works:

alt text http://www.freeimagehosting.net/uploads/c85e730293.png

Upvotes: 1

Related Questions