xml中如何使用xsl:if

Thr21ough 2010-04-18 06:58:25
xml文件是这样:
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="1.xsl"?>
<document>
<resume>
<name>张三</name>
<sex>男</sex>
<age>38</age>
<skill>WEB编程</skill>
</resume>
<resume>
<name>李四</name>
<sex>男</sex>
<age>42</age>
<skill>数据库设计</skill>
</resume>
</document>



xsl文件是这样:
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="2" style="position:absolute;top:30px;left:30px;font:15px">
<tr>
<td style="text-align:center">name</td>
<td style="text-align:center">sex</td>
<td style="text-align:center">age</td>
<td style="text-align:center">skill</td>
</tr>

<xsl:for-each select="document/resume">
<xsl:if test="@age < 40 ">
<tr>
<td style="text-align:center"><xsl:value-of select="name"/></td>
<td style="text-align:center"><xsl:value-of select="sex"/></td>
<td style="text-align:center"><xsl:value-of select="age"/></td>
<td style="text-align:center"><xsl:value-of select="skill"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>


</body>
</html>
</xsl:template>


</xsl:stylesheet>



我的目的是选择出年龄在20岁到49岁之间的人员
为什么出现的页面是下面这样呢?

名称以无效字符开头。处理资源 'file:///C:/Documents and Settings/Administrator/桌面/1.xsl' 时出错。第 15 行,位置: 23

<xsl:if test="@age" < 40 >
----------------------^


请问怎么修改?
...全文
132 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
asharpnet 2010-04-20
  • 打赏
  • 举报
回复
<xsl:if test="@age < 40 and @age>20">
Michael193 2010-04-20
  • 打赏
  • 举报
回复
@符号的意思是指属性, 比如你的这段代码:

<xsl:for-each select="document/resume">
<xsl:if test="@age < 40" >
...
...
</xsl:if>
</xsl:for-each>

这句的意思就是检测在当前节点(document/resume)中名为age的属性的参数是否小于40;

如果别的地方没有错的话. 我发现你要去取20到40岁之间的
所以你可以将这句改为

<xsl:for-each select="document/resume">
<xsl:if test="age <= 40 and age >= 20" >
...
...
</xsl:if>
</xsl:for-each>
weberwong 2010-04-18
  • 打赏
  • 举报
回复
一个是你用的标准比较旧了,要改名称空间的声明,另一个age是元素,不是属性,所以你这个xsl应该改成以下内容
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table border="2" style="position:absolute;top:30px;left:30px;font:15px">
<tr>
<td style="text-align:center">name</td>
<td style="text-align:center">sex</td>
<td style="text-align:center">age</td>
<td style="text-align:center">skill</td>
</tr>

<xsl:for-each select="/document/resume">
<xsl:if test="age < 40 ">
<tr>
<td style="text-align:center"><xsl:value-of select="name"/></td>
<td style="text-align:center"><xsl:value-of select="sex"/></td>
<td style="text-align:center"><xsl:value-of select="age"/></td>
<td style="text-align:center"><xsl:value-of select="skill"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>


</body>
</html>
</xsl:template>


</xsl:stylesheet>

8,909

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧