-3
    <?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 和 google chrome chrome 给了我一个空白页,即 xml 文件在单行和 firefox “加载样式表时出错:解析 XSLT 样式表失败。” 有任何想法吗?

4

1 回答 1

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">

找不到行。这是因为“行”标签不在根目录下。

将此更改为

        <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 中看起来也不错。

于 2013-01-06T20:05:11.127 回答