【问题标题】:Meta elements are not getting closed on XML to HTML Conversion元元素在 XML 到 HTML 转换上没有关闭
【发布时间】:2020-12-03 05:05:00
【问题描述】:

我正在努力将 XML 转换为 HTML。因为 Meta 元素不会在 Html 的输出中关闭。

XML 输入:

<topic>
   <title>Sample</title>
</topic>

我正在使用的 XSL:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" encoding="utf-8" indent="no"/>

<xsl:template match="topic" mode="chapterHead">
    <head>
      <xsl:call-template name="generateCharset"/>   
    </head>
  </xsl:template>

<xsl:template name="generateCharset">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  </xsl:template>

</xsl:stylesheet>

我得到的 HTML 输出:

<head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>

需要关闭或自行关闭 Meta 元素。

【问题讨论】:

  • 我得到的输出是文本"Sample"。那是因为你的模板有一个模式。如果我删除它,我会得到一个封闭的 meta 元素 - 那是因为你的输出方法是 xml: xsltfiddle.liberty-development.net/6pS2B6R

标签: html xslt xslt-1.0


【解决方案1】:

It is closed. HTML 元素是自闭合的,不需要斜杠,也从未指定或要求有斜杠。事实上,没有任何 HTML 元素有过这种要求。

由于与 XHTML 相关的遗留原因,允许放置右斜杠,但斜杠没有意义,does nothing 并且浏览器会忽略它。

【讨论】:

    【解决方案2】:

    在大多数情况下,您根本不应该将 meta 元素放在由 XSLT 生成的 HTML 结果中,相反,如果要输出 HTML,您应该在 XSLT 中使用 &lt;xsl:output method="html"/&gt;,然后 XSLT 序列化处理器将占用关心生成和插入meta 元素。

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      • 2011-10-30
      • 2014-10-25
      相关资源
      最近更新 更多