2010-05-15 44 views
0

是否有任何應用程序從XML文件生成XSL樣式表?我有一個非常複雜的XML文件,它是一個格式良好的SVG文件。是否有任何應用程序爲XML生成XSL?

是否有任何軟件應用程序將XML轉換爲XSL?

+2

「XSL」 == XML樣式表語言,它本身具有兩個部分:變換(XSLT)和佈局(XSL格式化Ob的項目,XSL-FO)。你在說什麼?或者更具體地說:您是否希望XSLT創建XSL-FO?或者創建一個XSLT來創建其他內容? – Richard 2010-05-15 10:03:19

+0

我正在尋找一個爲xml文件生成xsl-fo的應用程序。 – user338292 2010-05-15 18:29:34

+0

其實我必須將XML轉換爲PDF。但最糟糕的是,XML上有svg標籤,並且使XML非常糟糕,所以我必須編寫一個xsl-fo來讀取SVG標籤。所以這就是我的咖啡館,任何一個解決方案的問題? – user338292 2010-05-15 18:32:06

回答

2

第10章(代碼生成)根據您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參考SVG圖像:

<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> 
5

XSL文件包含如何將源XML文件轉換爲其他格式(也可以是XML)的說明。因此,軟件不可能將XML文件轉換爲XSL樣式表,而無需進一步瞭解如何執行此操作。

這就像想要從HTML文件中獲取PHP腳本一樣。澄清:一個PHP腳本可能會產生HTML頁面

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

你不能推斷出原始腳本的樣子。它可能是一個簡單的echo()-調用或複雜解碼操作的結果等。

同樣是從XML到XSL的轉換。您必須自己完成,因爲軟件無法知道如何將XML結果轉換爲其基礎XSL轉換表。

+0

-1 - 當然可以將源XML文件轉換爲XSL。也可以將源HTML文件轉換爲PHP腳本。 – 2010-05-15 11:18:45

+0

你沒有一個獨特的方法來做到這一點... hello world!可以從A N Y PHP腳本創建!它可能是MySQL查詢的結果,或者簡單地命令echo「 hello world ...」...對於XML - > XSL同樣的行爲! – Simon 2010-05-15 11:26:52

+0

當然,沒有獨特的方式來做到這一點。但是,如果您有關於如何從源XML生成XSL的特定模式,則可以完成此操作。 – 2010-05-15 11:46:02

0

IntelliJ可以從XML文件生成XSD,反之亦然。我不確定社區版是否有能力,但許可版本可以。

+0

XSD!= XSL(T):) – Simon 2010-05-15 10:23:40

1

不,但您可以使用一些解決方案來幫助您更輕鬆地創建XSL文件。例如。 Altova XMLSpy

1

XSL可用於從XML生成XSL。但是,由於XSL已經 XML,這個簡單的事實並沒有給你很多具體的內容。

你能指定一些源XML和所需的XSL嗎?不知道你想要完成什麼,沒有更多可以說。

有在

XSLT Cookbook

相關問題