Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSLT中的反迭代_Xslt_Sorting_Iterator_Counter - Fatal编程技术网

XSLT中的反迭代

XSLT中的反迭代,xslt,sorting,iterator,counter,Xslt,Sorting,Iterator,Counter,我想修改XSLT中的一些现有代码,以便能够迭代和显示计数器 这是代码,其中“Rank”必须是计数器,我不能在其他地方实现,因为排序是在这里完成的 我不知道我的问题是否清楚,但这里有一些代码: <xsl:for-each select="Player"> <xsl:sort select="Points" order="descending" data-type="number"/> <xsl:sort select="G" order="de

我想修改XSLT中的一些现有代码,以便能够迭代和显示计数器

这是代码,其中“Rank”必须是计数器,我不能在其他地方实现,因为排序是在这里完成的

我不知道我的问题是否清楚,但这里有一些代码:

<xsl:for-each select="Player">
      <xsl:sort select="Points" order="descending" data-type="number"/>
      <xsl:sort select="G" order="descending" data-type="number"/>
      <xsl:sort select="A" order="descending" data-type="number"/>
      <xsl:sort select="GP" order="ascending" data-type="number"/>
      <tr bgcolor="#E2EFED" border="0">
        <td align="center"><xsl:value-of select="Rank"/></td>
        <td align="center"><xsl:value-of select="Name"/></td>
        <td align="center"><xsl:value-of select="Team"/></td>   
      </tr>
</xsl:for-each>

您可以使用XPath position()函数

换言之,只要改变:

<td align="center"><xsl:value-of select="Rank"/></td>


下面是一个完整的示例,说明如何执行此操作:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:template match="/*">
  <xsl:for-each select="*">
   <xsl:value-of select="concat('&#xA;', position(), '. ', name())"/>
  </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>
1. a
2. b
3. c
4. d
5. e
将您的代码修改为:

<t>
 <a/>
 <b/>
 <c/>
 <d/>
 <e/>
</t>
    <xsl:for-each select="Player">
        <xsl:sort select="Points" order="descending" data-type="number"/>
        <xsl:sort select="G" order="descending" data-type="number"/>
        <xsl:sort select="A" order="descending" data-type="number"/>
        <xsl:sort select="GP" order="ascending" data-type="number"/>
        <tr bgcolor="#E2EFED" border="0">
            <td align="center">
                <xsl:value-of select="position()"/>
            </td>
            <td align="center">
                <xsl:value-of select="Name"/>
            </td>
            <td align="center">
                <xsl:value-of select="Team"/>
            </td>
        </tr>
    </xsl:for-each>

问得好,+1。请参阅我的答案,了解一个简单完整的示例和解决方案。:)
    <xsl:for-each select="Player">
        <xsl:sort select="Points" order="descending" data-type="number"/>
        <xsl:sort select="G" order="descending" data-type="number"/>
        <xsl:sort select="A" order="descending" data-type="number"/>
        <xsl:sort select="GP" order="ascending" data-type="number"/>
        <tr bgcolor="#E2EFED" border="0">
            <td align="center">
                <xsl:value-of select="position()"/>
            </td>
            <td align="center">
                <xsl:value-of select="Name"/>
            </td>
            <td align="center">
                <xsl:value-of select="Team"/>
            </td>
        </tr>
    </xsl:for-each>