2014-02-19 4 views
0

Учитывая следующую структуру документа ...Muenchian группировка путаница (XSLT)

<orders> 
    <order date="June-15-2008" item="F101" qty="1" customer="C28901" /> 
    <order date="June-16-2008" item="F114" qty="1" customer="C28902" /> 
    <order date="June-16-2008" item="F135" qty="1" customer="C28906" /> 
    <order date="June-17-2008" item="F108" qty="1" customer="C28908" /> 
    <order date="June-15-2008" item="F108" qty="1" customer="C28910" /> 
    <order date="June-16-2008" item="F118" qty="4" customer="C28914" /> 
    <order date="June-15-2008" item="F105" qty="5" customer="C28915" /> 
    <order date="June-17-2008" item="F120" qty="2" customer="C28919" /> 
    <order date="June-16-2008" item="F131" qty="1" customer="C28920" /> 
</orders> 

Я пытаюсь использовать muenchian группировку, чтобы выбрать первый элемент ordr для каждой уникальной даты и попытался каждый из не следования нет avail ...

<xsl:for-each select="//order/@date[generate-id()=generate-id(key(date, @date)[1])]" > 
    ... do something here ... 
</xsl:for-each> 

<xsl:for-each select="/orders/order/@date[generate-id()=generate-id(key(date, @date)[1])]" > 
    ... do something here ... 
</xsl:for-each> 

<xsl:for-each select="/orders/order[generate-id()=generate-id(key(date, @date)[1])]" > 
    ... do something here ... 
</xsl:for-each> 

У меня очень трудное время, чтобы понять, что происходит в муэнтианской группировке.

ответ

2

попробовать это

<xsl:stylesheet version='1.0' xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output indent="yes"/> 

    <!-- get keys of order using the date attribute --> 
    <xsl:key name="dates" match="order" use="@date" /> 

    <xsl:template match="orders"> 
     <xsl:for-each select="order[generate-id()=generate-id(key('dates', @date)[1])]"> 
      <xsl:copy> 
       <xsl:copy-of select="@*"/> 
      </xsl:copy> 
     </xsl:for-each> 
    </xsl:template> 

</xsl:stylesheet> 

дал свой вход источника, у меня есть следующий вывод

<order date="June-15-2008" item="F101" qty="1" customer="C28901"/> 
<order date="June-16-2008" item="F114" qty="1" customer="C28902"/> 
<order date="June-17-2008" item="F108" qty="1" customer="C28908"/> 
+0

еще ничего, тот же ключ я использовал, а также. – codingManiac

+0

Я заметил, что в вашем коде вы использовали 'key (date, @date)', который должен быть 'key ('date', @date)'. Имя ключа должно быть включено в кавычки. –

+0

получил, спасибо! – codingManiac

Смежные вопросы