2
我有我想與其交互的日期事件的XML源。在XSLT 1.0中擴展日期時間範圍
源XML:
<?xml version="1.0" encoding="UTF-8"?>
<events>
<event>
<!-- various elements -->
<start_datetime value="2012-02-09 10:00:00"/>
<end_datetime value="2012-02-09 11:00:00"/>
<!-- various elements -->
</event>
<event>
<!-- various elements -->
<start_datetime value="2012-02-09 10:00:00"/>
<end_datetime value="2012-02-10 15:00:00"/>
<!-- various elements -->
</event>
<!-- other events -->
</events>
注意/events/event[1]
是啓動和在同一天結束的事件;另一方面,/events/event[2]
跨越兩天。以下是我想要實現的內容:
- 對於在同一天的事件,將日期時間單獨留下,僅將這些屬性轉換爲子元素。
- 對於跨越多天的事件,我想創建多個
<event>
元素,這些元素(a)匹配整個時間跨度和(b)在適當的情況下跨越一整天的時間。
所以,我的理想XSLT會產生:
期望中的XML:
<?xml version="1.0" encoding="UTF-8"?>
<events>
<event>
<!-- various elements -->
<start_datetime>2012-02-09 10:00:00</start_datetime>
<end_datetime>2012-02-09 11:00:00</end_datetime>
<!-- various elements -->
</event>
<event>
<!-- various elements -->
<start_datetime>2012-02-09 10:00:00</start_datetime>
<end_datetime>2012-02-09 23:59:59</end_datetime>
<!-- various elements -->
</event>
<event>
<!-- various elements -->
<start_datetime>2012-02-10 00:00:00</start_datetime>
<end_datetime>2012-02-10 15:00:00</end_datetime>
<!-- various elements -->
</event>
<!-- other events -->
</events>
注意如何我的規則得到滿足:
- 由於發生在當天
/events/event[1]
,我們把它放在一邊(除了將屬性值更改爲子元素這樣簡單的任務之外)。 /events/event[2]
跨越兩天,這意味着它需要兩個<event>
塊(一個從該日期的開始日期時間到下午11:59:59,另一個從結束日期的00:00:00到結束日期時間)。
最後考慮:
這需要在XSLT 1.0來完成。
我不反對使用EXSLT的日期函數 - 但是,如果它們可以避免,那就更好了。
清澈如泥?一如既往,感謝您的幫助。 :)
我會檢查t當我回家時他就出去了。我同意 - EXSLT會更容易。 : - \關心給那個去? ;) – ABach
不幸的是我沒有安裝EXSLT!也許別人可以接受挑戰:) –
明白了。無論如何,我感謝你的回答。堅持下去。 :) – ABach