如何将位置设置为 < 5 和 mod 2 = 1



我的xml有白天和晚上的时间,所以我需要使用mod 2=1来获得每个设定日的奇数dailyforecast。但当我这样做的时候,它给了我整个10天的预测,我只想得到5天。要设置5天,我知道我必须使用position &lt; 5,但我不知道如何使用mod 2 = 1来暗示这一点。任何帮助都可以,希望这足够详细。

    <forecast>
       <dailyforecast>
         <hightemp>
         </hightemp>
      </dailyforecast>
         <lowtemp>
         </lowtemp>
      <dailyforecast>
         <hightemp>
         </hightemp>
      </dailyforecast>
      <dailyforecast>
         <lowtemp>
         </lowtemp>
      </dailyforecast>
      <dailyforecast>
         <hightemp>
         </hightemp>
      </dailyforecast>
      <dailyforecast>
         <lowtemp>
         </lowtemp>
      </dailyforecast>
      <dailyforecast>
         <hightemp>
         </hightemp>
      </dailyforecast>
      <dailyforecast>
         <lowtemp>
        </lowtemp>
      </dailyforecast>
      <dailyforecast>
        <hightemp>
        </hightemp>
      </dailyforecast>
      <dailyforecast>
        <lowtemp>
        </lowtemp>
      </dailyforecast>
      <dailyforecast>
        <hightemp>
        </hightemp>
      </dailyforecast>
</forecast>

此XPATH应该工作:

/forecast/dailyforecast[position() < 10 and position() mod 2 =1]

实现这一点的一种方法是:

<xsl:template match="forecast">
  <xsl:apply-templates mode="top" select="dailyforecast[position() mod 2 = 1]">
    <xsl:with-param name="count" select="5" />
  </xsl:apply-templates>
</xsl:template>
<!-- generic TOP template -->
<xsl:template match="*" mode="top">
  <xsl:param name="count" select="1" />
  <xsl:if test="position() &lt;= $count">
    <xsl:apply-templates select="." />
  </xsl:if>
</xsl:template>
<xsl:template match="dailyforecast">
  <!-- format current node (day) and following-sibling::dailyforecast[1] (night) -->
</xsl:template>

这是因为position()指的是选定节点集中的位置。因此,如果您只在模板1中选择奇数节点,您将在模板2中获得一个新的位置计数器。

当然,您可以将通用的"top"功能折叠到dailyforecast模板中,但它将不再可重用。

<xsl:template match="dailyforecast">
  <xsl:if test="positon() &lt;= 5">
    <!-- format current node (day) and following-sibling::dailyforecast[1] (night) -->
  </xsl:if>
</xsl:template>

相关内容

  • 没有找到相关文章

最新更新