将 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 的区别