Xslt 使用应用模板从循环中退出

Xslt 使用应用模板从循环中退出,xslt,xslt-2.0,Xslt,Xslt 2.0,我的xml中有10个元素,如下所示,但我只需要使用apply模板捕获前3个元素 <name>hello</name> <name>hello</name> <name>hello</name> <name>hello</name> <name>hello</name> ............ ...... 你好 你好 你好 你好 你好 ............ ......

我的xml中有10个元素,如下所示,但我只需要使用apply模板捕获前3个元素

<name>hello</name>
<name>hello</name>
<name>hello</name>
<name>hello</name>
<name>hello</name>
............
......
你好 你好 你好 你好 你好 ............ ......
是否有一种方法可以使用apply templates中的条件在前三个元素之后退出循环,而不是退出循环,只需将
xsl:apply templates
应用于前三个
name
元素即可

给定此输入XML:

名字1
名称2
名字3
名字4
名字5
此XSLT:

将生成此输出XML:

名字1
名称2
名字3

你从@kjhughes那里得到了答案,但元答案是你的思维太程序化了。应用模板不是一个循环,它是一个函数映射。
<?xml version="1.0"?>
<names>
  <name>Name 1</name>
  <name>Name 2</name>
  <name>Name 3</name>
  <name>Name 4</name>
  <name>Name 5</name>
</names>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="names">
    <new_names>
      <xsl:apply-templates select="name[position() &lt;= 3]"/>
    </new_names>
  </xsl:template>

  <xsl:template match="name">
    <new_name><xsl:value-of select="."/></new_name>
  </xsl:template>

</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<new_names>
   <new_name>Name 1</new_name>
   <new_name>Name 2</new_name>
   <new_name>Name 3</new_name>
</new_names>