2010-01-21 59 views
1

我正在使用XML驅動的CMS,在我跑掉之前編寫或實現了一個解析iCal格式的模塊,我想知道是否有任何方法可以用它來解析它XSLT或理想的XPath表達式,因爲這是CMS的內置函數。使用XPath/XSLT解析iCalendar數據

回答

2

那麼,你最初的問題是它不是XML格式。 iCalendar檔案的標籤文字:

BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//hacksw/handcal//NONSGML v1.0//EN 
BEGIN:VEVENT 
DTSTART:19970714T170000Z 
DTEND:19970715T035959Z 
SUMMARY;LANGUAGE="en_US":Bastille Day Party 
END:VEVENT 
END:VCALENDAR 

所以,分析與XPath和XSLT可能是具有挑戰性的。但是,iCalendar有一個XML 表示。你可以在xCal Basic規範中找到關於該信息。上面的示例(從該規範)看起來像:

<?xml version="1.0" TODO_NAMESPACE="foo"?> 
<iCalendar xmlns:xCal="urn:ietf:params:xml:ns:xcal"> 
    <vcalendar> 
     <version>2.0</version> 
     <prodid>-//hacksw/handcal//NONSGML v1.0//EN</prodid> 
     <vevent> 
      <dtstart>19970714T170000Z</dtstart> 
      <dtendt>19970715T035959Z</dtend> 
      <summary xml:lang="en_US">Bastille Day Party</summary> 
     </vevent> 
    </vcaledar> 
</iCalendar 

(我從草稿中複製,因此是奇數命名空間)。有關OASIS Coverpages網站和CalConnect blog(這是最新的)的更多信息。

如果你可以從一個轉換到另一個,那麼是的,你可以使用XPath語句來解析它。如果沒有,那麼你可以解析文本。我實際上並沒有意識到任何恐懼的實現。

+0

感謝您的迴應,似乎我堅持只是正常的iCal實施恐怕。我做了更多的挖掘,並找到了這個例子http://designadmin.com/journal/2007/07/29/xslt-transformation-of-ics-to-xml/作者似乎在將iCal轉換爲XML,但我不太清楚如何實現它,因爲XSL沒有根XML元素。 – 2010-01-21 16:55:22

+0

如果我有一點時間,我會看看,看起來很有趣 – 2010-01-21 17:08:04

+1

@格拉漢姆 - 看起來像一個好地方開始。在執行樣式表時,在'ical-data-raw'參數中傳入iCal的字符串值。您可以針對任何XML文件運行該XSLT,即使是XSLT本身。這些模板在'ical-data-raw'參數上工作,並且不對源XML文檔執行任何操作。 – 2010-01-22 01:22:55