機械翻訳について

マッパーでのデータ操作の実行

パディング文字、端数処理番号、値の抽出、CDATAコンテンツの追加、ノードの合計の計算など、マッパーでデータ操作タスクを実行できます。

文字列に文字を埋め込む

  • 左パッドのゼロから9桁:
    fn:format-number (12345, '000000000')
  • 右パッドを9桁にゼロにします:
    concat(string(12345),substring-before(fn:format-number (12345, '000000000'), 
    string(12345))

数字を必要な桁に端数処理

数値を2桁に丸めます:

fn:format-number (12345.12345, '#.00')

XMLのキー値ペア・タイプの値の抽出

XMLスニペット XPath式 説明
<ns:SomeElement xmlns:ns="http://xmlns.oracle.com/some/namespace">
  <ns:ParameterList>
    <ns:Parameter>
      <ns:Name>ID</ns:Name>
      <ns:Value>1</ns:Value>
    </ns:Parameter>
    <ns:Parameter>
      <ns:Name>NAME</ns:Name>
      <ns:Value>Oracle</ns:Value>
    </ns:Parameter>
    <ns:Parameter>
      <ns:Name>AGE</ns:Name>
      <ns:Value>25</ns:Value>
    </ns:Parameter>
  </ns:ParameterList>
</ns:SomeElement>
パラメータ名'NAME'の値を抽出します:
/ns:SomeElement/ns:ParameterList
/ns:Parameter[ns:Name='NAME']/ns:Value
XPathのセット中カッコ内のものは、述語と呼ばれます。

式では、名前がNAMEのパラメータ値が検索されます。

XML要素へのCDATAコンテンツの追加

XSLTスニペット 出力XML 説明
  • 入力XML
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <nstrgmpr:process>
     <nstrgmpr:input>
      <nstrgmpr:data>I SHOULD BE IN CDATA CONTENT<nstrgmpr:data>
     </nstrgmpr:input>
    </nstrgmpr:process>
  • XSLTスニペット:
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <xsl:stylesheet version="2.0" xml:id="id_1"  
    xmlns:nstrgmpr="http://xmlns.oracle.com/simpleSvc/SyncSvc/Sync" 
    xmlns:oracle-xsl-mapper="http://www.oracle.com/xsl/mapper/schemas" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes=" ora oracle-xsl-mapper 
    oraext xsi fn xp20 xsl ignore01" 
    xmlns:ignore01="http://www.oracle.com/XSL/Transform/java" ignore01:ignorexmlids="true" 
    xmlns:xml="http://www.w3.org/XML/1998/namespace">
    
    <xsl:output method="xml" cdata-section-elements="nstrgmpr:result"/>
    
    <xsl:template match="/" xml:id="id_11">
          <nstrgmpr:processResponse xml:id="id_12">
    
    <nstrgmpr:result xml:id="id_16"> <xsl:value-of select="/nstrgmpr:process/nstrgmpr:input/nstrgmpr:data" 
    xml:id="id_17"/> </nstrgmpr:result>
    
          </nstrgmpr:processResponse>
       </xsl:template>
    </xsl:stylesheet>
<nstrgmpr:processResponse>
 <nstrgmpr:result><![CDATA[I SHOULD BE IN CDATA CONTENT]]></nstrgmpr:result>
</nstrgmpr:processResponse>

XSLTでxsl:outputタグを手動で追加する必要があります。

出力属性はxmlである必要があります。

属性cdata-section-elementsは、変換後のCDATAコンテンツを持つフィールドを示します。 複数の要素の場合、値はスペースで区切る必要があります。

通常、データは、CDATAが存在する要素にマップされます。

ノート: この方法は、コンテンツがXSLTから書き換えられるステージング・ファイル・アクションやFTPなどのファイルベースの操作には機能しません。

ノードのグループからのノードの合計の計算

XMLスニペット XPath式 説明
  • 入力XML
    <ns:SomeElement xmlns:ns="http://xmlns.oracle.com/some/namespace/request">
      <ns:ParameterList>
        <ns:Parameter>
          <ns:Name>ABC</ns:Name>
          <ns:Value>10</ns:Value>
        </ns:Parameter>
        <ns:Parameter>
          <ns:Name>ABC</ns:Name>
          <ns:Value>20</ns:Value>
        </ns:Parameter>
        <ns:Parameter>
          <ns:Name>DEF</ns:Name>
          <ns:Value>20</ns:Value>
        </ns:Parameter>
      </ns:ParameterList>
    </ns:SomeElement>
  • XSLTスニペット:
    <nstrgdfl:ResultElement>
    <xsl:for-each-group select="/ns:SomeElement/ns:ParameterList/ns:Parameter" group-by="ns:Name">
      <nstrgdfl:ParameterList>
       <nstrgdfl:Parameter>
        <nstrgdfl:Name>
          <xsl:value-of select="fn:current-grouping-key()"/>
        </nstrgdfl:Name>
        <nstrgdfl:SumOfValues>
          <xsl:value-of select="sum(fn:current-group/ns:Value)"/>
        </nstrgdfl:SumOfValues>
       <nstrgdfl:Parameter>
      </nstrgdfl:ParameterList>
    </xsl:for-each>
    </nstrgdfl:ResultElement>
  • 出力XML:
    <ns:ResultElement30xmlns:ns="http://xmlns.oracle.com/some/namespace/response">
      <ns:ParameterList>
        <ns:Parameter>
          <ns:Name>ABC</ns:Name>
          <ns:SumOfValues>1</ns:Value>
        </ns:Parameter>
        <ns:Parameter>
          <ns:Name>DEF</ns:Name>
          <ns:SumOfValues>20</ns:Value>
        </ns:Parameter>
      </ns:ParameterList>
    </ns:ResultElement>
SUM関数は、current-groupに設定する必要があります。