2017-03-24 132 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

感谢您的更新代码。很酷。 :) –