テンプレートの起動

次に、ターゲットでShippedTo要素およびBilledTo要素にAddress要素を作成するために、ソースのShipTo要素およびBillTo要素の両方のAddress要素に対してテンプレートを起動する必要があります。XSLTで、これらのAddress要素を作成する場所にapply-templates文を作成する必要があります。次のステップに処理を示します。

  1. XSLTペインでInvoiceノードを右クリックして、表示されるコンテキスト・メニューから「スキーマからの子の追加」→「BilledTo」の順に選択します。BilledToノードが、必要な子ノードとともに挿入されます。

  2. XSLTペインでInvoiceノードを右クリックして、表示されるコンテキスト・メニューから「スキーマからの子の追加」→「ShippedTo」の順に選択します。ShippedToノードが、必要な子ノードとともに挿入されます。

  3. ShippedTo/Addressノードを右クリックして、「削除」を選択します。BilledTo/Addressノードに対しても同じ操作を実行します。作成されたテンプレートを使用してAddressノードを作成します。

  4. ShippedToノードを右クリックして、表示されるコンテキスト・メニューから「子の追加」→「XSL」→「apply-templates」の順に選択します。xsl:apply-templates文が追加されます。

  5. BilledToノードを右クリックして、表示されるコンテキスト・メニューから「子の追加」→「XSL」→「apply-templates」の順に選択します。xsl:apply-templates文が追加されます。

  6. ソース・ペインのShipTo/AddressノードからXSLTペインのShippedTo/apply-templatesノードに線をドラッグします。これによって、apply-templates文の属性の選択が設定されるため、xsl:apply-templates文ではShipTo/Addressノードのみが処理されます。

  7. ソース・ペインのBillTo/AddressノードからXSLTペインのBilledTo/apply-templatesノードに線をドラッグします。これによって、apply-templates文の属性の選択が設定されるため、xsl:apply-templates文ではBillTo/Addressノードのみが処理されます。

    テンプレートの起動を定義したため、この時点でテンプレート・ルール上の警告アイコンが表示されなくなります。テンプレート・ルールをクリックすると、次の図に示すとおり、このテンプレートで処理される2つのAddressノードがハイライト表示されます。

    次に、テンプレート・ルールの下のノードをマッピングします。

  8. BillTo/Addressノード、またはShipTo/Addressノードの下にある要素からAddressテンプレート・ルールの下の適切な要素に線をドラッグ・アンド・ドロップします。

    ソースのどちらかのAddress (BillToまたはShipTo)からドラッグすると、両方のソースのAddressに線が引かれます。これは、BillTo/AddressShipTo/Addressの両方がテンプレートのコンテキスト・ノードであるためです。

    この時点のテンプレートのソース・コードは次のようになります。

      <xsl:template match="Address">
        <Address country="{@country}">
          <Street>
            <xsl:value-of select="concat (Street1, ', ' , Street2 )"/>
          </Street>
          <City>
            <xsl:value-of select="City"/>
          </City>
          <State>
            <xsl:value-of select="State"/>
          </State>
          <Zip>
            <xsl:value-of select="Zipcode"/>
          </Zip>
        </Address>
      </xsl:template>