使用 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">.