我正在尝试创建一个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>
答案 0 :(得分:0)
你在错误的地方寻找。你的xml是/ nutrition:items / product / item,not / product / item。更好的是,使用您匹配的相对路径,以便摆脱初始/将您带到根目录。
此外,每个xsl:value-of应该放在自己的td标记中,以匹配标题中的th标记。
您可以使用&lt; xsl:copy-of select =&#39;来调试xsl(以极其有限的方式)。&#39; /&gt;查看当前节点是什么节点。