XPath is Go package provides selecting nodes from XML, HTML or other documents using XPath expression.
- 
htmlquery - an XPath query package for HTML document
 - 
xmlquery - an XPath query package for XML document.
 - 
jsonquery - an XPath query package for JSON document
 
The basic XPath patterns cover 90% of the cases that most stylesheets will need.
- 
node: Selects all child elements with nodeName of node. - 
*: Selects all child elements. - 
@attr: Selects the attribute attr. - 
@*: Selects all attributes. - 
node(): Matches an org.w3c.dom.Node. - 
text(): Matches a org.w3c.dom.Text node. - 
comment(): Matches a comment. - 
.: Selects the current node. - 
..: Selects the parent of current node. - 
/: Selects the document node. - 
a[expr]: Select only those nodes matching a which also satisfy the expression expr. - 
a[n]: Selects the nth matching node matching a When a filter's expression is a number, XPath selects based on position. - 
a/b: For each node matching a, add the nodes matching b to the result. - 
a//b: For each node matching a, add the descendant nodes matching b to the result. - 
//b: Returns elements in the entire document matching b. - 
a|b: All nodes matching a or b, union operation(not boolean or). - 
(a, b, c): Evaluates each of its operands and concatenates the resulting sequences, in order, into a single result sequence - 
(a/b): Selects all matches nodes as grouping set. 
- 
child::*: The child axis selects children of the current node.child::node(): Selects all the children of the context node.child::text(): Selects all text node children of the context node.
 - 
descendant::*: The descendant axis selects descendants of the current node. It is equivalent to '//'. - 
descendant-or-self::*: Selects descendants including the current node. - 
attribute::*: Selects attributes of the current element. It is equivalent to @* - 
following-sibling::*: Selects nodes after the current node. - 
preceding-sibling::*: Selects nodes before the current node. - 
following::*: Selects the first matching node following in document order, excluding descendants. - 
preceding::*: Selects the first matching node preceding in document order, excluding ancestors. - 
parent::*: Selects the parent if it matches. The '..' pattern from the core is equivalent to 'parent::node()'. - 
ancestor::*: Selects matching ancestors. - 
ancestor-or-self::*: Selects ancestors including the current node. - 
self::*: Selects the current node. '.' is equivalent to 'self::node()'. 
The gxpath supported three types: number, boolean, string.
- 
path: Selects nodes based on the path. - 
a = b: Standard comparisons.a = b: True if a equals b.a != b: True if a is not equal to b.a < b: True if a is less than b.a <= b: True if a is less than or equal to b.a > b: True if a is greater than b.a >= b: True if a is greater than or equal to b.
 - 
a + b: Arithmetic expressions.- aUnary minusa + b: Additiona - b: Subtractiona * b: Multiplicationa div b: Divisiona mod b: Modulus (division remainder)
 - 
a or b: Booleanoroperation. - 
a and b: Booleanandoperation. - 
(expr): Parenthesized expressions. - 
fun(arg1, ..., argn): Function calls: 
| Function | Supported | 
|---|---|
boolean() | 
✓ | 
ceiling() | 
✓ | 
choose() | 
✗ | 
concat() | 
✓ | 
contains() | 
✓ | 
count() | 
✓ | 
current() | 
✗ | 
document() | 
✗ | 
element-available() | 
✗ | 
ends-with() | 
✓ | 
false() | 
✓ | 
floor() | 
✓ | 
format-number() | 
✗ | 
function-available() | 
✗ | 
generate-id() | 
✗ | 
id() | 
✗ | 
key() | 
✗ | 
lang() | 
✗ | 
last() | 
✓ | 
local-name() | 
✓ | 
lower-case()1 | 
✓ | 
matches() | 
✓ | 
name() | 
✓ | 
namespace-uri() | 
✓ | 
normalize-space() | 
✓ | 
not() | 
✓ | 
number() | 
✓ | 
position() | 
✓ | 
replace() | 
✓ | 
reverse() | 
✓ | 
round() | 
✓ | 
starts-with() | 
✓ | 
string() | 
✓ | 
string-join()1 | 
✓ | 
string-length() | 
✓ | 
substring() | 
✓ | 
substring-after() | 
✓ | 
substring-before() | 
✓ | 
sum() | 
✓ | 
system-property() | 
✗ | 
translate() | 
✓ | 
true() | 
✓ | 
unparsed-entity-url() | 
✗ |