Используйте встроенное шаблонное правило для текстовых узлов, которое должно копировать их в результат. Даже для указанного вами нового режима обработки («все-но-а» в приведенном ниже коде) встроенные правила будут работать: для элементов (рекурсивно) обрабатываются дочерние элементы; для текстовых узлов скопируйте. Вам нужно только переопределить один из них, правило для <a>
элементов, отсюда и правило пустого шаблона, которое эффективно удаляет текст.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="myNode">
<!-- Process children -->
<xsl:apply-templates mode="all-but-a"/>
</xsl:template>
<!-- Don't process <a> elements -->
<xsl:template mode="all-but-a" match="a"/>
</xsl:stylesheet>
Чтобы получить полное описание того, как работают встроенные правила шаблонов, ознакомьтесь с разделом «1006 *« Как работает XSLT »на моем веб-сайте в разделе« Правила встроенного шаблона ».