是否有任何应用程序可以从 XML 文件生成 XSL 样式表?我有一个非常复杂的 XML 文件,它是一个格式良好的 SVG 文件。
是否有任何软件应用程序可以将 XML 转换为 XSL?
XSL 文件包含有关如何将源 XML 文件转换为另一种格式(也可能是 XML)的说明。因此,如果没有有关如何执行此操作的更多信息,软件不可能将 XML 文件转换为 XSL 样式表。
这就像想要从 HTML 文件中提取 PHP 脚本一样。澄清一下:一个 php 脚本可以生成 HTML 页面
<html><body>hello world</body></html>
您无法推断出原始脚本的样子。它可能是一个简单的echo()
调用或复杂解码操作的结果等。
从 XML 到 XSL 的转换也是如此。您必须自己完成,因为软件不知道如何将 XML 结果转换为其底层 XSL 转换表。
根据您之前的问题,我假设您想从 SVG 图像创建 XSL-FO 文件。
一种选择是将 SVG 图像内联包含在fo:instream-foreign-object
. 一个完整的例子(使用这个SVG 图像):
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="master">
<fo:region-body />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="master">
<fo:flow flow-name="xsl-region-body">
<fo:block>
<fo:instream-foreign-object>
<svg xmlns="http://www.w3.org/2000/svg"
width="200" height="200">
<circle cx="100" cy="100" r="50" stroke="black"
stroke-width="5" fill="red" />
</svg>
</fo:instream-foreign-object>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
另一种选择是从 a 引用 SVG 图像fo:external-graphic
:
<fo:external-graphic src="Svg_example4.svg"/>
如果您想自动执行此操作,您可以编写一个 XSLT,将 SVG 转换为嵌入了 SVG 的 XSL-FO 文档:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="master">
<fo:region-body />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="master">
<fo:flow flow-name="xsl-region-body">
<fo:block>
<fo:instream-foreign-object>
<xsl:copy-of select="." />
</fo:instream-foreign-object>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
</xsl:stylesheet>
不,但您可以使用一些解决方案来帮助您更轻松地创建 XSL 文件。例如Altova XMLSpy
IntelliJ可以从 XML 文件生成 XSD,反之亦然。我不确定社区版是否具有此功能,但许可版本可以。