我有一個帶有研討會的XML文件,我想提供給Google日曆。 XML文件由其他人維護,並定期更新,因此我想以Google自動抓取這些更改的方式執行此操作。將XML提供給Google日曆
我對這種事情沒有太多經驗,所以我希望有人能指出我正確的方向。
這是我想要處理的XML的一個示例。
(XML文件:「seminars.xml」)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="ical.xsl"?>
<seminars>
<lastupdate>20150707</lastupdate>
<seminar>
<speaker>A. Einstein</speaker>
<location>Zurich</location>
<date>20150607</date>
<time>15:45:00</time>
<university>Princeton</university>
<abstract>
<title>On the structure of generalized patent office spaces</title>
<content>To be announced.</content>
</abstract>
</seminar>
</seminars>
最明顯的方式實現這一目標,我會說,是用它處理XML和建立一些文件谷歌XSLT樣式表-calendar可以讀取。我有一個網站/服務器,我可以把這個XSL文件放在這麼理想的位置,我希望只需要上傳一個正確的文件即可。
我看起來像這樣的XSL表。
(XSL文件: 「ical.xsl」)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="iso-8859-1" media-type="text/calendar"/>
<xsl:variable name="crlf"> </xsl:variable>
<xsl:template match="/">BEGIN:VCALENDAR<xsl:value-of select="$crlf"/>
CALSCALE:GREGORIAN<xsl:value-of select="$crlf"/>
VERSION:2.0<xsl:value-of select="$crlf"/>
SEQUENCE:1<xsl:value-of select="$crlf"/>
X-WR-TIMEZONE:Europe/Paris<xsl:for-each select="seminars/seminar"><xsl:value-of select="$crlf"/>
BEGIN:VEVENT<xsl:value-of select="$crlf"/>
LOCATION:<xsl:value-of select="location"/><xsl:value-of select="$crlf"/>
DTSTART:<xsl:value-of select="date"/>T154500<xsl:value-of select="$crlf"/>
DTEND:<xsl:value-of select="date"/>T164500<xsl:value-of select="$crlf"/>
DESCRIPTION:seminar by <xsl:value-of select="speaker"/><xsl:value-of select="$crlf"/>
SUMMARY:<xsl:value-of select="abstract/title"/><xsl:value-of select="$crlf"/>
END:VEVENT<xsl:value-of select="$crlf"/></xsl:for-each>
END:VCALENDAR<xsl:value-of select="$crlf"/>
</xsl:template>
</xsl:stylesheet>
這工作,如果我處理XML文件,它管將iCal文件(xsltproc seminars.xml > mycal.ics
),並在導入到一些日曆谷歌日曆。 產生的mycal.ics
看起來像這樣
BEGIN:VCALENDAR
CALSCALE:GREGORIAN
VERSION:2.0
SEQUENCE:1
X-WR-TIMEZONE:Europe/Paris
BEGIN:VEVENT
LOCATION:Zurich
DTSTART:20150607T154500
DTEND:20150607T164500
DESCRIPTION:seminar by A. Einstein
SUMMARY:On the structure of generalized patent office spaces
END:VEVENT
現在的問題是,(1)谷歌不處理XML,從而在導入和(2)我不知道,如果這種方法會自動將「產生錯誤抓取更改「,因爲它需要偶爾重新加載XML。
那麼,有沒有辦法讓谷歌(或網絡服務器)處理這個文件,因此它被識別爲一個iCal文件,和保持最新?
最後一個小問題是原始的XML裏面還有一個不同的XSL文件。有沒有一種簡單的方法可以將我的網站上的符號鏈接製作成這個文件,或者包含沒有標題的XML,這樣我就可以用我的原來的XSL替換原來的XSL了?