是否有任何应用程序从XML文件生成XSL样式表?我有一个非常复杂的XML文件,它是一个结构良好的SVG文件。
是否有任何软件应用程序将XML转换为XSL?
答案 0 :(得分:5)
XSL文件包含有关如何将源XML文件转换为另一种格式的说明(也可能是XML)。因此,如果没有关于如何执行该操作的更多信息,软件就不可能将XML文件转换为XSL样式表。
这就像想要从HTML文件中获取PHP脚本。澄清:php脚本可以生成HTML页面
<html><body>hello world</body></html>
您无法推断原始脚本的外观。它可能是一个简单的echo()
- 调用或复杂解码操作的结果等。
从XML到XSL的转换也是如此。您必须自己完成,因为软件无法知道如何将XML结果转换为其底层的XSL转换表。
答案 1 :(得分:2)
根据您的previous question,我假设您要从SVG图像创建XSL-FO文件。
一种选择是将SVG图像内嵌在fo:instream-foreign-object
中。一个完整的示例(使用this 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>
另一种选择是从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>
答案 2 :(得分:1)
不,但您可以使用一些可以帮助您更轻松地创建XSL文件的解决方案。例如。 Altova XMLSpy
答案 3 :(得分:1)
XSL可用于从XML生成XSL。但是由于XSL已经是 XML,这个简单的事实并没有让你更具体。
您可以指定一些源XML和所需的XSL吗?不知道你想要完成什么,不能说更多。
的第10章(代码生成)中有一些有趣的例子
答案 4 :(得分:0)
IntelliJ可以从XML文件生成XSD,反之亦然。我不确定社区版是否具备此功能,但许可版本可以。