Skip to content

Latest commit

 

History

History
167 lines (113 loc) · 5.95 KB

File metadata and controls

167 lines (113 loc) · 5.95 KB

XPath

GoDoc Coverage Status Build Status Go Report Card

XPath is Go package provides selecting nodes from XML, HTML or other documents using XPath expression.

Implementation

  • htmlquery - an XPath query package for HTML document

  • xmlquery - an XPath query package for XML document.

  • jsonquery - an XPath query package for JSON document

Supported Features

The basic XPath patterns.

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.

Node Axes

  • 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()'.

Expressions

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.

    • - a Unary minus
    • a + b : Addition
    • a - b : Subtraction
    • a * b : Multiplication
    • a div b : Division
    • a mod b : Modulus (division remainder)
  • a or b : Boolean or operation.

  • a and b : Boolean and operation.

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

Footnotes

  1. XPath-2.0 expression ↩ ↩2