Attribute exclude-result-prefixes can be used on any element to prevent output of unwanted namespace declarations. Values of this attribute may be either space separated list of unwanted namespaces to be excluded or "#all" which removes all namespaces which are not needed.
Please note that if two prefixes are used for the same namespace, specification of one prefix in exclude-result-prefixes automatically removes others (in XML prefixes are not important, namespaces are).
While namespace handling may seem perplexing, in real life scenario it is usually sufficient to set exclude-result-prefixes on xsl:stylesheet element as authors of the stylesheets usually prefer to have unneeded namespace declarations removed everywhere.
|
XSLT
<xsl:stylesheet xmlns:o="oooooo" xmlns:r="rrrrrr" xmlns:r1="rrrrrr" xmlns:s="ssssss" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> <xsl:template match="/aaa"> <xxx> <ddd/> <o:eee/> </xxx> <yyy xsl:exclude-result-prefixes="r s"> <ddd/> <o:eee/> </yyy> <zzz xsl:exclude-result-prefixes="#all"> <ddd/> <o:eee/> </zzz> </xsl:template> </xsl:stylesheet> |
|
|
XML
<aaa xmlns:o="oooooo" xmlns:p="pppppp" xmlns:v="vvvvvv"> <o:bbb/> </aaa> |
Output
<xxx xmlns:o="oooooo" xmlns:r="rrrrrr" xmlns:r1="rrrrrr" xmlns:s="ssssss"> <ddd/> <o:eee/> </xxx> <yyy xmlns:o="oooooo"> <ddd/> <o:eee/> </yyy> <zzz> <ddd/> <o:eee xmlns:o="oooooo"/> </zzz> |
| Previous chapter: | Multiple Outputs |
| Next chapter: | Keys |
| Previous page: | Namespace propagation from source to result |
| Next page: | Namespace aliasing |