次のマッピングを実行する必要があります。(単純な) 整形式の XML ファイルを受け取ります。そのxmlファイルには、エンコードされた特殊文字が含まれる場合があります。例えば &
マッピングの出力は次のようになる必要があります。
<ns0:SupplierTransaction xmlns:ns0="http://MH.Schemas/SQL/MDM/Supplier">
<ns0:CIC.ImportSupplier_Spain>
<ns0:data><Suppliers xmlns=""><Supplier><IDCONO>All Freez &lt; &amp; &gt; (Verp)IZ Oude Bunders</IDCONO></Supplier></Suppliers></ns0:data>
</ns0:CIC.ImportSupplier_Spain>
</ns0:SupplierTransaction>
ご覧のとおり、受信した xml をエンコードして、いくつかのノードにラップする必要があります。問題は、特殊文字 (&、<、>) の場合、それらを 2 回エンコードする必要があることです。ns0:data フィールドを解析して XML に戻すと、「&」も解析されるためです。「&」に戻り、無効な XML になります。& に解析する必要があります。==> そのため、2 回エンコードする必要があります。
私の質問は、どうすれば xsl でこれを達成できますか? したがって、特殊記号を検出する必要があります。
"&" and encode it twice: &amp;
"<" and encode it twice: &lt;
">" and encode it twice: &gt;
参考までに、このメッセージを SQL プロシージャに送信しています。SQL プロシージャーの入力パラメーターは「data」と呼ばれ、データ型は「XML」です。そのため、SQL はデータ要素内にあるすべてのものを XML に解析し、特殊文字を二重にエンコードしないと、特殊文字でエラーをスローします。例えば:
<ns0:data><Node>This is some text & chars</Node></ns0:data>
したがって、これは次のように解析されます。
<Node>This is some tekst & chars</Node> ==> Invalid XML
次のようにする必要があります。
<ns0:data><Node>This is some text &amp; chars</Node></ns0:data>
次のように解析されます。
<Node>This is some tekst & chars</Node> ==> Valid XML