Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

Can Xpath be used in LiveCycle Designer ES?

Level 2
Level 2

Is it possible to use xpath in LiveCycle Designer ES?


2 Replies
Level 10
Level 10

Hi Capiono,

If you are trying to use XPaths in the PDF there is a an applyXPath method available in the Acrobat API, documented in js_api_reference.pdf which is part of the Acrobat X SDK available at or in the Acrobat 8 version directly at

So if my form had some xml like;


    <requestId name="RequestId">1263678</requestId>


The following will display 1263678 on the console;

console.println(XMLData.applyXPath($data, '//*[@name = "RequestId"]').item(0).value);

That is the value of the first element with a name attribute of RequestId.

I’ve never got this method to work with namespaces and the context is not what I would expect, in this example the root should be $data, but it is still possible to pick up elements from the XFA template.  This is one reason why the XPath expressions I used ended up being more complicated than they could have been, like the one above.

So I stick with SOM expression, but for simple relative XPaths you can use the following to convert to a SOM;

// Attempt to turn a relative XPath into a relative SOM expression
// e.g. ../../clientId/text()  becomes  parent.parent.clientId
function xpathToSom(xpath)
    xpath = stripNamespacePrefixes(xpath);
    xpath = xpath.replace(/\.\.\//g, "parent.");
    xpath = xpath.replace(/\/text\(\)/, "");
    xpath = xpath.replace(/\//g, ".");
    return xpath;

// Strip all namespace prefixes from an xpath expression
// e.g. /default:collections/default:collection/@reportingPeriod
//       will become
function stripNamespacePrefixes(xpath)
    return xpath.replace(/\/\w*?:/g, "/");

This is far from a general routine but maybe somewhere to start.