XSLT:<xsl:element name= "a" > 和<a>

  • 本文关键字:element xsl XSLT name xml xslt
  • 更新时间 :
  • 英文 :


如果我正在编写XSLT,两者之间有什么区别吗?

<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 .

有一个区别,那就是使用文字结果元素 ( <a> ) 命名空间是从样式表中复制的,这不会发生在xsl:element 中。如果使用文本结果元素,则可能需要通过使用 exclude-result-prefixes 来阻止将不需要的命名空间复制到结果中。

有些人似乎习惯性地使用xsl:element而不是文字结果元素,我一直不明白为什么。有时是同一个人抱怨 XSLT 冗长。如果你静态地知道元素名称,我的习惯是每次都使用文字结果元素。

最新更新