If I have an XPath query like
No开发者_开发技巧deA/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)
- Get results of NodeA, call it "first set"
- Get results of NodeB from "first set"
- Filter where [@WIDTH and not(@WIDTH="20")]
- Filter NodeD, call this "node d for B"
- Get results of NodeC from "first set"
- Filter where [@WIDTH and not(@WIDTH="20")]
- Filter NodeD, call this "node d for C"
- 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.
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
精彩评论