2012-09-28 15 views
0

我需要創建兩個單獨的模板來填充空間。一個佔據49個空間,另一個佔據549個空間。我在模板上發現我認爲可以工作,但我無法確切地告訴它做什麼,我是新來的XML。使用xslt創建空間填充模板

<!-- Template Filler--> 
    <xsl:template name="Filler"> 
    <xsl:param name="fillercount" select="1"/> 
    <xsl:if test="$fillercount > 0"> 
     <table class="tabledetails"> 
     <tr> 
      <td> 
      <xsl:value-of select="translate(' ', ' ', '&#160;')"/> 
      </td> 
     </tr> 
     </table> 
     <xsl:call-template name="Filler"> 
     <xsl:with-param name="fillercount" select="$fillercount - 1"/> 
     </xsl:call-template> 
    </xsl:if> 
    </xsl:template> 

這是我需要什麼,並與select="49"調用它還是我讀錯了。 如果這是現在我需要我怎麼做到這一點?

回答

0

你還沒有說過你想要什麼輸出。如果您使用參數49調用此模板,則輸出將包含49個表格,每個表格包含一行和一列,單元格的內容爲不間斷的空格字符。生成不間斷空格字符的方法非常奇怪:translate()調用將空格字符作爲輸入,然後通過以非分隔空格替換所有空格來處理它。據推測,這是一個減少版本的代碼,在某個階段做了更明智的事情。

代碼的基本結構是一個遞歸模板,它接受一個參數(比如49),輸出一個「事物」(在本例中是一個單表),然後調用自己再次執行相同的N-1時間。這是在XSLT 1.0中執行N次操作的適當方式。 (在2.0中,您可以使用<xsl:for-each select="1 to $N">,這對編程人員提出的命令式語言更加直觀。)