xml中如何使用xsl:if
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 >
----------------------^
请问怎么修改?
[解决办法]
一个是你用的标准比较旧了,要改名称空间的声明,另一个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>
[解决办法]
@符号的意思是指属性, 比如你的这段代码:
<xsl:for-each select="document/resume"><xsl:if test="@age < 40" > ... ...</xsl:if></xsl:for-each>
[解决办法]
<xsl:if test="@age < 40 and @age>20">