Configuring XPath Expressions

Overview

The API Gateway uses XPath expressions in a number of ways, for example, to locate an XML Signature in a SOAP message, to determine what elements of an XML message to validate against an XML Schema, to check the content of a particular element within an XML message, amongst many more uses.

There are two ways to configure XPath expressions on this screen:

Manual Configuration

If you are already familiar with XPath and wish to configure the expression manually, complete the following fields, using the examples below if necessary:

  1. Enter or select a name for the XPath expression in the Name drop-down list.

  2. Enter the XPath expression to use in the XPath Expression field.

  3. In order to resolve any prefixes within the XPath expression, the namespace mappings (Prefix, URI) should be entered in the table.

Consider the following example SOAP message: >

 <?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
  <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" id="sample">
      ...............
      ...............
      ...............
      ...............
  </dsig:Signature>
</soap:Header>
  <soap:Body>
    <prod:product xmlns:prod="http://www.oracle.com">
      <prod:name>SOA Product*</prod:name>
      <prod:company>Company</prod:company>
      <prod:description>WebServices Security</prod:description>
    </prod:product>
  </soap:Body>
</soap:Envelope> 

The following XPath expression evaluates to true if the <name> element contains the value API Gateway:

XPath Expression: //prod:name[text()='API Gateway']

In this case, it is necessary to define a mapping for the prod namespace as follows:

Prefix URI
prod http://www.oracle.com


In another example, the element to be examined belongs to a default namespace. Consider the following SOAP message:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
  <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" id="sample">
      ...............
      ...............
      ...............
      ...............
  </dsig:Signature>
</soap:Header>
  <soap:Body>
    <product xmlns="http://www.company.com">
      <name>SOA Product</name>
      <company>Company</company>
      <description>WebServices Security</description>
    </product>
  </soap:Body>
</soap:Envelope>  

The following XPath expression evaluates to true if the <company> element contains the value Company:

XPath Expression: //ns:company[text()='Company']

The <company> element actually belongs to the default (xmlns) namespace (http://www.company.com. This means that it is necessary to make up an arbitrary prefix, ns, for use in the XPath expression and assign it to http://www.company.com. This is necessary to distinguish between potentially several default namespaces, which may exist throughout the XML message. The following mapping illustrates this:

Prefix URI
ns http://www.oracle.com


Returning a NodeSet:

Both of the examples above dealt with cases where the XPath expression evaluated to a Boolean value. For example, the expression in the above example asks does the <company> element in the http://www.oracle.com namespace contain a text node with the value oracle?.

It is sometimes necessary to use the XPath expression to return a subset of the XML message. For example, when using an XPath expression to determine what nodes should be signed in a signed XML message, or when retrieving the nodeset to validate against an XML Schema.

The API Gateway ships with such an XPath expression: one that returns All Elements inside SOAP Body To view this expression, select it from the Name field. It appears as follows:

XPath Expression: /soap:Envelope/soap:Body//*

This XPath expression simply returns all child elements of the SOAP <Body> element. To construct and test more complicateD expressions, administrators are advised to use the XPath Wizard.

XPath Wizard

The XPath Wizard assists administrators in creating correct and accurate XPath expressions. The wizard allows administrators to load an XML message and then run an XPath expression on it to determine what nodes are returned. To launch the XPath Wizard, click the XPath Wizard Button on the XPath Expression dialog.

To use the XPath Wizard, simply enter (or browse to) the location of an XML file in the File field. The contents of the XML file will appear in the main window of the wizard. Enter an XPath expression in the XPath field and click the Evaluate button to run the XPath against the contents of the file. If the XPath expression returns any elements (or returns true), those elements will be highlighted in the main window.

If you are not sure how to write the XPath expression, you can select an element in the main window. An XPath expression to isolate this element is automatically generated and displayed in the Selected field. If you wish to use this expression, select the Use this path button, and click OK.