以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  xpath路径匹配出错的问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=48496)


--  作者:newnewff
--  发布时间:6/14/2007 10:43:00 AM

--  xpath路径匹配出错的问题
XML文件为
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="text.xsl"?>
<roster>
 <student ID="101">
  <name>李华</name>
  <sex>男</sex>
  <birthday>1978.9.12</birthday>
  <score>92</score>
  <skill>Java</skill>
  <skill>Oracle</skill>
  <skill>SQL</skill>
 </student>
 <studnet ID="102">
  <name>倪冰</name>
  <sex>女</sex>
  <birthday>1979.1.12</birthday>
  <score>89</score>
  <skill>Visual Basic</skill>
  <skill>SQL</skill>
  <skill>ASP</skill>
 </studnet>
                ...................
</roster>

text.xsl文件内容为:
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
 <xsl:template match="/">
  <title>培训中心成绩单</title>
  <h2 align="center">学生成绩单 </h2>
  <table border="1" cellpadding="0" align="center">
   <tr align="center" bgcolor="#dadada">
    <td>编号</td>
    <td>姓名</td>
    <td>性别</td>
    <td>生日</td>
    <td>成绩</td>
    <td>评价</td>
   </tr>
   
 <xsl:for-each select="/roster/student"> 
   <tr>
    <td>
    <xsl:value-of select="@ID"/>
    </td>
    <td>                     <xsl:value-of select="name"/>
    </td>
    <td>
    <xsl:value-of select="sex"/>
    </td>
    <td>
    <xsl:value-of select="birthday"/>
    </td>
    <td>
    <xsl:value-of select="score"/>
    </td>
    <td>
    <xsl:choose>
       <xsl:when test="score &lt; 60 ">不及格</xsl:when>
       <xsl:when test="score &lt; 80 ">一般</xsl:when>
       <xsl:when test="score &gt; 90 ">优秀</xsl:when>
       <xsl:otherwise>良好</xsl:otherwise>
    </xsl:choose>
    </td>
   </tr>
                                   </xsl:for-each>
  </table>
 </xsl:template>
</xsl:stylesheet>

结果只显示了ID为101,名字叫李华的第1个student,错误应该是第2处红色地方,如果改成]<xsl:for-each select="/roster/*">才会显示所有student,但roster下如果有除了student以外的节点也会混淆,另外改成//student,/roster//student都只会显示第1个student


--  作者:Qr
--  发布时间:6/14/2007 11:52:00 AM

--  
http://blogger.org.cn/blog/more.asp?name=Qr&id=8945
--  作者:newnewff
--  发布时间:6/14/2007 1:08:00 PM

--  
已解决,很白痴的错误,多谢2楼的事例,学到不少东西
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
2,453.125ms