我有兴趣将用于描述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内容,包括包含脚本标记的内容?
答案 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的哪个部分适用于并将其放在单独的块中。