В вашем примере нет веских причин для использования 1-го шаблона, потому что он не делает ничего, что в любом случае не было бы сделано встроенным шаблоном :
<xsl:template match="*|/">
<xsl:apply-templates/>
</xsl:template>
(кроме случаев, когда целью является предотвращение обработки документов XML, элемент root которых не ns0:MyRoot
).
Однако в целом есть очень хорошие причины иметь несколько шаблонов из-за способа работы XSLT-обработки . Во многих случаях удобно применять шаблоны к нескольким узлам, и позволить процессору найти наиболее подходящий шаблон для каждого узла. Это позволяет вам инкапсулировать код для обработки каждого типа узла и избегать сложных условных операторов.
OTOH, нужно сказать, что слишком часто несколько шаблонов используются без уважительной причины, что приводит к GOTO синдром .