2012-09-11 39 views
1

我會在XSLT中尋求這種對疑問的指導。在我目前的項目中,需要創建許多XSLT文件。在這些轉變中,執行的步驟很少; for.eg.從輸入xml中更改元素值的大寫字母。我目前在XSLT中使用下面的代碼,所以如果有50個XSLT被創建,那麼這個代碼將被複制。在項目中聲明全局變量並將其用於xslt

<xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" /> 
      <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" /> 
      <xsl:message>UPPERCASE is <xsl:value-of select="translate($MsgType, $smallcase, $uppercase)" /></xsl:message> 

請求您如何避免代碼重複的建議。我可以創建一個常用的XML文件,如實用程序,並聲明變量大寫和小寫,我應該在xslt中調用這些變量。類似於其他編程。 lang像java,我可以在全局聲明一個通用函數,並在不同的類中使用它。基本上我想知道是否有可能在全局聲明並在所有xslt中使用它。由於我不熟悉XSLT編程,請提供建議。謝謝。

回答

1

我會使用<include/>來包含XSLT文件,其中包含所有定義的全局變量。 又見http://www.w3.org/TR/xslt#element-include

把所有的變量到文件 「my_global_variables.xsl」:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

<xsl:variable name="myVariable" select="'xyz'"/> 

<!-- more variables to add --> 

</xsl:stylesheet> 

你的主要樣式看起來是這樣的話,包括 「my_global_variables.xsl」:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

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

<xsl:template match="/"> 

</xsl:template> 
</xsl:stylesheet> 

我希望這對你有幫助。

還有你可以導入樣式表的<import>元素。導入的樣式表的優先級低於導入樣式表 - 所以在你的情況下,我會使用<include>

最好的問候, 彼得

0

請求您如何避免重複代碼的建議。我可以創建 一個常用的XML文件,如實用程序,並聲明變量大寫 和小寫,我應該在xslt中調用這些變量。

<xsl:import><xsl:include>是專爲這個任務兩個XSLT指令。

樣式表模塊中的全局變量(xsl:stylesheet元素的子元素)可在包含此樣式表的樣式表中訪問。導入規則稍微複雜一些,但如果導入樣式表的全局變量之間沒有命名衝突,則全部都可以從導入樣式表訪問。

最後,我建議使用www.w3schools.com - 明白爲什麼在:http://www.w3fools.com