是否可以用apply-statement替換以下stylesheet中的呼叫模板語句?這樣模板的結構幾乎相同。結構的意思是我有一個xpath從源xml中選擇一個元素,例如/shiporder/address/city
,我的輸出xml有一個目標xpath,例如/root/Address/Country
然後我通過源路徑反轉。全部/shiporder/address/city
歸入Country
全部/shiporder/address
歸入Address
並且根shiporder
變成標籤root
。使用應用模板而不是呼叫模板
源XML:
<shiporder>
<shipto>orderperson1</shipto>
<shipfrom>orderperson2</shipfrom>
<address>
<city>London</city>
</address>
<address>
<city>Berlin</city>
</address>
</shiporder>
樣式表:
<xsl:template match="/">
<xsl:apply-templates select="shiporder"/>
</xsl:template>
<xsl:template match="/shiporder">
<root>
<xsl:apply-templates select="address/city"/>
<xsl:call-template name="Identity" />
</root>
</xsl:template>
<xsl:template name="Identity">
<Identity>
<xsl:call-template name="Name" />
</Identity>
</xsl:template>
<xsl:template name="Name">
<Name>
<xsl:apply-templates select="/shiporder/shipto"/>
</Name>
</xsl:template>
<xsl:template match="/shiporder/shipto">
<Last>
<xsl:apply-templates select="text()"/>
</Last>
</xsl:template>
<xsl:template match="/shiporder/address/city">
<Country>
<xsl:apply-templates select="text()"/>
</Country>
</xsl:template>
你能解釋一下爲什麼你選擇首先使用''? –
Tomalak
我不明白你的問題。我想用apply而不是call。 – StellaMaris
我知道。我想了解你爲什麼使用「呼叫」,以便我可以幫助澄清你的思維錯誤。 – Tomalak