如何生成XSL HTML表

时间:2018-04-11 01:56:23

标签: xml xslt xsd

我正在尝试创建一个XSL样式表,它将XML代码中的值显示为HTML表。表标题显示在浏览器中,但根本没有值。

这可能是源于与之相关的XSD代码的问题,还是不相关。我不确定为什么HTML表格不会显示XML代码中的信息。

const a = [];
for(let i=0;i<52;i++)
    a[i] = i;
    
var randomArrayItem = function (arr) {
  return arr[Math.floor(Math.random() * 52)];
};

console.log(randomArrayItem(a));
<xsl:stylesheet version = "1.0"
    xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">

<xsl:output method = "html" doctype-system = "about:legacy-compat"/>
<xsl:template match = "/">
    <html xmlns = "http://www.w3.org/1999/xhtml">
        <head>
            <meta charset = "utf-8"/>        
            <link rel = "stylesheet" type = "text/css" href = "style.css"/>
            <title> Cookies </title>
        </head>
        <body>
            <table border = "1" syle = "background-color: blue">
                <thead>
                    <tr> 
                        <th> Calories</th>
                        <th> Fat - Calories</th>
                        <th> Fat - Grams </th>
                    </tr>
                </thead>
                <xsl:for-each select="/product/item">
                    <tr>
                        <td>
                            <xsl:value-of select="calories/amount"/>
                            <xsl:value-of select="caloriesFat/amount"/>
                            <xsl:value-of select="gramsFat/amount"/>
                             </td>
                    </tr>                   
                </xsl:for-each>
            </table>
        </body>
    </html>
</xsl:template>
</xsl:stylesheet>

1 个答案:

答案 0 :(得分:0)

你在错误的地方寻找。你的xml是/ nutrition:items / product / item,not / product / item。更好的是,使用您匹配的相对路径,以便摆脱初始/将您带到根目录。

此外,每个xsl:value-of应该放在自己的td标记中,以匹配标题中的th标记。

您可以使用&lt; xsl:copy-of select =&#39;来调试xsl(以极其有限的方式)。&#39; /&gt;查看当前节点是什么节点。