我的xml中有10个元素,如下所示,但我只需要使用apply templates捕获前3个元素
<name>hello</name>
<name>hello</name>
<name>hello</name>
<name>hello</name>
<name>hello</name>
............
......有没有办法使用apply templates中的条件在前3个元素之后退出循环
发布于 2014-09-03 08:34:14
不需要退出循环,只需xsl:apply-templates到前三个name元素。
给定以下输入XML的:
<?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>这个XSLT:
<?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() <= 3]"/>
</new_names>
</xsl:template>
<xsl:template match="name">
<new_name><xsl:value-of select="."/></new_name>
</xsl:template>
</xsl:stylesheet>将生成以下输出XML:
<?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>https://stackoverflow.com/questions/25634205
复制相似问题