Я думаю, что как только вы получите разумное представление о том, как работает обход XSLT (надеюсь, я ответил на этот вопрос в вашем другом вопросе), это становится довольно просто.
У вас есть несколько вариантов, как это сделать. Ответ Даррелла Миллера показывает, что вам нужно обработать весь документ и выделить элементы, которые вам не интересны. Это один из подходов.
Прежде чем идти дальше, у меня создается впечатление, что вы можете не совсем «понять» концепцию контекста в XSLT. Это важно и сделает вашу жизнь проще. В любое время в XSLT есть один и единственный узел контекста. Это узел (элемент, атрибут, комментарий и т. Д.), Который в данный момент «обрабатывается». Внутри шаблона, вызываемого через xsl: select, выбранный узел является контекстным узлом. Итак, учитывая ваш xml:
<alpha_top>This prints.
<beta>This doesn't.
<alpha_bottom>This too prints.</alpha_bottom>
</beta>
</alpha_top>
и следующее:
<xsl:apply-templates select='beta'/>
и
<xsl:template match='beta'>...</xsl:template>
бета-узел будет контекстным узлом внутри шаблона. Это немного больше, чем это, но не так много.
Итак, когда вы начинаете свою таблицу стилей с чего-то вроде:
<xsl:template match='/'>
<xsl:apply-templates select='alpha_top'/>
</xsl:apply-templates>
вы выбираете дочерние элементы узла документа (единственным дочерним элементом является элемент alpha_top). Ваш оператор xpath внутри относится к контекстному узлу.
Теперь в этом шаблоне верхнего уровня вы можете решить, что хотите обрабатывать только ваши узлы alpha_bottom. Тогда вы могли бы сделать заявление вроде:
<xsl:template match='/>
<xsl:apply-templates select='//alpha_top'/>
</xsl:template>
Это будет идти по дереву и выбирать все элементы alpha_top и ничего больше.
В качестве альтернативы вы можете обработать все свои элементы и просто игнорировать содержимое бета-узла:
<xsl:template match='beta'>
<xsl:apply-templates/>
</xsl:template>
(как я уже говорил в моем другом ответе xsl: apply-templates без атрибута select - то же самое, что и использование select = '' *).
Это будет игнорировать содержимое бета-узла, но обрабатывать все его дочерние элементы (при условии, что у вас есть шаблоны).
Итак, игнорирование элементов в ваших выходных данных в основном заключается в использовании правильных операторов xpath в ваших атрибутах select. Конечно, вы можете захотеть хороший учебник по xpath:)