Есть три способа сделать это:
Во-первых, вы можете указать шаблону, который обрабатывает элемент Foo
, обрабатывать только первые три дочерних узла:
<xsl:template match="Foo">
<xsl:copy> <!-- can substitute with 'Foo' in this instance -->
<xsl:apply-templates select="*[position() <= 3]" />
</xsl:copy>
</xsl:template>
Илиесли первые три дочерних узла не нуждаются в какой-либо отдельной обработке, вы можете использовать такой шаблон для обработки дочерних элементов:
<xsl:template match="Foo/*[position() <= 3]">
<!-- process the child element here -->
</xsl:template>
Два недостатка этого подхода состоят в том, что оставшиеся дочерние элементы Foo
может обрабатываться другими шаблонами, например, если у вас был один для специальной обработки FooBar
узлов, а также нет простого способа обработки элементов Bar
и Baz
по-другому.
Третий методиспользовать пустой шаблон, который применяется ко всем дочерним узлам Foo
после третьего, например:
<xsl:template match="Foo/*[position() > 3]" />
Этот метод также дает вам преимущество, заключающееся в возможности применения отдельных шаблонов для Bar
и Baz
, если вам нужно.