关于xsl:for-each循环中的xml:Counter

关于xsl:for-each循环中的xml:Counter

Counter inside xsl:for-each loop

如何在xsl:for-each循环中获取一个计数器,该计数器将反映当前已处理元素的数量。
例如,我的源XML是

1
2
3
4
5
6
7
8
9
10
11
<books>
    <book>
        The Unbearable Lightness of Being
    </book>
    <book>
        Narcissus and Goldmund
    </book>
    <book>
        Choke
    </book>
</books>

我想要得到的是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<newBooks>
    <newBook>
        <countNo>1</countNo>
        The Unbearable Lightness of Being
    </newBook>
    <newBook>
        <countNo>2</countNo>
        Narcissus and Goldmund
    </newBook>
    <newBook>
        <countNo>3</countNo>
        Choke
    </newBook>
</newBooks>

XSLT进行修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <newBooks>
            <xsl:for-each select="books/book">
                <newBook>
                    <countNo>???</countNo>
                   
                        <xsl:value-of select="title"/>
                   
                </newBook>
            </xsl:for-each>
        </newBooks>
    </xsl:template>
</xsl:stylesheet>

因此,问题是用什么代替???。 是否有任何标准关键字,还是我必须简单地声明一个变量并在循环内对其递增?

由于问题很长,我可能应该期待一行或一个单词的答案:)


position()。 例如。:

1
<countNo><xsl:value-of select="position()" /></countNo>

尝试在???位置插入

注意" 1"-这是数字格式。 更多信息:这里


尝试:

1
<xsl:value-of select="count(preceding-sibling::*) + 1" />

编辑-在那里冻结了大脑,position()更简单!


您还可以在Postion()上运行条件语句,这在许多情况下都非常有用。

例如

1
2
3
 <xsl:if test="(position( )) = 1">
     //Show header only once
    </xsl:if>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <newBooks>
                <xsl:for-each select="books/book">
                        <newBook>
                                <countNo><xsl:value-of select="position()"/></countNo>
                               
                                        <xsl:value-of select="title"/>
                               
                        </newBook>
                </xsl:for-each>
        </newBooks>
    </xsl:template>
</xsl:stylesheet>


推荐阅读

    linux获取命令输出行?

    linux获取命令输出行?,数字,工具,系统,数据,命令,文件,内容,文本,尾部,表示,L

    用linux命令获取日志?

    用linux命令获取日志?,地址,系统,信息,一致,暂停,状态,日志,命令,标准,对比,l

    linux查文件数量命令?

    linux查文件数量命令?,系统,数据,电脑,命令,文件,信息,代码,对比,软件,第三,l

    获取linux时间命令行?

    获取linux时间命令行?,时间,系统,信息,命令,工具,工作,代码,数据,服务,环境,L

    linux命令行获取id?

    linux命令行获取id?,系统,信息,管理,名称,命令,进程,代码,状态,下来,单位,如

    linux命令循环导入?

    linux命令循环导入?,服务,系统,密码,数据,增长,名字,数字,官网,地址,文件,mys

    linux编辑循环命令?

    linux编辑循环命令?,代码,增长,工具,基础,灵活,状态,连续,系统,数字,数据,lin

    linux获取挂载点命令?

    linux获取挂载点命令?,系统,设备,情况,信息,分区,磁盘,命令,网络,电脑,目录,L

    linux获取ip命令行?

    linux获取ip命令行?,地址,系统,网络,信息,技术,设备,电脑,服务,手机,管理,配

    linux获取地址命令?

    linux获取地址命令?,地址,网络,信息,系统,设备,终端,命令,中心,管理,数字,lin

    linux获取ip命令行?

    linux获取ip命令行?,地址,系统,网络,信息,技术,设备,电脑,服务,手机,管理,配

    linux获取地址命令?

    linux获取地址命令?,地址,网络,信息,系统,设备,终端,命令,中心,管理,数字,lin

    linux循环命令大全?

    linux循环命令大全?,工作,地址,系统,命令,工具,代码,目录,连续,环境,管理,Lin

    循环执行linux命令?

    循环执行linux命令?,工具,系统,名称,代码,第一,环境,位置,数字,脚本,变量,Lin

    linux上获取网管命令?

    linux上获取网管命令?,地址,系统,网络,信息,电脑,服务,网关,状态,名字,中心,l

    linux命令行获取ip?

    linux命令行获取ip?,地址,系统,代码,信息,电脑,服务,状态,密码,命令,网卡,【L

    linux命令获取主机名?

    linux命令获取主机名?,工作,地址,管理,系统,信息,命令,目录,软件,代码,策略,L

    linux循环复制命令?

    linux循环复制命令?,系统,文件,命令,目录,地址,源文件,文件夹,目标,文件名,

    linux获取网速命令?

    linux获取网速命令?,网络,工具,软件,地址,设备,5G,名称,工作,通讯,分析,linux

    linux命令行写循环?

    linux命令行写循环?,工作,系统,地址,命令,情况,定期,基础,连续,信息,文件,Lin