每个循环的XSL只捕获数据到某个索引

时间:2013-02-21 18:35:01

标签: xslt for-loop

如何让xsl使用for循环获取项目,但只选择最多的某个索引。我尝试做的是获取一个由web服务控制的数字,并将out_data_info中的项目返回到该索引。我遇到的问题是它只返回该索引处的数据,而不是返回该索引之前的所有内容。

<xsl:variable name="count" select=".//out_rec_count/text()"/>
<xsl:for-each select="//out_data_info[number($count)]">
<xsl:apply-templates select="." />
</xsl:for-each> 

在为每个循环使用a时,有没有办法做我想要的?

1 个答案:

答案 0 :(得分:1)

<xsl:for-each select="//out_data_info[position() &lt;= $count]">

会选择所有out_data_info个元素,这些元素是其父元素的第一个,第二个,$count - out_data_info子元素。根据源XML的结构,这可能完全正确也可能不完全正确(如果您想要一个完整的答案,您必须编辑问题以包含输入的示例) - 您可能会发现需要

<xsl:for-each select="/descendant::out_data_info[position() &lt;= $count]">

相反,它会在整个文档中选择$countout_data_info次出现,无论它们在父元素中的位置如何。

(这是descendant:://意味着略有不同的边缘情况之一)