18

exclude-result-prefixes和有什么区别extension-element-prefix?两者都用在 XSLT 的标头中。我extension-element-prefix在使用 EXSLT 时发现, EXSLT 网站 Howto说它extension-element-prefix用于“防止扩展名称空间在结果树中输出”。

但这不是真的(使用 libxslt)。仅exclude-result-prefixes删除扩展名称空间。那我为什么需要extension-element-prefix???

样本:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:exsl="http://exslt.org/common" version="1.0"
  extension-element-prefix="exsl">

<xsl:template match="/">
  <blabla/>
</xsl:template>

</xsl:stylesheet>

我使用 libxslt (xsltproc) 的输出:

<?xml version="1.0"?>
<blabla xmlns:exsl="http://exslt.org/common"/>
4

1 回答 1

12

要使用名称空间中的 EXSLT 函数,http://exslt.org/common您不需要该extension-element-prefix属性。仅当您想使用func:function命名空间中的扩展元素时才需要这样做http://exslt.org/functions。该extension-element-prefix属性仅表示具有该前缀的任何元素都不是文字结果元素,而是除了由 XSLT 语言定义的那些指令之外的扩展指令。

至于exclude-result-prefixes,您已经理解了这一点,它有助于避免在结果元素上声明任何命名空间,因为样式表中声明和使用的命名空间仅用于选择路径表达式中的节点或匹配模式或用于插入扩展元素。

于 2011-07-13T11:33:59.073 回答