我有一个带有研讨会的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了?