如何让浏览器支持自闭合的xhtml标签?

How to make browsers to support self-closed xhtml tags?

提问人:Adrian Maire 提问时间:1/20/2021 更新时间:1/20/2021 访问量:77

问:

使用 xslt 生成 Web 内容 (QXmlQuery),生成的 xhtml 页面具有自闭合标签,我无法让浏览器理解。

该问题与主要浏览器不断解析自闭合标签有关,就好像它是 HTML5 一样,因此,包括自闭合标签内的内容。

例:

<a><xsl:attribute name="name"><xsl:value-of select="@title"/></xsl:attribute></a>

将生成如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
...
<a name="Intro"/>
Some content

然后在浏览器中将其解释为:

<a name="Intro">Some content</a>

一个微不足道但不优雅的解决方案是添加注释:

<a><xsl:attribute name="name"><xsl:value-of select="@title"/></xsl:attribute><xsl:comment/></a>

我想了解问题:

xhtml 是否已弃用?如果是这种情况,那么用于 Web 生成的 xslt 也被弃用了吗?
如果没有弃用,如何为现代浏览器启用xhtml的正确解析?(正确,我的意思是支持自闭合标签)。

我尝试了几个 DOCTYPE,并查看了可能的 xslt 弃用,但没有结果。但我不得不承认,我已经离开 Web 开发一段时间了,如果这是一个微不足道的问题,请原谅我。

完整示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Title</title>
    </head>
    <body>
        <div>
            <span/>
            Dummy content
        </div>
    </body>
</html>

这可以通过内部错误的“虚拟内容”来看到span

enter image description here

qt xslt xhtml

评论

1赞 Michael Kay 1/20/2021
从 HTTP 服务器传送的文档的媒体类型(内容类型)是什么?
0赞 Adrian Maire 1/20/2021
根本没有服务器:xslt 用于转换注入 Chromium 查看器 (QWebEngineView) 的内容。我可以下载转换后的内容并在普通浏览器中打开该本地文件。
2赞 Michael Kay 1/20/2021
这里的问题是 stackoverflow.com/questions/8645642/......表明这一切都是为了提供正确的媒体类型的内容,我不知道如果没有HTTP标头作为基础会发生什么。但几乎可以肯定,介质类型检测是问题的核心。
1赞 Alohci 1/20/2021
在没有服务器的情况下,浏览器会根据文件扩展名处理本地文件,因此要将文件视为 XHTML,该文件的扩展名需要为 。我不知道QWebEngineView会做什么。XHTML 没有被弃用,但名称被弃用,XHTML 1.1 已过时。它现在被称为 HTML5 的 XML 语法。但是,内容类型/文件扩展名规则保持不变。.xhtml
2赞 Alohci 1/20/2021
对于QWebEngineView,可以使用setContent并提供mimeType参数作为application/xhtml+xml

答: 暂无答案