新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > .Net开发 > Asp.net教程 > 正文:xsl递增变量解决家族树的问题

xsl递增变量解决家族树的问题

新客网 XKER.COM 2004-12-01 来源: 收藏本文
xml没有递增变量的标准方法一旦定义了一个变量,他就不能改变
这相当于java中的final字段不过在一些情况中结合模板的递归方法可以实现类

似的结果
假如xml文件为familyTree.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="familyTree.xslt"?>
<person name="Otto">
<person name="Sandra">
<person name="Lichao">
<person name="Zhangsan"/>
</person>
<person name="Eric">
<person name="HaLi"/>
</person>
<person name="Lisi">
<person name="HeLi"/>
<person name="Andy"/>
</person>
</person>
</person>
这段xml中每个<person>元素可以包含任意个数的<person>子元素
这就叫家族数,在显示这个家族树的时候应根据家族系来缩进文本是个恰当的

做法这就给人们之间关系给一个可视化的表示
例如
Otto
Sandra
Lichao
Zhangsan
Eric
HaLi
Lisi
HeLi
Andy
这样就得用递归的方法写xslt样式表
familyTree.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="html"/>
<xsl:template match="/">
<html>
<body>
<!-- select the top level person -->
<xsl:apply-templates select="person">
<xsl:with-param name="level"

select="'0'"/>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
<!-- Output information for a person and recursively select
all children. -->
<xsl:template match="person">
<xsl:param name="level"/>

<!-- indent according to the level -->
<div style="text-indent:{$level}em">
<xsl:value-of select="@name"/>
</div>
<!-- recursively select children, incrementing the

level -->
<xsl:apply-templates select="person">
<xsl:with-param name="level" select="$level +

1"/>
</xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>

和通常一样这个样式表以匹配文本的根节点作为开始,并输入一个基本的

html文档,然后它选择<person>根元素将level=0作为参数传递到匹配person的

模板:<xsl:apply-templates select="person">
<xsl:with-param name="level" select="'0'"/>
</xsl:apply-templates>
而person模板使用一个html的div在一个新行上显示每个人的名字并以em为单位

设定文本的缩进。最后递归的调用person模板,将$level+1作为参数传递,尽

管这样并不会递增一个已有的变量但是他的确传递了一个新的局部变量到模板

中。该变量的值大于以前的值,与递归的处理的技巧不同,实际上在xslt中并

没有递增变量值的方法


收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐