ナビゲーションに戻る

変換プログラムでの XSLT 拡張関数の使用

PeopleSoft ABM メッセージのフィールドを EBM メッセージ内の対応するフィールドにマッピングする変換プログラムを作成します。その後、XSLT 関数を使用して、データ値をマッピングします。

このセクションでは、次の機能に関する変換アプリケーション エンジン プログラムのセクションのコーディング例を紹介します。

次の例では、変換する必要がある ABM の XML のエレメント、変換のコード、および変換後の EBM 内のエレメントを説明します。

PeopleSoft ABM 内の変換対象のキー エレメント

XML メッセージに含まれる要素は、次のとおりです。

<MsgData>
    <Transaction>
      <PYMT_TRMS_HDR class="R">
        <SETID IsChanged="Y">SHARE</SETID>
        <PYMNT_TERMS_CD IsChanged="Y">DIT91</PYMNT_TERMS_CD>

XSLT コード

以下の XSLT コードのスニペットは、アプリケーション エンジン プログラムの変換 XSLT を示しています。

  1. SETID と PYMT_TERMS_CD を連結して、新しい変数を作成します。

    <corecom:ApplicationObjectKey>
      <corecom:ID>
          <xsl:attribute name="schemeID">
              <xsl:text disable-output-escaping="no">PSFT</xsl:text>
          </xsl:attribute>
          <xsl:attribute name="schemeAgencyID"> 
              <xsl:text disable-output-escaping="no">PSFT_COMMON</xsl:text>
          </xsl:attribute>
          <xsl:variable name="NamedValuePair"select='concat("&lt;SETID&gt;",PYMT_TRMS_HDR/SETID,"&lt;/SETID&gt;&lt;PYMNT_TERMS_CD&gt;",PYMT_TRMS_HDR/PYMNT_TERMS_CD,"&lt;/PYMNT_TERMS_CD&gt;")'/>
    
  2. generate-guid ユーティリティを使用して、一意の GUID を作成します。

          <xsl:variable name="CommonGuid" select='concat("&lt;UniqueGUID&gt;",utility:generate-guid(),"&lt;/UniqueGUID&gt;")'/>
          

    注: このステップは必須ではありません。GUID が存在しない場合、適切な xref:populate 関数によって自動的に一意の GUID が作成されます。

  3. xref:populateValueNVP 関数を使用して、新しい GUID をクロスリファレンスに追加します。

    <xsl:variable name="GUIDAdd" select='xref:populateValueNVP("PaymentTermGUID","PSFT",$NamedValuePair,"UniqueGUID",$CommonGuid,"ADD")'/> 
               <xsl:call-template name="Process-GUID">
                 <xsl:with-param name="returnValue">
                    <xsl:value-of select="$GUIDAdd"/>
                 </xsl:with-param>
                    <xsl:with-param name="statusDelimiter">;</xsl:with-param>
                 </xsl:call-template>
      </corecom:ID>
    
  4. EBM メッセージに値を挿入します。

            <corecom:ContextID>
          <xsl:attribute name="schemeID">
              <xsl:text disable-output-escaping="no">SETID</xsl:text>
          </xsl:attribute>
          <xsl:attribute name="schemeAgencyID">
              <xsl:text disable-output-escaping="no">PSFT</xsl:text> 
          </xsl:attribute>
          <xsl:value-of select="PYMT_TRMS_HDR/SETID"/>
      </corecom:ContextID>
      <corecom:ContextID>
          <xsl:attribute name="schemeID">
            <xsl:text disable-output-escaping="no">Payment Terms Code</xsl:text>
          </xsl:attribute>
              <xsl:attribute name="schemeAgencyID">
              <xsl:text disable-output-escaping="no">PSFT</xsl:text>
          </xsl:attribute>
          <xsl:value-of select="PYMT_TRMS_HDR/PYMNT_TERMS_CD"/>
      </corecom:ContextID>
     

EBM メッセージに含まれる変換後のエレメント

変換後の EBM メッセージには、共通の GUID 値が含まれます。

<corecom:ApplicationObjectKey>
          <corecom:ID schemeAgencyID="PSFT_COMMON"schemeID="PSFT">b15f3c34-72bc-11dd-b7dd-aaf7c4308a71</corecom:ID>
          <corecom:ContextID schemeAgencyID="PSFT" schemeID="SETID">SHARE</corecom:ContextID>
          <corecom:ContextID schemeAgencyID="PSFT" schemeID="Payment Terms Code">DIT91</corecom:ContextID>

次の例では、変換する必要がある ABM の XML のドメイン値エレメント、変換のコード、および変換後の EBM 内のエレメントを説明します。

PeopleSoft ABM 内の変換対象のドメイン値エレメント

これは、PeopleSoft ABM メッセージに含まれる言語を指定するエレメントです。

<<PSCAMA class="R">
        <LANGUAGE_CD>ENG</LANGUAGE_CD>

XSLT コード

以下の XSLT コードのスニペットは、変換アプリケーション エンジン プログラムの DVM 検索を示しています。

<xsl:variable name="MsgLang" select='dvm:lookup-dvm ("LanguageCodeDVM","LANGUAGE_CD",//MsgData/Transaction/PSCAMA/LANGUAGE_CD,"COMMON",//MsgData/Transaction/PSCAMA/LANGUAGE_CD,false())'/>
<xsl:variable name="BaseLang" select='dvm:lookup-dvm("LanguageCodeDVM","LANGUAGE_CD",//MsgData/Transaction/PSCAMA/BASE_LANGUAGE_CD,"COMMON",//MsgData/Transaction/PSCAMA/BASE_LANGUAGE_CD,false())'/>
<xsl:attribute name="languageCode">
  <xsl:value-of select="substring-after($MsgLang,';')"/>
</xsl:attribute>
        

EBM メッセージに含まれる変換後のエレメント

これは結果の EBM メッセージに含まれる変換後のエレメントです。

<?xml version="1.0"?>
<paytermcreate:CreatePaymentTermEBM languageCode="500" xmlns:corepaymenttermcust="http://xmlns.oracle.com/EnterpriseObjects/Core/Custom/EBO/PaymentTerm/V1" xmlns:paytermcreate="http://xmlns.oracle.com/EnterpriseObjects/Core/EBO/CreatePaymentTermEBM/V1">
  <corecom:EBMHeader languageCode="500" xmlns:corecom="http://xmlns.oracle.com/EnterpriseObjects/Core/Common/V2">
    <corecom:Sender>
      <corecom:ID>E900B20</corecom:ID>
    </corecom:Sender>
  </corecom:EBMHeader>