2010-01-21 7 views
1

Je travaille avec un CMS piloté par XML, et avant de m'écrire et d'écrire ou d'implémenter un module qui analyse le format iCal, je me demandais s'il était possible de l'analyser en utilisant juste XSLT ou idéalement juste une expression XPath, car il s'agit d'une fonction intégrée au CMS.Analyse des données iCalendar avec XPath/XSLT

Répondre

2

Eh bien, votre problème initial serait que ce n'est pas un format XML. fichiers iCalendar sont marqués du texte:

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 

Ainsi, l'analyse syntaxique qui avec XPath et XSLT pourrait être difficile. Cependant, il existe une représentation XML de iCalendar. Vous pouvez trouver des informations sur la spécification xCal Basic. L'exemple ci-dessus (à partir de cette spécification) ressemble à:

<?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 

(j'ai copié du projet, d'où l'espace de noms impair). Il y a plus d'informations sur le site OASIS Coverpages et sur le CalConnect blog (c'est le plus à jour).

Si vous pouvez convertir de l'un à l'autre, alors oui, vous pouvez l'analyser en utilisant des instructions XPath. Si non, alors vous pouvez analyser le texte. Je ne suis au courant d'aucune implémentation, j'en ai peur.

+0

Merci pour la réponse, il semble que je suis coincé avec juste la mise en œuvre normale d'iCal j'ai peur. J'ai creusé un peu plus et j'ai trouvé cet exemple http://designadmin.com/journal/2007/07/29/xslt-transformation-of-ics-to-xml/ Dans lequel l'auteur semble convertir iCal en XML, mais je ne suis pas sûr de savoir comment l'implémenter car il n'y a pas d'élément XML racine pour le XSL. –

+0

Si j'ai un peu de temps, je vais jeter un oeil à cela, semble intéressant –

+1

@Graham - qui ressemble à un bon endroit pour commencer. Lorsque vous exécutez la feuille de style, transmettez la valeur de chaîne de l'iCal dans le paramètre 'ical-data-raw'. Vous pouvez exécuter ce XSLT sur n'importe quel fichier XML, même le XSLT lui-même. Les modèles fonctionnent sur le paramètre 'ical-data-raw' et ne font rien avec le document XML source. –