首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

xml中怎么使用xsl:if

2012-03-21 
xml中如何使用xsl:ifxml文件是这样:?xml version1.0 encodinggb2312??xml-stylesheet typetext

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 &lt; 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 &lt; 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>
[解决办法]
@符号的意思是指属性, 比如你的这段代码:

XML code
<xsl:for-each select="document/resume"><xsl:if test="@age &lt; 40" > ... ...</xsl:if></xsl:for-each>
[解决办法]
<xsl:if test="@age < 40 and @age>20">

热点排行