канал 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>
Я бы сказал, что наиболее очевидным способом достижения этого является использование таблицы стилей XSLT, которая обрабатывает XML и создает файл, который может прочитать google-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-file ( xsltproc seminars.xml > mycal.ics
) и импортирую в какой-либо календарь в google-calendar. В результате 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) Google не обрабатывает XML, таким образом генерируя ошибку при импорте, и (2) Я не уверен, что этот метод автоматически «захватит изменения», так как это потребовало бы периодической перезагрузки XML.
Итак, есть ли способ заставить Google (или веб-сервер) обрабатывать этот файл, чтобы он распознавался как файл iCal и поддерживал его актуальность?
Наконец, небольшая проблема заключается также и в том, что исходный XML содержит другой XSL-файл. Есть ли простой способ сделать что-то вроде символической ссылки на моем сайте на этот файл или включить XML без заголовка, чтобы я мог просто заменить исходный XSL своим?
Извините за длинный вопрос. Заранее спасибо.
0 ответов на вопрос
Похожие вопросы
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
8
Как синхронизировать Календарь Google и iCal?
-
8
Отображение XML в браузере Chrome
-
-
2
Синхронизировать Google, календарь Outlook и контакты
-
16
Запрос файла CSV
-
1
Как сделать так, чтобы запросы о событиях с определенных адресов электронной почты переходили в опре...
-
5
Excel 2007 преобразует поля CSV в формулы
-
4
Как я могу просмотреть неформатированный RSS XML в браузере?
-
5
Grep инструмент для XML
-
1
Mozilla sunbird: многодневное мероприятие выглядит странно в календаре