XML一直选择相同的记录
所以最近我一直在尝试提取尽可能最简单的数据,但是XSL一直在选择第一条记录 现在我已经测试了select=“//student”,它成功地选择了所有数据,但当它在表中显示时,我认为它会出错 XMLXML一直选择相同的记录,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">
<?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的完全初学者,听起来好像只有一个子元素,或者您看到的子元素都是一样的。很高兴你的问题解决了。