<xsl:template match="title">
<span class="title">
<xsl:apply-templates />
</span>
</xsl:template>
<xsl:template match="highlight">
<span class="highlight">
<xsl:apply-templates />
</span>
</xsl:template>
или, если хотите, сверните его в один шаблон:
<xsl:template match="title|highlight">
<span class="{name()}">
<xsl:apply-templates />
</span>
</xsl:template>
Ключевой точкой является <xsl:apply-templates />
- он пропускает все дочерние узлы текущего узла через соответствующие шаблоны. В верхнем варианте соответствующие шаблоны являются отдельными, в нижнем варианте один шаблон называется рекурсивным.
В XSLT определено правило по умолчанию, которое копирует текстовые узлы. Весь текст проходит через это правило <apply-templates>
, поэтому текстовые узлы появляются в выводе автоматически.