Directed Graphs: Escaping Xml

Table of Contents

Introduction

In XML certain characters have special meaning. Sometimes these characters may need to be used, but the intention is to use the literal character with no special meaning.

Escaped Characters

Character

Escaped Value

Character

Escaped Value

"

"

'

'

<

&lt;

>

&gt;

&

&amp;

Example

<get-resource plugin="com.att.sdnctl.sli.resource.sql.SqlResource" resource="SQL" key='SELECT * FROM DATA_OBJECT_MAPPING WHERE data_object_type = "uCPE" AND service_type = "UCPE" AND data_object_key2 = $restapi-cust-result.customer-service-information.vnf-information.ucpe-host-name AND data_object_key <> data_object_key2 AND data_object_key2_type = "ucpe-Hostname"' pfx="tmp.reference-data" >

Using this node would cause DGBuilder to throw an error when you click "Validate XML".

To fix this <> in the SQL query should be escaped. So the above node now becomes

<get-resource plugin="com.att.sdnctl.sli.resource.sql.SqlResource" resource="SQL" key='SELECT * FROM DATA_OBJECT_MAPPING WHERE data_object_type = "uCPE" AND service_type = "UCPE" AND data_object_key2 = $restapi-cust-result.customer-service-information.vnf-information.ucpe-host-name AND data_object_key &lt;&gt; data_object_key2 AND data_object_key2_type = "ucpe-Hostname"' pfx="tmp.reference-data" >

You can refer to the chart above to perform similar manipulations.

Common Cases

SQL queries often contain invalid characters.

A developer might be tempted to write

<get-resource plugin="com.att.sdnctl.sli.resource.sql.SqlResource" resource="SQL" key='select module, rpc, version, active ='Y' from SVC_LOGIC where module = $modname ;' pfx="tmp">

This will be invalid because we have single quotes within single quotes. One solution is to escape them.

<get-resource plugin="com.att.sdnctl.sli.resource.sql.SqlResource" resource="SQL" key='select module, rpc, version, active =&apos;Y&apos; from SVC_LOGIC where module = $modname ;' pfx="tmp">

Another more legible solution is to use double quotes

<get-resource plugin="com.att.sdnctl.sli.resource.sql.SqlResource" resource="SQL" key="select module, rpc, version, active ='Y' from SVC_LOGIC where module = $modname ;" pfx="tmp">