使用 XSL 将 XML 文档转换为 HTML 时出错
Error in transforming XML Document into HTML using XSL
我正在使用 XSLT 将 XML 文档转换为 HTML。
我得到这个错误代码:
TypeError: Failed to execute 'serializeToString' on 'XMLSerializer': parameter 1 is not of type 'Node'.
at AtomXsltransformView.module.exports.AtomXsltransformView.doTransform (file:///C:/Users/X/.atom/packages/atom-xsltransform/lib/atom-xsltransform-view.coffee:86:19)
at AtomXsltransformView.module.exports.AtomXsltransformView.transform (file:///C:/Users/X/.atom/packages/atom-xsltransform/lib/atom-xsltransform-view.coffee:66:22)
at HTMLDivElement.atom.commands.add.core:confirm (file:///C:/Users/X/.atom/packages/atom-xsltransform/lib/atom-xsltransform-view.coffee:19:27)
at CommandRegistry.handleCommandEvent (C:\Users\X\appdata\local\atom\app-1.55.0\resources\app\static\<embedded>:11:350382)
at KeymapManager.dispatchCommandEvent (C:\Users\X\appdata\local\atom\app-1.55.0\resources\app\static\<embedded>:11:1230982)
at KeymapManager.handleKeyboardEvent (C:\Users\X\appdata\local\atom\app-1.55.0\resources\app\static\<embedded>:11:1227116)
at WindowEventHandler.handleDocumentKeyEvent (C:\Users\X\appdata\local\atom\app-1.55.0\resources\app\static\<embedded>:11:284879)
这是我的 transform.xsl:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous"/>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/js/bootstrap.bundle.min.js" integrity="sha384-b5kHyXgcpbZJO/tY9Ul7kGkf1S0CWuKcCD38l8YkeH8z8QjE0GmW1gYU5S9FOnJ0" crossorigin="anonymous"></script>
<title>Food</title>
</head>
<body>
<div>
<table class="table">
<tr>
<th>ID</th>
<th>Name</th>
<th>
Category
</th>
<th>Price</th>
</tr>
<xsl:for-each select="data/menus/row/">
<tr>
<td>
<xsl:value-of select="id"/></td>
<td>
<xsl:value-of select="dtype"/></td>
<td>
<xsl:value-of select="name"/></td>
<td>
<xsl:value-of select="category"/></td>
</tr>
</xsl:for-each>
</table>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我在这里阅读了有关 serializetoString() 的内容:
https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer/serializeToString
他们建议使用以下代码:
xmlString = anXMLSerializer.serializeToString(rootNode);
我不知道我是否可能需要使用这个建议的代码或另一个?如果我必须使用这个,我如何在我的 xsl-sheet.Thanks 中实现它以提供帮助。
您在 <xsl:for-each select="data/menus/row/">
中的 XSLT 代码有语法错误,尾部斜杠不属于那里,您需要 <xsl:for-each select="data/menus/row">
.
我正在使用 XSLT 将 XML 文档转换为 HTML。 我得到这个错误代码:
TypeError: Failed to execute 'serializeToString' on 'XMLSerializer': parameter 1 is not of type 'Node'.
at AtomXsltransformView.module.exports.AtomXsltransformView.doTransform (file:///C:/Users/X/.atom/packages/atom-xsltransform/lib/atom-xsltransform-view.coffee:86:19)
at AtomXsltransformView.module.exports.AtomXsltransformView.transform (file:///C:/Users/X/.atom/packages/atom-xsltransform/lib/atom-xsltransform-view.coffee:66:22)
at HTMLDivElement.atom.commands.add.core:confirm (file:///C:/Users/X/.atom/packages/atom-xsltransform/lib/atom-xsltransform-view.coffee:19:27)
at CommandRegistry.handleCommandEvent (C:\Users\X\appdata\local\atom\app-1.55.0\resources\app\static\<embedded>:11:350382)
at KeymapManager.dispatchCommandEvent (C:\Users\X\appdata\local\atom\app-1.55.0\resources\app\static\<embedded>:11:1230982)
at KeymapManager.handleKeyboardEvent (C:\Users\X\appdata\local\atom\app-1.55.0\resources\app\static\<embedded>:11:1227116)
at WindowEventHandler.handleDocumentKeyEvent (C:\Users\X\appdata\local\atom\app-1.55.0\resources\app\static\<embedded>:11:284879)
这是我的 transform.xsl:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous"/>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/js/bootstrap.bundle.min.js" integrity="sha384-b5kHyXgcpbZJO/tY9Ul7kGkf1S0CWuKcCD38l8YkeH8z8QjE0GmW1gYU5S9FOnJ0" crossorigin="anonymous"></script>
<title>Food</title>
</head>
<body>
<div>
<table class="table">
<tr>
<th>ID</th>
<th>Name</th>
<th>
Category
</th>
<th>Price</th>
</tr>
<xsl:for-each select="data/menus/row/">
<tr>
<td>
<xsl:value-of select="id"/></td>
<td>
<xsl:value-of select="dtype"/></td>
<td>
<xsl:value-of select="name"/></td>
<td>
<xsl:value-of select="category"/></td>
</tr>
</xsl:for-each>
</table>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我在这里阅读了有关 serializetoString() 的内容: https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer/serializeToString
他们建议使用以下代码: xmlString = anXMLSerializer.serializeToString(rootNode);
我不知道我是否可能需要使用这个建议的代码或另一个?如果我必须使用这个,我如何在我的 xsl-sheet.Thanks 中实现它以提供帮助。
您在 <xsl:for-each select="data/menus/row/">
中的 XSLT 代码有语法错误,尾部斜杠不属于那里,您需要 <xsl:for-each select="data/menus/row">
.