2014-07-24 63 views
0

我在項目組中循環並從每個項目中獲取項目數。我需要的只是獲取一個數字,我需要的數字是每個項目組的最高項目數。我想如果我可以從正在回來的計數中創建一個數組,我可以從數組中抽取第一個,並利用這個數字繼續我的項目。在for-each循環中創建動態數組xslt

這是我的XML

<example> 
<items> 
    <item>1</item> 
    <item>2</item> 
    <item>3</item> 
</items> 
<items> 
    <item>1</item> 
    <item>2</item> 
    <item>3</item> 
    <item>4</item> 
</items> 
    <items> 
    <item>1</item> 
    <item>2</item> 
    <item>3</item> 
    <item>4</item> 
    <item>5</item> 
</items> 
<items> 
    <item>1</item> 
    <item>2</item> 
</items> 

這是我的XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <xsl:for-each select="example/items"> 
      <xsl:sort select="count(item)" data-type="number" order="descending"/> 
      <xsl:value-of select="count(item)"/>, 
    </xsl:for-each> 
</xsl:template> 

如現在這個輸出在瀏覽器5的, 4, 3, 2, 我能夠得到最高的計數是首先使用排序,但這些都是每次迭代後打印到屏幕上的單獨值。

我怎樣才能把它們變成可用的東西(5, 4, 3, 2)?

或以某種方式只是得到數字5返回給我。

任何幫助將不勝感激。

回答

0

要輸出這是你的降序排序順序使用

<xsl:template match="/"> 
    <xsl:for-each select="example/items"> 
      <xsl:sort select="count(item)" data-type="number" order="descending"/> 
      <xsl:if test="position() = 1"><xsl:value-of select="count(item)"/></xsl:if> 
    </xsl:for-each> 
</xsl:template> 

如果你想與所有的統計項號返回一些「複雜」的結構,那麼你就需要考慮XSLT 2.0高居第一然後您可以選擇返回數值序列或存儲數字的XML元素節點序列。在XSLT 1.0中,您可以構建存儲數字的XML元素節點的結果樹片段,但要使用XPath訪問它們,則需要exsl:node-set或類似的東西。

但是在XSLT 2.0中有直接的方法,例如max(example/items/count(item))來計算最大項目數。

+0

得到我的電話號碼!謝謝! –