我有一堆看起来有点像这样的数据:
<item>
<colour>Red</colour>
<date_created>2009-10-10 12:01:55</date_created>
<date_sold>2009-10-20 22:32:12</date_sold>
</item>
<item>
<colour>Blue</colour>
<date_created>2009-11-01 13:21:00</date_created>
<date_sold>2009-11-21 12:32:12</date_sold>
</item>
<item>
<colour>Blue</colour>
<date_created>2009-10-29 21:23:02</date_created>
<date_sold>2009-10-20 02:02:22</date_sold>
</item>
<item>
<colour>Red</colour>
<date_created>2009-11-02 09:11:51</date_created>
<date_sold>2009-11-20 09:15:53</date_sold>
</item>
<item>
<colour>Red</colour>
<date_created>2009-10-18 11:00:55</date_created>
<date_sold>2009-10-20 11:12:22</date_sold>
</item>
现在我希望能够通过XSLT样式表运行它,这样我的输出就像这样:
Colour | In stock 1 week | In stock 2 weeks | In stock 3 weeks
Red | 1 | 3 | 2
Blue | 0 | 2 | 1
目前我有一个使用基本muenchian分组的样式表来显示30%的股票是红色和70%蓝色,但我找不到找到具有给定日期范围的节点数量的方法。
有没有办法使用键来选择范围?我是否需要创建某种中间数据节点?是否有不同的路线显示我正在用这两个建议咆哮错误的树?这是否可以使用XSLT,或者我是否需要找到更改数据源的方法?
答案 0 :(得分:1)
如果你可以使用EXSLT date and time functions,你可以使用以下内容来按时间计算物品(以周为单位,向上舍入):
<xsl:key
name="items-by-weeks-in-stock"
match="//item"
use="ceiling(date:seconds(date:difference(translate(date_created, ' ', 'T'),
translate(date_sold, ' ', 'T')))
div 604800)"/>