html - XSLT 转换未显示任何数据

标签 html xml xslt xpath xml-namespaces

我已经使用转换工具在 XML 和 XSL 下进行了测试。输出不显示任何数据行。谁能帮我找出问题?

我使用了以下在线工具。

http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog_ex3

XML

<?xml version="1.0" encoding="UTF-8"?>
<vehicles xmlns="http://www.w3schools.com"
    xmlns:xsi="http://www.w3schools.comm/2001/XMLSchema-instance">
        <vehicle>
            <make>Toyota</make>
            <model>Prius</model>
            <color>White</color>
            <yearofmanufacture>2013</yearofmanufacture>
            <engine>1.5CC</engine>
            <doors>5</doors>
        </vehicle>      
</vehicles>

XSL
<?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>Car Sale - Stock List</h2>
                <table border="1">
                    <tr bgcolor="#9acd32">
                        <th>Make</th>
                    </tr>
                    <xsl:for-each select="vehicles/vehicle">
                        <tr>
                            <td>
                                <xsl:value-of select="make" />
                            </td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

输出:

Car Sale - Stock List

Make

最佳答案

是的,问题是您没有在 XPath 中使用命名空间,您应该这样做:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ws="http://www.w3schools.com">
    <!--   ^---- here    -->
    <xsl:template match="/">
        <html>
            <body>
                <h2>Car Sale - Stock List</h2>
                <table border="1">
                    <tr bgcolor="#9acd32">
                        <th>Make</th>
                    </tr>
                    <!-- here ------------v -----------v   -->
                    <xsl:for-each select="ws:vehicles/ws:vehicle">
                        <tr>
                            <td>
                                <!-- and here --------v       -->
                                <xsl:value-of select="ws:make" />
                            </td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

关于html - XSLT 转换未显示任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27879863/

相关文章:

c# - 根据 HTML 页面上的位置对 HtmlNode 进行排序 (C#/XPath)

html - 是否可以在 <select> 标签内创建表格?

xml - XSD 序列显示不明确

xml - 如何将 XML 转换为 XSL

java - 如何从 XSL 输出缩进中排除某些元素?

xslt - 有没有办法在 xsl :if test? 中使用模式

html - 将两个按钮放在 HTML 中的同一行

javascript - 使用 CSS 将文本更改为大写是一种好习惯吗

javascript - 错误: "Access to restricted URI denied"

java - 用测试数据填充 XML 文件