+ -
当前位置:首页 → 问答吧 → 【求助】请问怎样在xsl里定义变量!

【求助】请问怎样在xsl里定义变量!

时间:2004-07-16

来源:互联网

请问怎样在xsl里定义变量、给变量赋值、读取变量的值?

作者: sc_80817   发布时间: 2004-07-16

xsl:variable元素被用作声明局部或者全局变量,可以给变量一个name和一个值
格式:   
<xsl:variable name="zdzhuo">
............
</xsl:variable>  


如何取得变量的值
来个简单例子
xml文件 display.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="var.xsl"?>
<zd>
<zhuo>
<name>bencalie</name>
<age>25</age>
</zhuo>
<zhuo>
<name>baoyu</name>
<age>24</age>
</zhuo>
<zhuo>
<name>zdzhuo</name>
<age>18</age>
</zhuo>
</zd>

////////////////////////////////////////////////////////////////////////////////

xsl文件  var.xsl
看了下面的代码,很容易明白select对象是取得变量值的关键
以下代码作用是把display.xml中大于20岁和小于20岁的人分别显示出来
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:variable name="display">
<tr>
<td><b>name</b></td>
<td><b>age</b></td>
</tr>
</xsl:variable>
<xsl:template match="/">
<html>
<body>
<table>
<xsl:copy-of select="$display" />
<xsl:for-each select="zd/zhuo">
<tr>
<xsl:if test="age &lt; 20">
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="age" /></td>
</xsl:if>
</tr>
</xsl:for-each>
</table>
<p />
<table>
<xsl:copy-of select="$display" />
<xsl:for-each select="zd/zhuo">
<tr>
<xsl:if test="age &gt; 20">
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="age" /></td>
</xsl:if>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

作者: zdzhuo   发布时间: 2004-07-16

起同样作用的还有元素xsl:param  
规则和xsl:variable是一样的
另外不同的变量可以使用同样的name但只能访问其中一个变量
全局变量和局部变量也可以使用相同的name
但也只能访问其中一个
name属性还有优先级之分(时间缘故蜻蜓点水学得不深,还无法示例)
如果name属性被赋值,而select属性未赋值,没有内容
那么变量就是空的

作者: zdzhuo   发布时间: 2004-07-16

zdzhuo能解释下with-param的用法跟适用的范围吗,我被弄的头疼死了。

作者: 心不再流泪   发布时间: 2004-07-21

感谢ZDZHUO提供这么好的例子。
这个例子是使用子元素保存数据,结构很清析。
可以再把使用属性保存的方法写出来给大家参考吗?
谢谢!

作者: khristian   发布时间: 2004-07-25

现在下班了
晚上有空一起讨论一下
最近较忙
今天才看到各位的回复
抱歉

作者: zdzhuo   发布时间: 2004-07-28