我正在尝试循环一个元素,需要在表格内打印数据 这是我的xml文件
<hotels xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:noNamespaceSchemaLocation='5.xsd'>
<hotel ID="1">
<Name>Les Jardins du Marais</Name>
<Stars>3</Stars>
<Facilities>Internet</Facilities>
<Address>74 reu Amelot, Paris, 75011</Address>
<Distance>2</Distance>
<Available>true</Available>
</hotel>
<hotel ID="2">
<Name>Golden Tulip Little Palace</Name>
<Stars>4</Stars>
<Facilities>Internet</Facilities>
<Facilities>Gym</Facilities>
<Facilities>Parking</Facilities>
<Facilities>Restaurant</Facilities>
<Address>4 rue salomo,De caus, Paris, 75003</Address>
<Distance>0.1</Distance>
<Available>false</Available>
</hotel>
<hotel ID="3">
<Name>Tilsitt Etoile</Name>
<Stars>2</Stars>
<Facilities>Restaurant</Facilities>
<Address>23 rue brey, Paris, 75017</Address>
<Distance>3</Distance>
<Available>false</Available>
</hotel>
<hotel ID="4">
<Name>Hotel saint charles</Name>
<Stars>3</Stars>
<Facilities>Parking</Facilities>
<Address>6 rue de 1'Esperance, Paris, 75013</Address>
<Distance>1</Distance>
<Available>true</Available>
</hotel>
这是我的xsl文件
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<body>
<h2>Students</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>ID</th>
<th>Name</th>
<th>Stars</th>
<th>Facilites</th>
<th>Address</th>
<th>Distance</th>
<th>Available</th>
</tr>
<xsl:for-each select="hotels/*">
<tr>
<td>
<xsl:value-of select="@ID"/>
</td>
<td>
<xsl:value-of select="Name"/>
</td>
<td>
<xsl:value-of select="Stars"/>
</td>
<td>
<xsl:value-of select="Facilities"/>
</td>
<td>
<xsl:value-of select="Address"/>
</td>
<td>
<xsl:value-of select="Distance"/>
</td>
<td>
<xsl:value-of select="Available"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
由于单个酒店有多个设施,我需要了解如何循环设施,任何帮助都会提前和感谢
答案 0 :(得分:0)
虽然您可以添加第二个嵌套xsl:foreach
,但通常最好通过将问题分解为较小的模板来维护Xsl,每个模板都关注特定问题。最好使用模板匹配,而不是必需的循环来处理你的xml,因为它允许过滤,递归和其他好处。通过这种方式,可以为每个Facility
定义一个模板,然后您可以从酒店模板中应用它。您还需要确定如何在表格中显示设施列表 - 我在这里假设了一个嵌套表格:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<body>
<h2>Students</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>ID</th>
<th>Name</th>
<th>Stars</th>
<th>Facilites</th>
<th>Address</th>
<th>Distance</th>
<th>Available</th>
</tr>
<xsl:apply-templates select="hotels/hotel" />
</table>
</body>
</html>
</xsl:template>
<xsl:template match="hotel">
<tr>
<td>
<xsl:value-of select="@ID"/>
</td>
<td>
<xsl:value-of select="Name"/>
</td>
<td>
<xsl:value-of select="Stars"/>
</td>
<td>
<table>
<xsl:apply-templates select="Facilities" />
</table>
</td>
<td>
<xsl:value-of select="Address"/>
</td>
<td>
<xsl:value-of select="Distance"/>
</td>
<td>
<xsl:value-of select="Available"/>
</td>
</tr>
</xsl:template>
<xsl:template match="Facilities">
<tr>
<td>
<xsl:value-of select="."/>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>