Cybersecurity
DevOps Cloud (ADM)
IT Operations Cloud
<mapping-table>
<col-def name="source" type="nocase"/>
<row>
<col>add</col>
<col>chicken</col>
<col>red</col>
<col>before</col>
</row>
<col-def name="dest" type="nocase"/>
<row>
<col>modify</col>
<col>cow</col>
<col>yellow</col>
<col>after</col>
</row>
<row>
<col>move</col>
<col>duck</col>
<col>green</col>
<col>inbetween</col>
</row>
<row>
<col>delete</col>
<col>pigeon</col>
<col>blue</col>
<col>female</col>
</row>
<row>
<col>rename</col>
<col>lamb</col>
<col>purple</col>
<col>male</col>
</row>
<col-def name="colour" type="nocase"/>
<col-def name="gender" type="nocase"/>
</mapping-table>
<do-set-local-variable name="COLUMNS" scope="policy">
<arg-node-set>
<token-xml-parse>
<token-text xml:space="preserve"><payload/></token-text>
</token-xml-parse>
</arg-node-set>
</do-set-local-variable>
<do-clone-xpath dest-expression="$COLUMNS/payload" src-expression="$MAP/mapping-table/col-def"/>
<payload>
<col-def name="source" type="nocase"/>
<col-def name="dest" type="nocase"/>
<col-def name="colour" type="nocase"/>
<col-def name="gender" type="nocase"/>
</payload>
<rule>
<description>XPATH Equiv to Map token</description>
<comment name="author" xml:space="preserve">Geoffrey Carman</comment>
<comment name="version" xml:space="preserve">1</comment>
<comment name="lastchanged" xml:space="preserve">Nov 17, 2010</comment>
<conditions>
<and/>
</conditions>
<actions>
<do-set-local-variable name="MAP" scope="policy">
<arg-node-set>
<token-xml-parse notrace="true">
<token-text xml:space="preserve"><?xml version="1.0" encoding="UTF-8"?><mapping-table>
<col-def name="source" type="nocase"/>
<row>
<col>add</col>
<col>chicken</col>
<col>red</col>
<col>before</col>
</row>
<col-def name="dest" type="nocase"/>
<row>
<col>modify</col>
<col>cow</col>
<col>yellow</col>
<col>after</col>
</row>
<row>
<col>move</col>
<col>duck</col>
<col>green</col>
<col>inbetween</col>
</row>
<row>
<col>delete</col>
<col>pigeon</col>
<col>blue</col>
<col>female</col>
</row>
<row>
<col>rename</col>
<col>lamb</col>
<col>purple</col>
<col>male</col>
</row>
<col-def name="colour" type="nocase"/>
<col-def name="gender" type="nocase"/>
</mapping-table></token-text>
</token-xml-parse>
</arg-node-set>
</do-set-local-variable>
<do-set-local-variable name="COLUMNS" scope="policy">
<arg-node-set>
<token-xml-parse>
<token-text xml:space="preserve"><payload/></token-text>
</token-xml-parse>
</arg-node-set>
</do-set-local-variable>
<do-clone-xpath dest-expression="$COLUMNS/payload" src-expression="$MAP/mapping-table/col-def"/>
<do-set-local-variable name="SRC" scope="policy">
<arg-string>
<token-text xml:space="preserve">colour</token-text>
</arg-string>
</do-set-local-variable>
<do-set-local-variable name="DEST" scope="policy">
<arg-string>
<token-text xml:space="preserve">gender</token-text>
</arg-string>
</do-set-local-variable>
<do-set-local-variable name="SRC-VAL" scope="policy">
<arg-string>
<token-text xml:space="preserve">green</token-text>
</arg-string>
</do-set-local-variable>
<do-set-local-variable name="SRC-POSITION" scope="policy">
<arg-string>
<token-xpath expression="count($COLUMNS/payload/col-def[@name=$SRC]/preceding-sibling::*) 1"/>
</arg-string>
</do-set-local-variable>
<do-set-local-variable name="DEST-POSITION" scope="policy">
<arg-string>
<token-xpath expression="count($COLUMNS/payload/col-def[@name=$DEST]/preceding-sibling::*) 1"/>
</arg-string>
</do-set-local-variable>
<do-set-local-variable name="RESULT" scope="policy">
<arg-string>
<token-xpath expression="$MAP/mapping-table/row[col[count($COLUMNS/payload/col-def[@name=$SRC]/preceding-sibling::*) 1]=$SRC-VAL]/col[(count($COLUMNS/payload/col-def[@name=$DEST]/preceding-sibling::*) 1)]"/>
</arg-string>
</do-set-local-variable>
<do-set-local-variable name="RESULT" scope="policy">
<arg-string>
<token-xpath expression="$MAP/mapping-table/row[col[$SRC-POSITION]=$SRC-VAL]/col[position()=$DEST-POSITION]"/>
</arg-string>
</do-set-local-variable>
</actions>
</rule>