是否可以将 XSLT 转换应用于 DOM 元素?

Posted

技术标签:

【中文标题】是否可以将 XSLT 转换应用于 DOM 元素?【英文标题】:Is it possible to apply an XSLT transform to a DOM element? 【发布时间】:2011-11-05 04:16:29 【问题描述】:

我有一个网页,其中包含许多需要“清理”的用户生成元素,我希望将清理表示为 XSLT 转换,因为它非常适合目的。

有没有办法将 XSLT 转换应用于网页的一部分? (并且是否必须首先通过类似于 tagoup 的方法检查源元素,以确保其格式正确?)

我找到的所有示例都是关于通过 Ajax 获取一个 XML 文件和一个 XSL 文件,并运行一个对另一个,但没有获取 DOM 的子集并在其上运行 XSLT。能做到吗?

【问题讨论】:

【参考方案1】:

你想在什么背景下做这件事?文档(“网页”)是否已加载到浏览器窗口中?一些浏览器向 javascript 公开 API 以将 XSLT 应用于 DOM 节点,例如Mozilla 引入了一个 API,Opera 等其他浏览器也复制了它:https://developer.mozilla.org/en/using_the_mozilla_javascript_interface_to_xsl_transformations。

当然还有在浏览器中运行的 Saxon-CE:http://www.saxonica.com/ce/doc/contents.html。这甚至允许您将 XSLT 2.0 应用于 DOM 节点。

【讨论】:

Mozilla API 看起来与我正在寻找的完全一样,非常感谢。你知道是否有跨浏览器的解决方案吗? (我听说过 Saxon CE,但它仍然是 alpha 版,需要大量下载,并且准备好后会要求商业许可证;我宁愿使用浏览器内的 XSLT 1.0 转换,这对于我的工作来说绰绰有余需要)。 至于跨浏览器的方法,正如我所说的,Opera 也支持 Mozilla API,我认为 Chrome 和 Safari 表面上也支持,但我认为你在执行时会遇到问题(见***.com/questions/6985048/…)。 IE 不支持该 API,即使使用支持 XHTML 和 SVG DOM 文档的 IE 9,我也不认为您可以将 XSLT 应用于它们,因为 IE 实现的 DOM 与 MSXML(Microsoft 基于 COM 的 XSLT 处理器)实现的 DOM 完全分离分别作为 XSLT 输入树使用。【参考方案2】:

由于 HTML 不是 XML,我认为您无法在 HTML 页面上执行 XSLT 转换。但是,您可以在 XHTML 页面上执行此操作。

【讨论】:

以上是关于是否可以将 XSLT 转换应用于 DOM 元素?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Scala 作为 XSLT 的替代品?

XSLT 转换从混合内容中删除 HTML 元素

将 Muenchian 分组应用于 XSLT

XSLT 希望删除属性然后重新匹配元素

使用 XSLT 将 XML 元素转换为 XML 属性

是否有可用于将 WordprocessingML 转换为 RTF 的 XSLT