2015-06-29 21 views
2

我有一個XSLT文件,與XML一起處理HTML(當前使用X-trans & Notepad ++)。我想要做的是將它分成3個文件,標題,正文和頁腳。如何處理從單個XML到單個輸出的3個單獨的XSLT文件?

到目前爲止,我已經嘗試使用xsl:import & xsl:include但每當我嘗試處理它時都說該文件無效。我顯然想念任何人都可以幫忙?

部首XSLT:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <html lang="en-GB"> 
     <body style="font-family:'Praxis Com Light'; color:#632423; width:100%; font-size:14px !important;"> 


      <xsl:variable>variable1</xsl:variable> 
      <xsl:variable>variable2</xsl:variable> 
      <xsl:variable>variable3</xsl:variable> 

      <div>Header</div> 

     </body> 
    </html> 
</xsl:template> 

體XS​​LT:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <html lang="en-GB"> 
     <body style="font-family:'Praxis Com Light'; color:#632423; width:100%; font-size:14px !important;"> 


      <xsl:include href="Header.xsl"/> 

      <xsl:variable>variable1</xsl:variable> 
      <xsl:variable>variable2</xsl:variable> 
      <xsl:variable>variable3</xsl:variable> 

      <table>Main XSL file</table> 

      <xsl:include href="Footer.xsl"/> 


     </body> 
    </html> 
</xsl:template> 

頁腳XSLT:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <html lang="en-GB"> 
     <body style="font-family:'Praxis Com Light'; color:#632423; width:100%; font-size:14px !important;"> 


      <xsl:variable>variable1</xsl:variable> 
      <xsl:variable>variable2</xsl:variable> 
      <xsl:variable>variable3</xsl:variable> 

      <p>Footer</p> 


     </body> 
    </html> 
</xsl:template> 

Diagram to help Illustrate

回答

2

只能使用xsl:includexsl:import作爲頂層元件,即作爲xsl:stylesheet分別xsl:transform元件的直接子。因此,一個可能的方法是

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template name="header> 


      <xsl:variable>variable1</xsl:variable> 
      <xsl:variable>variable2</xsl:variable> 
      <xsl:variable>variable3</xsl:variable> 

      <div>Header</div> 

</xsl:template> 

</xsl:stylesheet> 

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:include href="Header.xsl"/> 
<xsl:include href="Footer.xsl"/> 

<xsl:template match="/"> 
    <html lang="en-GB"> 
     <body style="font-family:'Praxis Com Light'; color:#632423; width:100%; font-size:14px !important;"> 

      <xsl:call-template name="header"/> 

      <xsl:variable>variable1</xsl:variable> 
      <xsl:variable>variable2</xsl:variable> 
      <xsl:variable>variable3</xsl:variable> 

      <table>Main XSL file</table> 

      <xsl:call-template name="footer"/> 


     </body> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 

而不是使用指定的模板可能是更好的使用模板匹配,也許模式,而是依賴於XML的結構進行處理。

+0

非常感謝您的工作! – AaronParkes

+0

不要忘記給' variable1'和朋友'@ name'屬性。 – kjhughes

相關問題