0

是否有任何应用程序可以从 XML 文件生成 XSL 样式表?我有一个非常复杂的 XML 文件,它是一个格式良好的 SVG 文件。

是否有任何软件应用程序可以将 XML 转换为 XSL?

4

5 回答 5

5

XSL 文件包含有关如何将源 XML 文件转换为另一种格式(也可能是 XML)的说明。因此,如果没有有关如何执行此操作的更多信息,软件不可能将 XML 文件转换为 XSL 样式表。

这就像想要从 HTML 文件中提取 PHP 脚本一样。澄清一下:一个 php 脚本可以生成 HTML 页面

<html><body>hello world</body></html>

您无法推断出原始脚本的样子。它可能是一个简单的echo()调用或复杂解码操作的结果等。

从 XML 到 XSL 的转换也是如此。您必须自己完成,因为软件不知道如何将 XML 结果转换为其底层 XSL 转换表。

于 2010-05-15T10:01:24.427 回答
2

根据您之前的问题,我假设您想从 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>
于 2010-05-15T16:04:28.367 回答
1

不,但您可以使用一些解决方案来帮助您更轻松地创建 XSL 文件。例如Altova XMLSpy

于 2010-05-15T10:32:33.827 回答
1

XSL 可用于从 XML 生成 XSL。但是由于 XSL 已经XML,所以这个简单的事实并不能让您特别了解。

您能否指定一些源 XML 和所需的 XSL?在不知道您要完成的工作的情况下,无话可说。

在第 10 章(代码生成)中有一些有趣的例子

XSLT 食谱

于 2010-05-15T11:16:26.540 回答
0

IntelliJ可以从 XML 文件生成 XSD,反之亦然。我不确定社区版是否具有此功能,但许可版本可以。

于 2010-05-15T10:17:17.870 回答