テンプレートの起動
次に、ターゲットでShippedTo要素およびBilledTo要素にAddress要素を作成するために、ソースのShipTo要素およびBillTo要素の両方のAddress要素に対してテンプレートを起動する必要があります。XSLTで、これらのAddress要素を作成する場所にapply-templates
文を作成する必要があります。次のステップに処理を示します。
-
XSLTペインでInvoiceノードを右クリックして、表示されるコンテキスト・メニューから「スキーマからの子の追加」→「BilledTo」の順に選択します。BilledToノードが、必要な子ノードとともに挿入されます。
-
XSLTペインでInvoiceノードを右クリックして、表示されるコンテキスト・メニューから「スキーマからの子の追加」→「ShippedTo」の順に選択します。ShippedToノードが、必要な子ノードとともに挿入されます。
-
ShippedTo/Addressノードを右クリックして、「削除」を選択します。BilledTo/Addressノードに対しても同じ操作を実行します。作成されたテンプレートを使用してAddressノードを作成します。
-
ShippedToノードを右クリックして、表示されるコンテキスト・メニューから「子の追加」→「XSL」→「apply-templates」の順に選択します。xsl:apply-templates文が追加されます。
-
BilledToノードを右クリックして、表示されるコンテキスト・メニューから「子の追加」→「XSL」→「apply-templates」の順に選択します。xsl:apply-templates文が追加されます。
-
ソース・ペインのShipTo/AddressノードからXSLTペインのShippedTo/apply-templatesノードに線をドラッグします。これによって、
apply-templates
文の属性の選択が設定されるため、xsl:apply-templates
文ではShipTo/Addressノードのみが処理されます。 -
ソース・ペインのBillTo/AddressノードからXSLTペインのBilledTo/apply-templatesノードに線をドラッグします。これによって、
apply-templates
文の属性の選択が設定されるため、xsl:apply-templates
文ではBillTo/Addressノードのみが処理されます。テンプレートの起動を定義したため、この時点でテンプレート・ルール上の警告アイコンが表示されなくなります。テンプレート・ルールをクリックすると、次の図に示すとおり、このテンプレートで処理される2つのAddressノードがハイライト表示されます。
次に、テンプレート・ルールの下のノードをマッピングします。
-
BillTo/Addressノード、またはShipTo/Addressノードの下にある要素からAddressテンプレート・ルールの下の適切な要素に線をドラッグ・アンド・ドロップします。
ソースのどちらかのAddress (BillToまたはShipTo)からドラッグすると、両方のソースのAddressに線が引かれます。これは、BillTo/AddressとShipTo/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>