如果這是一個非常簡單的問題,請道歉;我不使用XSLT,並且在網絡上找不到太多建議,因爲搜索結果有很多污染!XSLT;在文檔中查找最常見的元素值
我有以下形式的XML文檔。其主要目的是通過XSLT以幾種方式重新格式化,以便以多種不同格式顯示。
<desk>
<drawer>
<contents>pencils</contents>
<quantity>2</quantity>
</drawer>
<drawer>
<contents>pens</contents>
<quantity>15</quantity>
</drawer>
<drawer>
<contents>pencils</contents>
<quantity>3</quantity>
</drawer>
<drawer>
<contents>rulers</contents>
<quantity>2</quantity>
</drawer>
</desk>
我想從xml中提取兩條信息:i)平均數量; ii)xml中出現次數最多的內容(即「鉛筆」,因爲它出現的次數最多,所以出現的次數是兩次而不是「筆」)。這個想法是,這可以被傳送到一個非常簡單的shell腳本中。因此,我認爲獲取這些信息的最簡單方法是編寫幾個簡短的xsl樣式表,然後使用xsltproc來獲取數據。
第一條信息看起來很簡單。樣式表的核心將是這條線:
<xsl:value-of select="(sum(drawer/quantity)) div (count(drawer))" />
但我有點卡住了第二。
我想我可以通過每一個人內容的列表,使用這樣的循環:
<xsl:for-each select="drawer[not(contents = preceding-sibling::drawer/contents)]" />
,但我不太清楚如何再以數具有$ current_contents和元素的數量其內容元素的值。我也看不到通過結果進行排序的簡單方法,因此我可以獲得最常遇到的內容值的名稱。
我有一種感覺,這在XSLT 2.0中有各種分組選項,但不幸的是,xsltproc似乎並不支持這一點。任何幫助將受到感謝。
非常感謝,
雅各
謝謝;這很有幫助。我無法解決怎麼做,雖然是「無論你需要什麼」一點。通過「內容」對XML進行分組是否有一種簡單的方法來計算特定「內容」值在xml中出現的次數? – 2009-06-02 11:43:19
對不起,請參閱更新 – annakata 2009-06-02 12:18:51