XML Extraction Examples

The examples below make queries against the document XMLExtractionExamples1.xml: AM represents an attribute mark, VM a value mark and SVM a subvalue mark.

Example 1 - Simple attribute lookup

Query
<server>
    <services>
        <service name="Devices" port="%1%"/>
    </services>
</server>
Result
5300
Comments

Extracts the value of the port  attribute from the <service>  node with the name  attribute "Devices".

Example 2 - Simple attribute lookup; attributes reversed

Query
<server>
   <services>
      <service port="5001" name="%1%" />
   </services>
</server>
Result
Time
Comments

Extracts the value of the name  attribute from the <service>  node with the port  attribute "5001". Note that the fixed, defining attribute (port="5001") appears before the attribute containing the extraction sequence (name="%1%").

Example 3 - Simple attribute lookup; multiple matches

Query
<server>
   <services>
      <service name="Time" port="%1%"/>
   </services>
</server>
Result
5001VM5002
Comments

Extracts the value of the port  attribute from the <service>  node with the name  attribute "Time". Because the query node has no sibling nodes, the query can match multiple document nodes at the same level. The result therefore includes values from all matching document nodes, separated by value marks.

Example 4 - Multiple attribute lookup; single matches

Query
<server>
   <services>
      <service name="Time" port="%1%"/>
      <service name="MultiGateWay" port="%2%"/>
   </services>
</server>
Result
5001am
5100
Comments

Extracts the values of the port  attributes from the <service>  nodes with the names  attribute "Time" and "MultiGateWay". The "Time" value is placed in attribute 1 and "MultiGateWay" in attribute 2. Note that the <service>  nodes in the query are in the same order as in the XML document. If the "Time" node had been placed after "MultiGateWay", only the latter value would have matched because there are no "Time" nodes following the first "MultiGateWay" node (see Sequential Mode).

Example 5 - Multiple attribute lookup; multiple matches

Query
<server>
   <services __nis_cont="P">
      <service name="Time" port="%1%"/>
      <service name="MultiGateWay" port="%2%"/>
   </services>
</server>
Result
5001VM5002aM
5100VM6100
Comments

This example is similar to Example 4, but the <services>  node includes a __nis_cont  attribute to change to parallel processing mode. As a result, values from all matching nodes are returned, because the order in which they appear in the XML document is no longer significant.

Example 6 - Multiple attribute result; no tabulation

Query
<server>
   <services>
      <service name="SingleGateWay" port="%1%" realport="%2%" destport="%3%"/>
   </services>
</server>
Result
5101VM5102VM5103AM
101VM102VM103aM
23
Comments

Extracts the values of the port,  realport  and destport  attributes from the <service>  node with the name  attribute "SingleGateWay". Because the query node has no sibling nodes, the query can match multiple document nodes at the same level. The attributes in the result therefore include values from all matching document nodes, separated by value marks (the last attribute contains only a single multivalue because only the first of the matching nodes contains a destport  attribute).

Example 7 - Multiple attribute result with tabulation

Query
<server>
   <services __nis_cont="T">
      <service name="SingleGateWay" port="%1%" realport="%2%" destport="%3%"/>
   </services>
</server>
Result
5101VM5102VM5103aM
101VM102VM103aM
23VMVM
Comments

This example is similar to Example 6, but the <services>  node includes a __nis_cont  attribute to change to tabulation mode. As a result, the final attribute contains blank multivalues, corresponding to the missing destport  attributes.

Example 8 - Single line node value

Query
<server>
<comment>%1%</comment>
</server>
Result
Simple comment
Comments

Extracts the value of the <comment>  node.

Example 9 - Multi-line node value

Query
<server>
<description>%1%</description>
</server>
Result
Line 1 of description
Line 2 of description
Comments

Extracts the value of the <description>  node. In the result, leading and trailing white space is discarded and the lines are separated by new line characters.

Example 10 - Extract complete node

Query
<server>
<terminal-ports>
%1%
</terminal-ports>
</server>
Result
<entry device="COM2" service="TerminalPort" port="5602" realport="202"/>
<entry device="COM3" service="TerminalPort" port="5603" realport="203"/>
Comments

Extracts all the child nodes from the <terminal-ports>  node. In the result, leading and trailing white space is discarded and the lines are separated by new line characters.