exclude-result-prefixes
和extension-element-prefix
之间的区别是什么?两者都用在XSLT的头文件中。我在使用EXSLT时找到extension-element-prefix
,而EXSLT website 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"/>
答案 0 :(得分:12)
要使用类似命名空间http://exslt.org/common
中的EXSLT函数,您不需要extension-element-prefix
属性。只有在名称空间func:function
中使用http://exslt.org/functions
等扩展元素时,才需要这样做。 extension-element-prefix
属性仅表示具有该前缀的任何元素不是文字结果元素,而是除了XSLT语言定义的那些指令之外的扩展指令。
至于exclude-result-prefixes
,你已经明白了,它有助于避免在结果元素上对名称空间声明和在样式表中使用的名称空间的任何名称空间声明,只是为了选择路径表达式中的节点或匹配模式或用于插入扩展名元件。