如果我在寫一個XSLT,有XSLT:差異的<xsl:元素名稱= 「一」>和<a>
<xsl:template match="/*">
<xsl:element name="a"><xsl:apply-templates/></xsl:element>
</xsl:template>
和
<xsl:template match="/*/y">
<a><xsl:apply-templates/></a>
</xsl:template>
如果我在寫一個XSLT,有XSLT:差異的<xsl:元素名稱= 「一」>和<a>
<xsl:template match="/*">
<xsl:element name="a"><xsl:apply-templates/></xsl:element>
</xsl:template>
和
<xsl:template match="/*/y">
<a><xsl:apply-templates/></a>
</xsl:template>
之間的任何差異在您的例子,不,沒有區別,我建議使用<a>
版本,因爲它更清晰,更簡潔。
的時間使用<xsl:element>
是當元件的名稱,名稱空間或兩者都需要被動態地確定,例如:
<xsl:for-each select="item">
<xsl:element name="myNewItem{position()}">
<xsl:value-of select="." />
</xsl:element>
</xsl:for-each>
這將產生在輸出<myNewItem1>
,<myNewItem2>
,<myNewItem3>
等。
如果在XSLT中預先確定了元素名稱,那麼通常會更清晰以避免xsl:element
。
非常感謝你! :) – testermaster
存在一個區別,即使用文字結果元素(<a>
)從樣式表中複製名稱空間,這在xsl:element
中不會發生。如果使用文字結果元素,則可能需要使用exclude-result-prefixes
來停止將不需要的名稱空間複製到結果中。
有些人似乎習慣性地使用xsl:元素優先於文字結果元素,並且我從未理解爲什麼。有時候,抱怨XSLT是冗長的相同的人。如果您靜態地知道元素名稱,我的習慣是每次都使用一個文字結果元素。
不,他們沒有區別。 –