2017-03-24 172 views
0

我用下面通過一個節點組迭代有條件分組節點項目(40個字符或更少)這樣的事情:使用XSLT 1.0

<div class="largeItems"> 
    <div class="large">Large Item</div> 
    <div class="large">Large Item</div> 
    <div class="large">Large Item</div> 
    <div class="large">Large Item</div> 
    <div class="large">Large Item</div> 
</div> 
<div class="smallItems"> 
    <div class="small">Small Item</div> 
    <div class="small">Small Item</div> 
    <div class="small">Small Item</div> 
    <div class="small">Small Item</div> 
    <div class="small">Small Item</div> 
</div> 

謝謝。

回答

1

嘗試:

<div class="largeItems"> 
    <xsl:for-each select="NewDataSet/VehicleDetail/Options/Option[string-length() > 40]"> 
     <div class="large"> 
      <xsl:value-of select="."/> 
     </div> 
    </xsl:for-each> 
</div> 
<div class="smallItems"> 
    <xsl:for-each select="NewDataSet/VehicleDetail/Options/Option[string-length() &lt;= 40]"> 
     <div class="small"> 
      <xsl:value-of select="."/> 
     </div> 
    </xsl:for-each> 
</div> 

或者,如果你喜歡更少的代碼重複:

<div class="largeItems"> 
    <xsl:apply-templates select="NewDataSet/VehicleDetail/Options/Option[string-length() > 40]"> 
     <xsl:with-param name="class" select="'large'"/> 
    </xsl:apply-templates> 
</div> 
<div class="smallItems">  
    <xsl:apply-templates select="NewDataSet/VehicleDetail/Options/Option[string-length() > 40]"> 
     <xsl:with-param name="class" select="'small'"/> 
    </xsl:apply-templates> 
</div> 

然後:

<xsl:template match="Option"> 
    <xsl:param name="class"/> 
    <div class="{$class}"> 
     <xsl:value-of select="."/> 
    </div> 
</xsl:template> 

未經測試,因爲既沒有提供輸入也沒有提供上下文。

+0

WOW。很簡單。對於缺乏輸入和上下文感到抱歉。但你的直覺已經爲你服務。發現。非常感謝。只要它允許,我會盡快接受答案。 –

+0

感謝您的更新代碼。很酷。 :) –