我有一个大型 XSLT 样式表,可以将 XML 格式转换为 HTML。我想在输入 XML 文件中添加对 XInclude 的支持。目标是每个包含文件以及包含 XML 文件都可以独立进行 XSD 验证。我控制了 XML 模式中的所有更改(我认为);只有特定的 XML 元素可以移出到包含文件中,并且只有一层包含文件嵌套。我在 Eclipse 的 XML 编辑器中工作,它很好地验证了包含文件和每个包含文件。
XSLT 样式表有两种使用方式,在这里我们更接近我的问题:
在使用 lxml 进行 XSLT 转换的 Python 脚本的构建环境中。Python 脚本被集成到基于 make 的构建环境和 Eclipse 的 Ant 脚本中。
在包含 XML 文件的 xsl-stylesheet 指令中。这适用于人们希望在 Web 浏览器中立即查看他们对任何 XML 文件所做的更改的情况。到目前为止,这已被证明是一个非常有效的环境,所以我不想放弃它。
我能够使用 Python 脚本中的 ElementTree.xinclude() 方法获得用例 1。但是,这不是用例 2 的解决方案。
另外,我确实了解如何编写只执行 Xinclude 解析的 XSLT 样式表,理论上这可以用作第一个转换,然后是现有的 XSLT 样式表,用于 XML 到 HTML 的转换。问题是 XML 文件只能有一个 xsl-stylesheet 指令。
另一个想法是将 XInclude 分辨率留给 Web 浏览器。但是,我不知道有任何 Web 浏览器支持该功能。另外,我不希望限制只使用一种特定的浏览器。到目前为止,我们支持所有最常见的浏览器。
另一个想法是将 XInclude 解析支持添加到现有的 XSLT 样式表中。但是,我在为输入和输出而苦苦挣扎,因为这实际上是三个阶段(文件中的 XML 输入 -> 带有 Xinclude 解析的 FLat XML -> HTML。XInclude 解析部分需要执行第一次转换而现有的 XSLT 代码将执行第二个。我不确定这在一个样式表中是否可行。
我的问题是:
有什么方法可以在使用 Web 浏览器打开(包括)XML 文件时调用两个 XSLT 样式表?
有什么方法可以改进现有的 XSLT 样式表并支持 XInclude 以使其保持单个样式表?
XSLT 样式表中有什么方法可以修改输入吗?
Web 浏览器是否对 XInclude 分辨率提供任何支持?
谢谢安迪