Examples of Search Expression Grammar
In the following example, assume that the XML document is a typical document your system receives and that you want to set some rules for the EAI Dispatch Service to use to parse this document.
<?xml version="1.0" encoding="UTF-8" ?>
- <cXML payloadID="3223232@ariba.acme.com" timestamp="1999-03-12T18:39:09-08:00"
xml:lang="en-US">
- <Header>
- <From>
- <Credential domain="AribaNetworkUserId">
<Identity>admin@acme.com</Identity>
</Credential>
- <Credential domain="AribaNetworkUserId" type="marketplace">
<Identity>bigadmin@marketplace.org</Identity>
</Credential>
- <Credential domain="BT">
<Identity>2323</Identity>
</Credential>
</From>
- <To>
- <Credential domain="DUNS">
<Identity>942888711</Identity>
</Credential>
</To>
- <Sender>
- <Credential domain="AribaNetworkUserId">
<Identity>admin@acme.com</Identity>
<SharedSecret>abracadabra</SharedSecret>
</Credential>
<UserAgent>Ariba.com Network V1.0</UserAgent>
</Sender>
</Header>
- <Request deploymentMode="test">
-<OrderRequest>
- <OrderRequestHeader orderID="DO1234" orderDate="1999-03-12" type="new">
- <Total>
<Money currency="USD">12.34</Money>
</Total>
- <ShipTo>
.......
.......
The following table provides some valid search expression examples.
Search Expression | Description |
---|---|
/*/Header |
Go to the second level and look at the type value of each property set and check whether it is of value Header. |
/*/*@DeploymentMode |
Go to the second level and look at the properties of each property set and check whether any of them has the name (not the value) of DeploymentMode. |
/*/*/Request@DeploymentMode |
Go to the third level and look at each property set for type of value Request and property of name DeploymentMode. |
/cXML/*/OrderRequest |
Search at the highest level for type with value cXML and then upon matching, find a grandchild (not child) of type with value OrderRequest. |
Following are examples of invalid rules:
Rule
/*/*@DeploymentMode/Request/SiebelMessage
Description
This is not a valid rule. A search for a property value must be specified at the very end. A correct form would be the following, which will have a different result.
/*/Request/*@DeploymentMode
Rule
/*@PayLoadID@TimeStamp
Description
This also is not a valid rule. It is not possible to specify more than one property name. The correct form would use two different rules to represent this:
/*@PayLoadID
and
/*@TimeStamp