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() |
✗ |