XPath is a Ruby DSL around a subset of XPath 1.0. It’s primary purpose is to facilitate writing complex XPath queries from Ruby code.
To create quick, one of expressions, XPath.generate can be used:
XPath.generate { |x| x.descendant(:ul)[x.attr(:id) == 'foo'] }
However for more complex expressions, it is probably ore convenient to include the XPath module into your own class or module:
module MyXPaths include XPath def foo_ul descendant(:ul)[attr(:id) == 'foo'] end def password_field(id) descendant(:input)[attr(:type) == 'password'][attr(:id) == id] end end
Both ways return an XPath::Expression instance, which can be further modified. To convert the expression to a string, just call #to_s on it.
XPath comes with a set of premade XPaths for use with HTML documents.