何時應該使用<copy-of>
而不是<apply-templates>
?XSLT:<copy-of>和<apply-templates>有什麼區別?
他們獨特的作用是什麼?大多數時候用<copy-of>
代替<apply-templates>
會給出奇怪的輸出。這是爲什麼?
何時應該使用<copy-of>
而不是<apply-templates>
?XSLT:<copy-of>和<apply-templates>有什麼區別?
他們獨特的作用是什麼?大多數時候用<copy-of>
代替<apply-templates>
會給出奇怪的輸出。這是爲什麼?
xsl:copy-of
是匹配的輸入XML元素的精確副本。不會發生xslt處理,並且該元素的輸出將與輸入完全相同。
xsl:apply-templates
告訴XSLT引擎來處理匹配所選元素的模板。 xsl:apply-templates
是xslt的首要功能,因爲您使用匹配元素創建的模板可以具有不同的優先級,並且具有最高優先級的模板將被執行。
輸入:
<a>
<b>asdf</b>
<b title="asdf">asdf</b>
</a>
XSLT 1:
<xsl:stylesheet ... >
<xsl:template match="a">
<xsl:copy-of select="b" />
</xsl:template>
</xsl:stylesheet>
XML輸出1:
<b>asdf</b>
<b title="asdf">asdf</b>
XSLT 2:
<xsl:stylesheet ... >
<xsl:template match="a">
<xsl:apply-templates select="b" />
</xsl:template>
<xsl:template match="b" priority="0">
<b><xsl:value-of select="." /></b>
<c><xsl:value-of select="." /></c>
</xsl:template>
<xsl:template match="b[@title='asdf']" priority="1">
<b title="{@title}"><xsl:value-of select="@title" /></b>
</xsl:template>
</xsl:stylesheet>
XML輸出2:
<b>asdf</b>
<c>asdf</c>
<b title="asdf">asdf</b>
copy-of
將簡單地返回你的XML轉儲中提供的節點集合,另一方面
apply-templates
將適用於適用於節點集合傳遞任何模板。