What’s the difference between exclude-result-prefixes and extension-element-prefix? Both are used in the header of XSLTs. I’ve found extension-element-prefix while using EXSLT and the EXSLT website Howto says that extension-element-prefix is used for “prevent the extension namespaces from being output in the result tree”.
But this is not true (using libxslt). Only exclude-result-prefixes removes the extension namespace. So why do I need extension-element-prefix ???
Sample:
<?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>
My output with libxslt (xsltproc):
<?xml version="1.0"?>
<blabla xmlns:exsl="http://exslt.org/common"/>
To use EXSLT functions like the one in the namespace
http://exslt.org/commonyou don’t need theextension-element-prefixattribute. That is only need if you want to use extension elements likefunc:functionin the namespacehttp://exslt.org/functions. Theextension-element-prefixattribute simply signals that any elements with that prefix are not literals result elements but rather extension instructions in addition to those instructions defined by the XSLT language.As for
exclude-result-prefixes, you have understood that right, it helps avoiding any namespace declarations on your result elements for namespaces declared and used in the stylesheet solely to select nodes in path expressions or match patterns or used to insert extension elements.