【问题标题】:How do I include the proper XML / HTML definitions in a file generated by XSL?如何在 XSL 生成的文件中包含正确的 XML/HTML 定义?
【发布时间】:2010-06-16 17:02:06
【问题描述】:

据我了解,您需要在 HTML 文件的顶部包含以下代码,以确保正确解析它们:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
...

我通过使用 XSL 文件转换 XML 文件来生成 html 文件。这将使用 MSXML 工具来完成,该工具会生成标准 HTML 文件作为输出。

如果我这样做:

<xsl:template match="/">
<html>
...

一切都很好。但如果我这样做:

<xsl:template match="/">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
...

我在 Firefox 中收到错误 XML Parsing Error: XML or text declaration not at start of entity,在 IE 中收到错误 Cannot have a DOCTYPE declaration outside of a prolog.。这大概是因为解析器找到了两个&lt;?xml 定义并感到困惑。

如何让浏览器 a) 了解我使用的是正确的严格 HTML,以及 b) 确保将这些声明放入 MSXML 生成的 HTML 输出文件中?

【问题讨论】:

    标签: html xml xslt


    【解决方案1】:

    可以使用xsl:output 元素控制文档类型。

    【讨论】:

    • 我认为这在我通过 XSL 在浏览器中查看 XML 时有效,但在我运行 MSXML“从这些 XML 和 XSL 文件生成 HTML”工具时无效。 :(
    • @Colen:不,xsl:output 是标准的一部分。它应该“正常工作”。
    • 如果不是,则使用符合要求的 XSLT 处理器。
    • 我发现的所有内容都表明 MSXML 内容“符合要求”,所以我不明白为什么这不起作用。
    • 仅仅因为微软说他们符合,并不意味着他们确实符合。毕竟,他们一直声称 Internet Explorer 永远符合标准……
    猜你喜欢
    • 2023-03-28
    • 2011-07-19
    • 2010-11-13
    • 2019-05-22
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多