<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="vehicles.xsl"?>
<!-- File Name : vehicles.xml -->
<data>
<params>
<returned_page>1</returned_page>
<total_pages>6</total_pages>
<items_count>56</items_count>
<previous_page></previous_page>
<next_page>2</next_page>
</params>
<grid>
<row>
<car_id>1</car_id>
<car_name>Audi A1</car_name>
<car_price_per_day>75.33</car_price_per_day >
<car_availability>1</car_availability>
</row>
<row>
<car_id>2</car_id>
<car_name>IQ 30</car_name>
<car_price_per_day>45.99</car_price_per_day >
<car_availability>1</car_availability>
</row>
<row>
<car_id>3</car_id>
<car_name>BMW 320</car_name>
<car_price_per_day>86.44</car_price_per_day >
<car_availability>0</car_availability>
</row>
<row>
<car_id>4</car_id>
<car_name>Ford Fiesta</car_name>
<car_price_per_day >54.68</car_price_per_day>
<car_availability>0</car_availability>
</row>
<row>
<car_id>5</car_id>
<car_name>Volkswagen Scirocco</car_name>
<car_price_per_day >65.99</car_price_per_day >
<car_available >0</car_available >
</row>
</grid>
</data>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0"
xmlns:xsl="htp://www.w3.org/1999/XSL/Transform">
<!-- File Name : vehicles.xsl -->
<xsl:template match="/">
<html>
<body>
<h2>CARS</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>ID</th>
<th>Name</th>
<th>Price/Day</th>
<th>Availability</th>
</tr>
<xsl:for-each select="row">
<tr>
<td>
<xsl:value-of select="car_id"/>
</td>
<td>
<xsl:value-of select="car_name"/>
</td>
<td>
<xsl:value-of select="car_price_per_day"/>
</td>
<td>
<xsl:value-of select="car_availability"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我的探险家都没有打开样式表。找不到它有什么问题我尝试了另一种编码,“值选择”命令的完整路径,“数据”和“行”作为模板匹配但输出相同。 我试过ie,mozila firefox和谷歌chrome chrome给了我一个空白页面,即单行中的xml文件和firefox“加载样式表时出错:解析XSLT样式表失败”。 任何想法?
答案 0 :(得分:3)
您的xslt以
开头<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0"
xmlns:xsl="htp://www.w3.org/1999/XSL/Transform">
以
结束</xsl:stylesheet>
与开头标记不匹配。
开始标记在变换URI中也有拼写错误。
如果您将开头更改为
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
运行样式表时不再出错。
然而,通过这么多的修复,它仍然无法正常工作,因为行
<xsl:for-each select="row">
找不到行。这是因为“row”标签不在根目录下。
将此更改为
<xsl:for-each select="data/grid/row">
使您的转换至少适用于显示的数据。
可能还有其他一些改进,但这可以让你达到功能转换的目的。
这些变化的整个转换是
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- File Name : vehicles.xsl -->
<xsl:template match="/">
<html>
<body>
<h2>CARS</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>ID</th>
<th>Name</th>
<th>Price/Day</th>
<th>Availability</th>
</tr>
<xsl:for-each select="data/grid/row">
<tr>
<td>
<xsl:value-of select="car_id"/>
</td>
<td>
<xsl:value-of select="car_name"/>
</td>
<td>
<xsl:value-of select="car_price_per_day"/>
</td>
<td>
<xsl:value-of select="car_availability"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
使用xsltproc对其进行测试会产生合理的输出,对我而言,它在Firefox 17.0.1中看起来也很好。