機械翻訳について

XSLT文字列関数のCDATAによって問題が発生

XSLT文字列関数でCDATAを使用しないでください(value-ofはコンテンツを文字列に変換します)。

たとえば、SOAPアダプタのheader属性をハード・コードするためにマッパーを使用しているとします。 マッパーはデータをエンコードし、実行時にエンドポイント・サービスの問題を引き起こします。

  • マッピング:
    [Expression for: "header"]
    "<![CDATA[ <CrosstalkMessage> <CrosstalkHeader> 
    <ProcessCode>1004</ProcessCode> <MessageType>100</MessageType> 
    <ExchangePattern>7</ExchangePattern> <EnterpriseId>ace7d6ae-78a8-f3gh-1d04
    -9fe0416d053c</EnterpriseId> <Token>h12749ed-913b-7e3e-2aef
    -8dd78255cb40</Token> <DestinationId>b3fbf48e-df96-f27d-5fac
    -38895618064f</DestinationId> <ContentEncoding>utf-8</ContentEncoding> 
    <ContentType>text/xml</ContentType> </CrosstalkHeader> </CrosstalkMessage> 
    ]]>"
  • コード:
    <tns:header xml:id="id_48">
          <xsl:value-of xml:id="id_82" select="'&lt;![CDATA[ &lt;CrosstalkMessage&gt; 
    &lt;CrosstalkHeader&gt; &lt;ProcessCode&gt;1004&lt;/ProcessCode&gt; 
    &lt;MessageType&gt;100&lt;/MessageType&gt; 
    &lt;ExchangePattern&gt;7&lt;/ExchangePattern&gt; &lt;EnterpriseId&gt;ace7d6ae
    -78a8-f3gh-1d04-9fe0416d053c&lt;/EnterpriseId&gt; &lt;Token&gt;h12749ed-913b
    -7e3e-2aef-8dd78255cb40&lt;/Token&gt; &lt;DestinationId&gt;b3fbf48e-df96-f27d
    -5fac-38895618064f&lt;/DestinationId&gt; &lt;ContentEncoding&gt;utf
    -8&lt;/ContentEncoding&gt; &lt;ContentType&gt;text/xml&lt;/ContentType&gt; 
    &lt;/CrosstalkHeader&gt; &lt;/CrosstalkMessage&gt; ]]&gt;'"/>
    </tns:header>

これを行うには:

  • ステージ・ファイル処理を使用してXML構造を記述します。
  • XMLを不透明のコンテンツとして読み取ります。
  • 読取りコンテンツのdecodeBase64を使用してヘッダー要素にマップします。
  • XSLTでヘッダー要素を参照するcdata-section-elements属性を使用します。