Profile
Back to NewsBack
GitHub Trending 3 min
Reader Mode
antchfx/xpath: XPath package for golang, supports HTML, XML, JSON document query and more

antchfx/xpath: XPath package for golang, supports HTML, XML, JSON document query and more

4 hours ago

XPath

GoDoc</a> Coverage Status</a> Build Status</a> Go Report Card</a>

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

[^1]: XPath-2.0 expression

Chat with me