XSLT命名空间声明中排除结果前缀和扩展元素前缀之间有什么区别?

XSLT命名空间声明中排除结果前缀和扩展元素前缀之间有什么区别?,xslt,namespaces,exslt,Xslt,Namespaces,Exslt,排除结果前缀和扩展元素前缀之间有什么区别?两者都用在XSLT的头中。我在使用EXSLT时发现了扩展元素前缀,并指出扩展元素前缀用于“防止在结果树中输出扩展名称空间” 但这不是真的(使用libxslt)。仅排除结果前缀删除扩展名称空间。那么为什么我需要扩展元素前缀 样本: 我使用libxslt(xsltproc)的输出: 使用类似命名空间中的EXSLT函数http://exslt.org/common您不需要扩展元素前缀属性。仅当您希望在命名空间http://exslt.org/functio

排除结果前缀
扩展元素前缀
之间有什么区别?两者都用在XSLT的头中。我在使用EXSLT时发现了
扩展元素前缀
,并指出
扩展元素前缀
用于“防止在结果树中输出扩展名称空间”

但这不是真的(使用libxslt)。仅
排除结果前缀
删除扩展名称空间。那么为什么我需要扩展元素前缀

样本:


我使用libxslt(xsltproc)的输出:


使用类似命名空间中的EXSLT函数
http://exslt.org/common
您不需要
扩展元素前缀
属性。仅当您希望在命名空间
http://exslt.org/functions
extension-element-prefix
属性仅表示具有该前缀的任何元素都不是文本结果元素,而是XSLT语言定义的那些指令之外的扩展指令


至于
排除结果前缀
,您已经了解了这一点,它有助于避免在样式表中声明和使用的名称空间的结果元素上声明任何名称空间,这些名称空间仅用于选择路径表达式中的节点或匹配模式,或用于插入扩展元素。

好的。这是有道理的。我只是想知道为什么我应该使用
扩展元素前缀
,因为我可以使用
http://exslt.org/common
。似乎EXSLT文档在此部分出错。或者
扩展元素前缀
仅从输出树中隐藏需要
扩展元素前缀
的元素。要进入保存路径,当我使用EXSLT等扩展库时,我将同时使用
扩展元素前缀
排除结果前缀
。有些人在只需要排除结果前缀的情况下一直使用扩展元素前缀,这很有效,因为EEP有两个效果:它允许您为扩展元素使用名称空间(您可以忽略此特权),并且它将名称空间添加到ERP列表中。
<?xml version="1.0"?>
<blabla xmlns:exsl="http://exslt.org/common"/>