Feed XML an Google Kalender

1473
jaap

Ich habe eine XML-Datei mit Seminaren, die ich an Google-Kalender weitergeben möchte. Die XML-Datei wird von einer anderen Person gepflegt und regelmäßig aktualisiert. Ich möchte dies so tun, dass Google diese Änderungen automatisch erkennt. Ich habe nicht viel Erfahrung mit so etwas, also hoffe ich, dass mich jemand in die richtige Richtung weisen kann.

Dies ist ein Beispiel für das XML, das ich verarbeiten möchte.

(XML-Datei: "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> 

Der naheliegendste Weg, dies zu erreichen, würde ich sagen, ist die Verwendung eines XSLT-Stylesheets, das die XML-Daten verarbeitet und einige Dateien erstellt, die Google-Kalender lesen kann. Ich habe eine Website / einen Server, auf dem ich diese XSL-Datei ablegen kann. Idealerweise würde ich hoffen, mit nur einem Upload die richtige Datei erstellen zu können.

Das XSL-Blatt, das ich habe, sieht so aus.

(XSL-Datei: "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">&#13;&#10;</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> 

Dies funktioniert, wenn ich die XML-Datei verarbeite, an eine iCal-Datei weiterleite ( xsltproc seminars.xml > mycal.ics) und sie in einen Kalender in Google-Kalender importiere. Das Ergebnis mycal.icssieht so aus

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 

Nun besteht das Problem darin, dass (1) Google die XML-Datei nicht verarbeitet, und daher beim Importieren ein Fehler generiert wird. (2) Ich bin nicht sicher, ob diese Methode automatisch "greifen" würde, da die XML-Datei gelegentlich neu geladen werden muss.

Gibt es eine Möglichkeit, Google (oder den Webserver) zu veranlassen, diese Datei so zu verarbeiten, dass sie als iCal-Datei erkannt und auf dem neuesten Stand gehalten wird?

Ein kleines Problem ist schließlich auch, dass die ursprüngliche XML-Datei eine andere XSL-Datei enthält. Gibt es eine einfache Möglichkeit, auf dieser Website so etwas wie einen symbolischen Link zu dieser Datei zu erstellen, oder die XML-Datei ohne Header einfügen, damit ich einfach die ursprüngliche XSL durch meine ersetzen kann?

Sorry für die lange Frage. Danke im Voraus.

1

0 Antworten auf die Frage