XPath Expressions

Overview

DataPipeline's query engine uses a subset of XPath 1.0 location paths notation to identify field values and demarcate records in XML, JSON, and Java objects.

Axis Specifiers

Axis Abbreviated Syntax Supported Examples
ancestor      
ancestor-or-self      
attribute @ yes @lang or attribute::lang
child   yes title or child::title
descendant   yes  
descendant-or-self // yes //book or /descendant-or-self::book/
following      
following-sibling      
namespace      
parent ..    
preceding      
preceding-sibling      
self . yes  

Node Tests

comment(), text(), processing-instruction(), node() are all supported.

Predicates, Functions and Operators

Not supported.

Special Symbols

DataPipeline supports escaping symbols that have special meaning in XPath. For example:

  • If you have a node name that looks like Price (£), you can include it in an XPath location path by wrapping the name in backticks (also known as backquotes, grave accents, or graves): addField("COL_1", "/object/table/array/object/`Price (£)`").
  • If the node name includes a backtick, such as Price `£`, you can escape them by doubling each backtick: addField("COL_1", "/object/table/array/object/Price ``£``").

Wildcards

DataPipeline supports wildcards inside of XPath expressions using asterisks. For example, you can match nodes that starts with Price by using: addField("COL_1", "/object/table/array/object/Price*").

  • When wildcards are in play, the node test becomes case insensitive allowing you to use: addField("COL_1", "/object/table/array/object/PRICE (*)") or addField("COL_1", "/object/table/array/object/price (*)").
  • Wildcards can be placed inside backticks if they include symbols: addField("COL_1", "/object/table/array/object/`Price (*)`").
  • If the node name includes asterisks (Price *£*), you can escape them by doubling each asterisks: addField("COL_1", "/object/table/array/object/`Price **£**`").
Mobile Analytics