XML一直选择相同的记录

XML一直选择相同的记录,xml,xslt,Xml,Xslt,所以最近我一直在尝试提取尽可能最简单的数据,但是XSL一直在选择第一条记录 现在我已经测试了select=“//student”,它成功地选择了所有数据,但当它在表中显示时,我认为它会出错 XML <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> <school> <class unitId="3311">

所以最近我一直在尝试提取尽可能最简单的数据,但是XSL一直在选择第一条记录

现在我已经测试了select=“//student”,它成功地选择了所有数据,但当它在表中显示时,我认为它会出错

XML

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
<school>
 <class unitId="3311">
 <className>English</className>
 <studentList>
 <student id="1001">Lisa Simpson</student>
 <student id="1002">Barney Rubble</student>
 <student id="1003">Donald Duck</student>
 </studentList>
 </class>
</school>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2>My Students</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th style="text-align:left">STUDENT</th>
      </tr>
      <xsl:for-each select="//student">
      <tr>
        <td><xsl:value-of select="../student"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

英语
丽莎·辛普森
巴尼碎石
唐老鸭
XSL

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
<school>
 <class unitId="3311">
 <className>English</className>
 <studentList>
 <student id="1001">Lisa Simpson</student>
 <student id="1002">Barney Rubble</student>
 <student id="1003">Donald Duck</student>
 </studentList>
 </class>
</school>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2>My Students</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th style="text-align:left">STUDENT</th>
      </tr>
      <xsl:for-each select="//student">
      <tr>
        <td><xsl:value-of select="../student"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

我的学生
学生
我一直遇到的


xpath,
。/student
,就是问题所在。对于文档(
//student
)中的每个
学生(
//student
),您将转到其父项并选择子项
student
s。使用
xsl:value of
将只获得第一个值,因为XSLT1.0只选择第一个元素的值

换成

因此,它为您应该使用的每个
学生选择当前值:

<xsl:value-of select="." />

此外,最好在for each(针对每个)中专门选择父节点:

<xsl:for-each select="/school/studentList/student">
[...]
</xsl:for-each>

[...]

非常感谢您提前提供的帮助:)您的
td中是否可以做一些更有用的事情?我对XSLT不太熟悉,但您编写的内容在我看来就像“选择所有
student
子节点,然后转到它们的父节点并选择第一个
student
子节点”。这不是你想要的-你想要的是你刚刚选择的节点,它的相对路径是
。天哪,你是一个传奇!!!!!!!我在以前的文档中使用过这段代码,出于某种原因,它起作用了,但在这个标准下它就不起作用了,我是xml的完全初学者,听起来好像只有一个子元素,或者您看到的子元素都是一样的。很高兴你的问题解决了。