跨浏览器XML数据岛,可以包含脚本标记

时间:2011-11-15 05:03:19

标签: html xml internet-explorer cross-browser

我有兴趣将用于描述Statecharts的XML应用程序SCXML嵌入到HTML中。 Internet Explorer具有所谓的" XML Data Islands",它为这个问题提供了一个优雅的解决方案。或者,IE9和大多数现代非IE浏览器允许将内容作为XHTML提供,这允许混合不同的文档类型,以便使用XML命名空间创建复合文档。此外,我在Mozilla的wiki上找到了this advice,它似乎提供了一种HTML5方法(我在这里非常宽松地使用这个术语),XML Data Islands。

Mozilla方法似乎提供了在HTML页面中嵌入XML内容的最佳整体技术。问题是如果嵌入的XML内容包含"< / script>"它不起作用。 tag,它是SCXML语法的一部分。

是否有一种优雅的跨浏览器方法可以在HTML页面中嵌入任意XML内容,包括包含脚本标记的内容?

3 个答案:

答案 0 :(得分:1)

单独进行处理和剩下的SCXML - 询问ID / IDREF,以便我们知道SCXML的部分内容与删除的块有关并将其放入。

答案 1 :(得分:1)

XML for XML Data Islands和MSXML的一些重要优势。

1)XML用于使用ECMA和W3C标准,XML Data Islands则不然。

2)XML for不会带来安全风险,XML Data Islands可以。

XML for the technology在浏览器的安全沙箱中运行,并且没有这些问题。

3)XML for不需要在客户端机器上安装新软件,XML Data Islands和MSXML经常这样做。

XML for不会影响用户系统的任何其他部分,也不需要安装。由于XML for不是以二进制形式(而不是MSXML)分发的,因此对应用程序的修复只需要传播到一个地方(服务器)而不是传播到每个客户端。

4)XML for是开源的,自由软件,XML Data Islands和MSXML不是。

下载XML时,您可以完全访问源代码以查看实现方式。您也可以根据LGPL许可证的描述随意修改,修复和更改软件。 XML Data Islands不会给你这种自由。

答案 2 :(得分:0)

我认为,嵌入脚本元素仍然是最受欢迎的选择 如果您希望XML中包含元素,则可能需要:
a)使用object元素作为包装器而不是 b)在XML中使用名称空间,因此它是scxml:script
c)完全使用不同的方法,例如将预渲染图表作为图像传递 另一种方法是使用浏览器原生支持的SVG,因此操作应该更容易,具体取决于具体要求。
d)在将嵌入的脚本元素包含在页面之前将其剥离? SCXML允许ECMAScript,但我想你想在执行解析时执行它们吗? e)流程和SCXML的其余部分 - 应用ID / IDREF,以便您知道SCXML的哪个部分适用于并将其放在单独的块中。