我对本地人总体上很满意XML 查看器在 Firefox 中。
它清晰且有用地显示有效的 XML 文件(如下所示)。
XML 示例:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2020-03-17T15:57:23+00:00</lastmod>
</url>
</urlset>
然而,我注意到,一旦我将 XHTML 添加到 XML(使用正确的 XHTML 命名空间 - 见下文),XML 查看器在 Firefox 和 Chrome 中都会恢复将 XML 显示为纯文本:
XHTML 命名空间和元素:
- XHTML 命名空间:
xmlns:xhtml="http://www.w3.org/1999/xhtml"
- XHTML 元素:
<xhtml:link />
XML + XHTML 的示例:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/</loc>
<lastmod>2020-03-17T15:57:23+00:00</lastmod>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/" />
<xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/" />
</url>
<url>
<loc>https://example.com/de/</loc>
<lastmod>2020-03-12T19:42:12+00:00</lastmod>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/" />
<xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/" />
</url>
</urlset>
很长一段时间以来,我都以为我的 XML 中引入了错误并使其无效。但我检查过许多第三方 XML 验证器,XML 绝对有效。只是浏览器原生查看器(显然)无法处理 XML 中包含的 XHTML。
在这种情况下,我能做些什么来帮助当地人XML 查看器在 Firefox 和 Chrome 中理解和解析标记作为 XML 还是现在没有什么可做的而第三方软件是唯一的答案?
答案1
Web 浏览器会尝试将您向其输入的任何内容渲染为 HTML。只有当它们确定没有 HTML 时,它们才会渲染为纯文本或 XML,后者以树形视图的形式呈现(如您的第一个示例所示)。值得注意的例外是 SVG 和 MathML,它们的渲染方式不同。
由于浏览器在您的第二个示例中感知到了 HTML,因此它切换到了 HTML 视图。
稍微解释一下:
只要浏览器有元素的样式信息,它就会利用它们。HTML 就是这种情况(其默认样式被硬编码到浏览器中)。它将还当浏览器通过处理指令找到与任何 XML 相关联的 CSS 时
<?xml-stylesheet href="style.css"?>
或通过内联样式(通过 HTMLstyle
元素)
<html:style type="text/css">
@namespace url("http://www.example.org/ns/example");
@namespace html url("http://www.w3.org/1999/xhtml");
paragraph {display: block;}
meta {display: none;}
html|style {display:none;}
html|script {display:none;}
</html:style>
在您的第二个示例中,它找到了这样的样式信息,因为它找到了 HTML,该 HTML 具有硬编码和隐含的样式,因此对其进行了样式呈现。
当浏览器呈现 XML 文档时,它将呈现所有没有默认样式的元素,如下所示内联内容。您可能认为,这可能是它将内容显示为纯文本的原因。
如果它找到了 HTML 脚本元素,它就会执行其中的 Javascript。因此,树形视图只是一种后备,而不是默认的。
如果您不喜欢这种行为,您可以尝试查找您的网络浏览器是否支持配置开关来改变这种行为,但我不知道有任何。