将 HTML 与基于 XML 的语言(如 SVG)一起使用的最佳实践是啥?

Posted

技术标签:

【中文标题】将 HTML 与基于 XML 的语言(如 SVG)一起使用的最佳实践是啥?【英文标题】:What are the best practices for using HTML with XML based languages like SVG?将 HTML 与基于 XML 的语言(如 SVG)一起使用的最佳实践是什么? 【发布时间】:2010-09-10 08:42:39 【问题描述】:

通过浏览本网站和其他地方,我了解到目前将网站作为 Xhtml 服务is considered harmful。

目前大多数浏览者不支持提供 XHTML 并将其作为 application/xhtml+xml 提供,将 xhtml 提供为 text/html 充其量是我自己的安慰剂,最坏的情况是破坏网站的方法,通常当你最不需要它发生。

所以我们最终回到了 html 4.01。如果我将我的页面改为 html 4.01,是否可以在页面上使用 SVG 或任何其他基于 XML 的语言?

如果有,怎么做?

【问题讨论】:

【参考方案1】:

在 HTML 中,您将无法直接插入 SVG。

您可以使用 <object>/<embed> 嵌入 SVG 文件,也可以在尖端浏览器(Opera、Safari)中嵌入 <img> 和 CSS background-image

您可以将 SVG 放在 data: URI 中以避免使用外部文件。

可以借助 Unicode 和基本的 HTML/CSS (Opera 9.5 supports large chunk of MathML via CSS) 编写简单的数学表达式。对于更复杂的事情,您需要使用图像,就像 Wikipedia 一样。

HTML 会误解命名空间前缀,因此您将无法(正确)将其他 XML 标记与 HTML DOM 一起使用。 HTML5 具有data-* 属性,用于添加特定于应用程序的标记。对于元数据,请考虑微格式。

但是,如果您只想为非浏览器(机器人)嵌入 XML,那么您可以使用与 HTML 兼容的 XHTML 子集和 HTTP 内容协商将具有正确类型的正确 XML 发送给理解它的客户端(if 你在 XML 和 HTML 模式下彻底测试页面,那么它不会有害)。

【讨论】:

【参考方案2】:

您可以(请阅读我自己没有尝试过)使用嵌入式对象并相应地键入它。

【讨论】:

以上是关于将 HTML 与基于 XML 的语言(如 SVG)一起使用的最佳实践是啥?的主要内容,如果未能解决你的问题,请参考以下文章

echarts 底层基于canvas ,highcharts 底层基于svg;canvas 与svg 的区别

SVG介绍

Web SCADA 电力接线图工控组态编辑器

SVG 与 HTML5 的 canvas 各有啥优点,哪个更有前途

带有 SVG 文档的 jQuery

SVG基本形状及样式设置