xslt如何生成自增变量

环境:win7 ie11
问题:xslt如何生成自增变量?

解决:xsl没有自增变量。另外可以使用position()作为节点序号

参考:http://bbs.youkuaiyun.com/topics/340065170

转:http://blog.youkuaiyun.com/lwkaoyan/article/details/5742568

position()函数——返回节点位置
语法:position()
参数:无
返回值:整数

用途:该函数用于返回上下文节点在正在处理的节点集合中的位置。


以下示例程序演示了position()函数的用法。

XML源文档如下所示。

<?xml version="1.0"?>
<root>
    <e pos="1">001</e>
    <e pos="2">002</e>
    <e pos="3">003</e>
    <e pos="4">004</e>
    <e pos="5">005</e>
</root>
XSLT文档如下所示。

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <xsl:for-each select="root/e">
      第<xsl:value-of select="position()"/>个e元素:<xsl:value-of select="."/>
    </xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出结果如下所示。

1个e元素:001

2个e元素:002

3个e元素:003

4个e元素:004

5个e元素:005



package ajiayou.index0307; import com.sun.org.apache.xalan.internal.xsltc.dom.SortingIterator; import java.util.Scanner; public class Test01 { public static void main(String[] args) { /*final int a = 10; System.out.println(1000); //字面量---常量不能更改,常量 String str = "bbbb"; //字符串都是常量 str = "ccc"; System.out.println(str);*/ //字符串,在Java中任何值和字符串拼接结果都为字符串 //Java不能够通过代码来查看类型 //System.out.println(10 + "值为:" + false); /*int a =10; int b = 20; System.out.println(a + b +"值为:");*/ /*String a = 10.10 + ""; String b = "10";*/ //运算符 + - * / % += -= *= /= ++ -- // = 赋值运算符得级别比较低 //优先级得东西 /*int a =10; int b = 20;*/ //加法 /*int c = a + b; System.out.println(c); //减法 int c1 = b - a; System.out.println(c1); int c2 = a * b; System.out.println(c2); int c3 = b / a; System.out.println(c3);*/ /*int c4 = b % a; System.out.println(c4); a = a + 200; System.out.println(a); a+=200; System.out.println(a);*/ /*a = a -2; System.out.println(a); a-=2; System.out.println(a);*/ /*a = a * 2; a *= 2; System.out.println(a);*/ /*a /= 2; System.out.println(a);*/ /*a %=2; System.out.println(a);*/ // ++ -- //int a1 =1; //每使用一次自运算符都会给该表达式+1 /*a1++; //a1 =a1 + 1 a1++; //a1 = a1 + 1 a1++; //a1 = a1+1; System.out.println(a1); ++a1; //a1 =a1 + 1 ++a1; //a1 = a1 + 1 ++a1; //a1 = a1+1; System.out.println(a1);*/ /*int b = (a1++ + 10); //12 System.out.println(b); System.out.println(a1);*/ //类型转换 //同一种数据类型【数值类型】 /*byte b = 10; int a = 20; //类型转换有两种类型转换 //1.自动类型转换 2.强制类型转换 short s = b; //目标数据类型得空间如果大于源数据类型,则源数据类型自动转换为目标数据类型 int a1 = a + b; //如果两数相加如果其中一个类型得空间大于另一个值得类型,那么它也会转换为空间大得类型*/ //字节4个字节为列, int float long 8个 /*long a = 2000; //从科学计算得角度来看float的取值范围要比long类型大所以long类型可以自动转换为float //结论所有的整数类型都可以自动转换成小数类型 float f = a;*/ /*char c = 98; //数值类型转换可以自动转换为char类型,整数不能是负数, 范围0--65535之间, 要转换的数值不能分开声明要直给,所以他是伪转换 System.out.println(c);*/ //自动类型转换 /*char c = 'A'; int a = c; System.out.println(a);*/ //强制类型转换 //int a = 20; //所有的数值类型的默认类型为int //byte b = (byte) a; //强制类型转换如果目标类型的空间小于源数据类型的空间,那么我们的源数据类型的空间要和目标类型空间统一 /*float f = 2034343.934324F; int b = (int) f; System.out.println(b);*/ /* float f = 23423432.2344334F; //要进行强制类型转换 float f1 = (float)23423432.2344334; //要进行强制类型转换*/ //long l1 = 66666666666666666L; //将int类型强制转换为long类型 /*int a = 2000; byte b = (byte) a; //溢出 System.out.println(b);*/ /*注释补充:在Java中,int类型占用32位(4字节),其取值范围为-2,147,483,648到2,147,483,647; 而byte类型仅占用8位(1字节),其取值范围为-128到127。 当将一个超出byte表示范围的int值转换为byte时,会发生溢出4。*/ /*byte b = 20; short s = 20; //byte b = 20 short s = 20;但是计算后的结果为40系统默认转换成了int类型所以前面要做强制类型转换 short tt = (short) (s + b); //20 + 20 = 40int*/ /*Scanner input = new Scanner(System.in); int a = (int) input.nextDouble();*/ /*byte b = 20; short s = 20; int tt = s + b;*/ } }
最新发布
07-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值