XCal-Support
git-svn-id: svn://svn.c3d2.de/c3d2-web/trunk@495 31f61c52-7bfb-0310-b897-fc00f8a278f0
This commit is contained in:
parent
cf8e162dfb
commit
bc3e22dc02
3
Makefile
3
Makefile
|
@ -46,7 +46,7 @@ PAGES:=$(patsubst content/pages/%.xml, build/%.html, $(wildcard content/pages/*.
|
|||
# Seiten zu einzelnen News-Items:
|
||||
NEWS_PAGES:=$(patsubst content/news/%.xml, build/news/%.html, $(wildcard content/news/*.xml))
|
||||
# News-Index und Feeds:
|
||||
NEWSFILES:=build/news.html build/news-rss.xml build/news-atom.xml
|
||||
NEWSFILES:=build/news.html build/news-rss.xml build/news-atom.xml build/xcal.xml
|
||||
# Datenspuren-Seiten:
|
||||
DS_PAGES:=$(patsubst content/datenspuren/%.xml, build/datenspuren/%.html, $(wildcard content/datenspuren/*.xml)) build/datenspuren/schedule.html
|
||||
# Suchseiten-Template
|
||||
|
@ -83,6 +83,7 @@ build/news-rss.xml : VFLAGS_OUT=--noout --schema xsd/rss20.xsd
|
|||
build/news-atom.xml : STYLE=xsl/atom.xsl
|
||||
build/news-atom.xml : NOVALID_IGNORE:=true
|
||||
build/news-atom.xml : VFLAGS_OUT=--noout --relaxng xsd/atom.rng
|
||||
build/xcal.xml : STYLE=xsl/xcal.xsl
|
||||
|
||||
#.INTERMEDIATE: news.xml
|
||||
news.xml: $(NEWSITEMS)
|
||||
|
|
|
@ -7,5 +7,6 @@
|
|||
<system systemId="http://www.c3d2.de/dtd/c3d2web.dtd" uri="dtd/c3d2web.dtd"/>
|
||||
<public publicId="-//W3C//DTD XHTML 1.0 Strict//EN" uri="dtd/xhtml1-strict.dtd"/>
|
||||
<public publicId="-//W3C//DTD XHTML 1.0 Transitional//EN" uri="dtd/xhtml1-transitional.dtd"/>
|
||||
<public publicId="-//IETF//DTD XCAL//iCalendar XML//EN" uri="dtd/xcal.dtd"/>
|
||||
</group>
|
||||
</catalog>
|
||||
|
|
|
@ -0,0 +1,645 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- ******************* -->
|
||||
<!-- Entity declarations -->
|
||||
<!-- ******************* -->
|
||||
|
||||
<!ENTITY % attr.altrep "
|
||||
altrep ENTITY #IMPLIED
|
||||
">
|
||||
|
||||
<!ENTITY % attr.cn "
|
||||
cn CDATA ''
|
||||
">
|
||||
|
||||
<!ENTITY % attr.cutype "
|
||||
cutype NMTOKEN 'INDIVIDUAL'
|
||||
">
|
||||
<!-- Valid name tokens are "INDIVIDUAL", "GROUP", "RESOURCE" -->
|
||||
<!-- "ROOM", "UNKNOWN", a non-standard "X-" name or another -->
|
||||
<!-- IANA registered name. -->
|
||||
|
||||
<!ENTITY % attr.delegated-from "
|
||||
delegated-from CDATA #IMPLIED
|
||||
">
|
||||
<!-- delegated-from value is a calendar user address -->
|
||||
|
||||
<!ENTITY % attr.delegated-to "
|
||||
delegated-to CDATA #IMPLIED
|
||||
">
|
||||
<!-- delegated-to value is one or more calendar user addresses -->
|
||||
|
||||
<!ENTITY % attr.dir "
|
||||
dir ENTITY #IMPLIED
|
||||
">
|
||||
<!-- dir value is a URI to a directory entry -->
|
||||
|
||||
<!ENTITY % attr.fmttype "
|
||||
fmttype CDATA #REQUIRED
|
||||
">
|
||||
<!-- fmttype value is any IANA registered content type -->
|
||||
|
||||
<!ENTITY % attr.fbtype "
|
||||
fbtype NMTOKEN 'BUSY'
|
||||
">
|
||||
|
||||
|
||||
<!-- Valid token values are "FREE", "BUSY", "BUSY-UNAVAILABLE", -->
|
||||
<!-- "BUSY-TENTATIVE", a non-standard "X-" name or another -->
|
||||
<!-- IANA registered name. -->
|
||||
|
||||
<!ENTITY % attr.language "
|
||||
language CDATA #IMPLIED
|
||||
">
|
||||
<!-- language value is a valid RFC 1766 language string -->
|
||||
|
||||
<!ENTITY % attr.member "
|
||||
member CDATA #IMPLIED
|
||||
">
|
||||
<!-- member value is one or more calendar user addresses -->
|
||||
|
||||
<!ENTITY % attr.partstat "
|
||||
partstat NMTOKEN 'NEEDS-ACTION'
|
||||
">
|
||||
<!-- Valid token value for VEVENT: "NEEDS-ACTION", "ACCEPTED", -->
|
||||
<!-- "DECLINED", "TENTATIVE", "DELEGATED", a non-standard "X- -->
|
||||
<!-- name or another IANA registered name. -->
|
||||
|
||||
<!-- Valid token value for VTODO: "NEEDS-ACTION", "ACCEPTED", -->
|
||||
<!-- "DECLINED", "TENTATIVE", "DELEGATED", "COMPLETED", -->
|
||||
<!-- "IN-PROGRESS, a non-standard "X- name or another IANA -->
|
||||
<!-- registered name. -->
|
||||
<!-- Valid token value for VJOURNAL: "NEEDS-ACTION", "ACCEPTED", -->
|
||||
<!-- "DECLINED", a non-standard "X- name or another IANA -->
|
||||
<!-- registered name. -->
|
||||
|
||||
<!ENTITY % attr.range "
|
||||
range NMTOKEN 'THISONLY'
|
||||
">
|
||||
<!-- Valid token values are "THISONLY" or "THISANDPRIOR" or -->
|
||||
<!-- "THISANDFUTURE" -->
|
||||
|
||||
<!ENTITY % attr.related "
|
||||
related NMTOKEN 'START'
|
||||
">
|
||||
<!-- Valid token values are "START" or "END" -->
|
||||
|
||||
<!ENTITY % attr.reltype "
|
||||
reltype NMTOKEN 'PARENT'
|
||||
">
|
||||
<!-- Valid token values are "PARENT", "CHILD", SIBLING", -->
|
||||
<!-- a non-standard "X-" name or any IANA registered name. -->
|
||||
|
||||
<!ENTITY % attr.role "
|
||||
role NMTOKEN 'REQ-PARTICIPANT'
|
||||
">
|
||||
|
||||
|
||||
<!-- Valid token values are "CHAIR", "REQ-PARTICIPANT", -->
|
||||
<!-- "OPT-PARTICIPANT", "NON-PARTICIPANT", a non-standard "X-" -->
|
||||
<!-- name or any IANA registered name. -->
|
||||
|
||||
<!ENTITY % attr.rsvp "
|
||||
rsvp NMTOKEN 'FALSE'
|
||||
">
|
||||
<!-- Valid token values are "TRUE" or "FALSE", -->
|
||||
|
||||
<!ENTITY % attr.sent-by "
|
||||
sent-by CDATA #IMPLIED
|
||||
">
|
||||
<!-- sent-by value is a calendar user address -->
|
||||
|
||||
<!ENTITY % attr.tzid "
|
||||
tzid CDATA #IMPLIED
|
||||
">
|
||||
<!-- tzid value is a time zone identifier -->
|
||||
|
||||
<!ENTITY % cal.comp "
|
||||
vevent | vtodo | vjournal | vfreebusy | vtimezone
|
||||
">
|
||||
|
||||
<!ENTITY % vevent.opt1 "
|
||||
class | created | description | dtstamp | dtstart | geo |
|
||||
last-modified | location | organizer | priority | recurrence-id |
|
||||
sequence | status | summary | transp | uid | url |
|
||||
(dtend | duration)
|
||||
">
|
||||
<!-- These properties may only appear once in a VEVENT -->
|
||||
<!ENTITY % vevent.optm "
|
||||
attach | attendee | categories | comment | contact |
|
||||
exdate | exrule | rdate | related-to | resources | request-status |
|
||||
rrule
|
||||
">
|
||||
<!-- These properties may appear one or more times in a VEVENT -->
|
||||
|
||||
<!ENTITY % vtodo.opt1 "
|
||||
class | completed | created | description | dtstamp | dtstart |
|
||||
geo | last-modified | location | organizer | percent | priority |
|
||||
recurrence-id | sequence | status | summary | uid | url |
|
||||
(due | duration)
|
||||
">
|
||||
<!-- These properties may only appear once in a VTODO -->
|
||||
|
||||
<!ENTITY % vtodo.optm "
|
||||
attach | attendee | categories | comment | contact |
|
||||
exdate | exrule | request-status | related-to | resources |
|
||||
rdate | rrule
|
||||
|
||||
|
||||
">
|
||||
<!-- These properties may appear one or more times in a VTODO -->
|
||||
|
||||
<!ENTITY % vjournal.opt1 "
|
||||
class | created | description | dtstart | dtstamp | last-modified |
|
||||
organizer | recurrence-id | sequence | status | summary | uid | url
|
||||
">
|
||||
<!-- These properties may only appear once in a VJOURNAL -->
|
||||
|
||||
<!ENTITY % vjournal.optm "
|
||||
attach | attendee | categories | comment | contact |
|
||||
exdate | exrule | related-to | rdate | rrule | request-status
|
||||
">
|
||||
<!-- These properties may appear one or more times in a VJOURNAL -->
|
||||
|
||||
<!ENTITY % vfreebusy.opt1 "
|
||||
contact | dtstamp | dtstart | dtend | duration |
|
||||
organizer | uid | url
|
||||
">
|
||||
<!-- These properties may only appear once in a VFREEBUSY -->
|
||||
|
||||
<!ENTITY % vfreebusy.optm "
|
||||
attendee | comment | freebusy | request-status
|
||||
">
|
||||
<!-- These properties may appear one or more times in a -->
|
||||
<!-- VFREEBUSY -->
|
||||
|
||||
<!ENTITY % vtimezone.man "
|
||||
tzid
|
||||
">
|
||||
<!-- These properties must appear in a VTIMEZONE -->
|
||||
|
||||
<!ENTITY % vtimezone.opt1 "
|
||||
last-modified | tzurl
|
||||
">
|
||||
<!-- These properties may only appear once in a VTIMEZONE -->
|
||||
|
||||
<!ENTITY % vtimezone.mann "
|
||||
(standard | daylight), (standard | daylight)*
|
||||
">
|
||||
<!-- These properties must appear in a VTIMEZONE and may -->
|
||||
<!-- appear multiple times -->
|
||||
|
||||
<!ENTITY % standard.man "
|
||||
dtstart | tzoffsetto | tzoffsetfrom
|
||||
">
|
||||
<!-- These properties must appear in a STANDARD, but only once -->
|
||||
|
||||
<!ENTITY % standard.optm "
|
||||
|
||||
|
||||
comment | rdate | rrule | tzname
|
||||
">
|
||||
<!-- These properties may appear one or more times in a STANDARD -->
|
||||
|
||||
<!ENTITY % daylight.man "
|
||||
dtstart | tzoffsetto | tzoffsetfrom
|
||||
">
|
||||
<!-- These properties must appear in a DAYLIGHT, but only once -->
|
||||
|
||||
<!ENTITY % daylight.optm "
|
||||
comment | rdate | rrule | tzname
|
||||
">
|
||||
<!-- These properties may appear one or more times in a DAYLIGHT -->
|
||||
|
||||
<!ENTITY % audio.man "
|
||||
action, trigger
|
||||
">
|
||||
<!-- These properties must appear in an audio VALARM. -->
|
||||
|
||||
<!ENTITY % audio.optx "
|
||||
duration | repeat
|
||||
">
|
||||
<!-- These properties may appear once in an audio VALARM. If one -->
|
||||
<!-- appears, then both must appear. -->
|
||||
|
||||
<!ENTITY % audio.opt1 "
|
||||
attach
|
||||
">
|
||||
<!-- These properties may appear once in an audio VALARM. -->
|
||||
|
||||
<!ENTITY % valarm.audio "
|
||||
(%audio.man;), (%audio.optx;)*, (%audio.opt1;)
|
||||
">
|
||||
|
||||
<!ENTITY % display.man "
|
||||
action, description, trigger
|
||||
">
|
||||
<!-- These properties must appear in a display VALARM. -->
|
||||
<!ENTITY % display.optx "
|
||||
duration | repeat
|
||||
">
|
||||
<!-- These properties may appear once in a display VALARM. If -->
|
||||
<!-- one appears, then both must appear. -->
|
||||
|
||||
<!ENTITY % valarm.display "
|
||||
(%display.man;), (%display.optx;)*
|
||||
">
|
||||
|
||||
<!ENTITY % email.man "
|
||||
action, description, summary, trigger
|
||||
">
|
||||
<!-- These properties must appear in an email VALARM. -->
|
||||
|
||||
<!ENTITY % email.optx "
|
||||
duration | repeat
|
||||
">
|
||||
<!-- These properties may appear once in an email VALARM. If one -->
|
||||
<!-- appears, then both must appear. -->
|
||||
|
||||
<!ENTITY % email.optm "
|
||||
attach
|
||||
">
|
||||
<!-- These properties may appear one or more times in an email -->
|
||||
<!-- VALARM. -->
|
||||
|
||||
<!ENTITY % email.mann "
|
||||
attendee
|
||||
">
|
||||
<!-- These properties must appear in an email VALARM. The may -->
|
||||
<!-- appear more than once. -->
|
||||
|
||||
<!ENTITY % valarm.email "
|
||||
(%email.man;), (%email.optx;)*, (%email.optm;)*,
|
||||
(%email.mann;)*
|
||||
">
|
||||
|
||||
<!ENTITY % procedure.man "
|
||||
action, attach, trigger
|
||||
">
|
||||
<!-- These properties must appear in an audio VALARM. -->
|
||||
|
||||
<!ENTITY % procedure.optx "
|
||||
duration | repeat
|
||||
">
|
||||
<!-- These properties may appear once in an procedure VALARM. -->
|
||||
<!-- If one appears, then both must appear. -->
|
||||
|
||||
<!ENTITY % procedure.opt1 "
|
||||
description
|
||||
">
|
||||
<!-- These properties may appear once in a procedure VALARM -->
|
||||
<!ENTITY % valarm.procedure "
|
||||
(%procedure.man;), (%procedure.optx;)*, (%procedure.opt1;)?
|
||||
">
|
||||
|
||||
<!-- ******************************************** -->
|
||||
<!-- iCalendar value type notation declarations -->
|
||||
<!-- ******************************************** -->
|
||||
|
||||
|
||||
<!-- NOTE: The "XCAL" text in the following NOTATION values
|
||||
will be replaced with the text "RFC xxxx", where "xxxx" is the RFC
|
||||
number, when this memo is published as a RFC. -->
|
||||
|
||||
<!NOTATION BINARY PUBLIC "-//IETF//NOTATION XCAL/Value Type/Binary//EN">
|
||||
|
||||
<!NOTATION BOOLEAN PUBLIC "-//IETF//NOTATION XCAL/Value Type/Boolean//EN">
|
||||
|
||||
<!NOTATION CALADR PUBLIC "-//IETF//NOTATION XCAL/Value Type/Calendar
|
||||
User Address//EN">
|
||||
|
||||
<!NOTATION DATE PUBLIC "-//IETF//NOTATION XCAL/Value Type/Date//EN">
|
||||
|
||||
<!NOTATION DATE-TIME PUBLIC "-//IETF//NOTATION XCAL/Value
|
||||
Type/Date-Time//EN">
|
||||
|
||||
<!NOTATION DURATION PUBLIC "-//IETF//NOTATION XCAL/Value
|
||||
Type/Duration//EN">
|
||||
|
||||
<!NOTATION FLOAT PUBLIC "-//IETF//NOTATION XCAL/Value Type/Float//EN">
|
||||
|
||||
<!NOTATION INTEGER PUBLIC "-//IETF//NOTATION XCAL/Value Type/Integer//EN">
|
||||
|
||||
<!NOTATION PERIOD PUBLIC "-//IETF//NOTATION XCAL/Value
|
||||
Type/Period of Time//EN">
|
||||
|
||||
<!NOTATION RECUR PUBLIC "-//IETF//NOTATION XCAL/Value
|
||||
Type/Recurrence Rule//EN">
|
||||
|
||||
<!NOTATION TEXT PUBLIC "-//IETF//NOTATION XCAL/Value Type/Text//EN">
|
||||
|
||||
<!NOTATION TIME PUBLIC "-//IETF//NOTATION XCAL/Value Type/Time//EN">
|
||||
|
||||
<!NOTATION URI PUBLIC "-//IETF//NOTATION XCAL/Value Type/URI//EN">
|
||||
|
||||
<!NOTATION UTC-OFFSET PUBLIC "-//IETF//NOTATION XCAL/Value
|
||||
Type/UTC-Offset//EN">
|
||||
|
||||
<!NOTATION X-NAME PUBLIC "-//IETF//NOTATION XCAL/Value Type/X-Name//EN">
|
||||
|
||||
<!-- ************************************************* -->
|
||||
<!-- iCalendar property element/attribute declarations -->
|
||||
<!-- ************************************************* -->
|
||||
|
||||
<!ELEMENT br EMPTY>
|
||||
<!-- Signifies a new line in the TEXT value content information -->
|
||||
|
||||
<!-- Description component properties element type declarations -->
|
||||
|
||||
|
||||
<!ELEMENT attach (extref | b64bin)>
|
||||
<!-- extref holds a reference to an external entity that -->
|
||||
<!-- has the attachment. b64bin holds the inline BASE64 encoded -->
|
||||
<!-- binary data for the attachment as defined in RFC 2045. -->
|
||||
|
||||
<!ELEMENT extref EMPTY>
|
||||
<!ATTLIST extref
|
||||
uri ENTITY #REQUIRED>
|
||||
|
||||
<!ELEMENT b64bin (#PCDATA)>
|
||||
<!ATTLIST b64bin
|
||||
%attr.fmttype;
|
||||
value NOTATION (BINARY) #IMPLIED>
|
||||
|
||||
<!ELEMENT categories (item)*>
|
||||
|
||||
<!ELEMENT item (#PCDATA)>
|
||||
<!ATTLIST item
|
||||
%attr.language;
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
|
||||
<!ELEMENT class (#PCDATA)>
|
||||
<!ATTLIST class
|
||||
%attr.language;
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
|
||||
<!ELEMENT comment (#PCDATA)*>
|
||||
<!ATTLIST comment
|
||||
%attr.language;
|
||||
%attr.altrep;
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
|
||||
<!ELEMENT description (#PCDATA)*>
|
||||
<!ATTLIST description
|
||||
%attr.language;
|
||||
%attr.altrep;
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
|
||||
<!ELEMENT geo (lat, lon)>
|
||||
|
||||
<!ELEMENT lat (#PCDATA)>
|
||||
<!ATTLIST lat value NOTATION (FLOAT) #IMPLIED>
|
||||
<!-- A decimal degree float number to 6 decimal places -->
|
||||
|
||||
<!ELEMENT lon (#PCDATA)>
|
||||
<!ATTLIST lon value NOTATION (FLOAT) #IMPLIED>
|
||||
<!-- A decimal degree float number to 6 decimal places -->
|
||||
|
||||
<!ELEMENT location (#PCDATA)>
|
||||
|
||||
<!ATTLIST location
|
||||
%attr.language;
|
||||
%attr.altrep;
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
|
||||
<!ELEMENT percent (#PCDATA)>
|
||||
<!ATTLIST percent
|
||||
value NOTATION (INTEGER) #IMPLIED>
|
||||
|
||||
<!ELEMENT priority (#PCDATA)>
|
||||
<!ATTLIST priority
|
||||
value NOTATION (INTEGER) #IMPLIED>
|
||||
|
||||
<!ELEMENT resources (#PCDATA)>
|
||||
<!ATTLIST resources
|
||||
%attr.language;
|
||||
%attr.altrep;
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
|
||||
<!ELEMENT status (#PCDATA)>
|
||||
<!ATTLIST status
|
||||
%attr.language;
|
||||
%attr.altrep;
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
<!-- Text value must match the valid values for the particular -->
|
||||
<!-- calendar component. -->
|
||||
|
||||
<!ELEMENT summary (#PCDATA)>
|
||||
<!ATTLIST summary
|
||||
%attr.language;
|
||||
%attr.altrep;
|
||||
value NOTATION (TEXT) #IMPLIED >
|
||||
|
||||
<!-- Data and time component property element type declarations -->
|
||||
|
||||
<!ELEMENT dtstart (#PCDATA)>
|
||||
<!ATTLIST dtstart
|
||||
%attr.tzid;
|
||||
value NOTATION (DATE-TIME | DATE) "DATE-TIME">
|
||||
|
||||
<!ELEMENT dtend (#PCDATA)>
|
||||
<!ATTLIST dtend
|
||||
%attr.tzid;
|
||||
value NOTATION (DATE-TIME | DATE) "DATE-TIME">
|
||||
|
||||
<!ELEMENT due (#PCDATA)>
|
||||
<!ATTLIST due
|
||||
%attr.tzid;
|
||||
value NOTATION (DATE-TIME | DATE) "DATE-TIME">
|
||||
|
||||
<!ELEMENT completed (#PCDATA)>
|
||||
<!ATTLIST completed
|
||||
value NOTATION (DATE-TIME) #IMPLIED>
|
||||
|
||||
<!ELEMENT duration (#PCDATA)>
|
||||
<!ATTLIST duration
|
||||
value NOTATION (DURATION) #IMPLIED>
|
||||
|
||||
<!ELEMENT freebusy (#PCDATA)>
|
||||
<!ATTLIST freebusy
|
||||
%attr.fbtype;
|
||||
value NOTATION (PERIOD) #IMPLIED>
|
||||
|
||||
<!ELEMENT transp (#PCDATA)>
|
||||
<!ATTLIST transp
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
<!-- Text value must be one of the valid enumerations. -->
|
||||
|
||||
<!-- Time zone component property element type declarations -->
|
||||
|
||||
<!ELEMENT tzid (#PCDATA)>
|
||||
<!ATTLIST tzid
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
|
||||
<!ELEMENT tzname (#PCDATA)>
|
||||
<!ATTLIST tzname
|
||||
%attr.language;
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
|
||||
<!ELEMENT tzoffsetfrom (#PCDATA)>
|
||||
<!ATTLIST tzoffsetfrom
|
||||
value NOTATION (UTC-OFFSET) #IMPLIED>
|
||||
|
||||
<!ELEMENT tzoffsetto (#PCDATA)>
|
||||
<!ATTLIST tzoffsetto
|
||||
value NOTATION (UTC-OFFSET) #IMPLIED>
|
||||
|
||||
<!ELEMENT tzurl EMPTY>
|
||||
<!ATTLIST tzurl
|
||||
uri ENTITY #REQUIRED>
|
||||
|
||||
<!-- Relationship component property element type declarations -->
|
||||
|
||||
<!ELEMENT attendee (#PCDATA)>
|
||||
<!ATTLIST attendee
|
||||
%attr.language;
|
||||
%attr.cn;
|
||||
%attr.role;
|
||||
%attr.partstat;
|
||||
%attr.rsvp;
|
||||
%attr.cutype;
|
||||
%attr.member;
|
||||
%attr.delegated-to;
|
||||
%attr.delegated-from;
|
||||
%attr.sent-by;
|
||||
%attr.dir;
|
||||
value NOTATION (CALADR) #IMPLIED>
|
||||
|
||||
<!ELEMENT contact (#PCDATA)*>
|
||||
<!ATTLIST contact
|
||||
%attr.language;
|
||||
%attr.altrep;
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
|
||||
<!ELEMENT organizer (#PCDATA)>
|
||||
<!ATTLIST organizer
|
||||
%attr.language;
|
||||
%attr.cn;
|
||||
%attr.sent-by;
|
||||
%attr.dir;
|
||||
value NOTATION (CALADR) #IMPLIED>
|
||||
|
||||
<!ELEMENT recurrence-id (#PCDATA)>
|
||||
<!ATTLIST recurrence-id
|
||||
%attr.tzid;
|
||||
%attr.range;
|
||||
value NOTATION (DATE-TIME | DATE) "DATE-TIME">
|
||||
|
||||
<!ELEMENT related-to (#PCDATA)>
|
||||
<!ATTLIST related-to
|
||||
%attr.reltype;
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
|
||||
<!ELEMENT url EMPTY>
|
||||
<!ATTLIST url
|
||||
uri ENTITY #REQUIRED>
|
||||
|
||||
<!ELEMENT uid (#PCDATA)>
|
||||
<!ATTLIST uid
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
|
||||
<!-- Recurrence component property element type declarations -->
|
||||
|
||||
<!ELEMENT exdate (#PCDATA)>
|
||||
<!ATTLIST exdate
|
||||
%attr.tzid;
|
||||
value NOTATION (DATE-TIME | DATE) "DATE-TIME">
|
||||
|
||||
<!ELEMENT exrule (#PCDATA)>
|
||||
<!ATTLIST exrule
|
||||
value NOTATION (RECUR) #IMPLIED>
|
||||
|
||||
<!ELEMENT rdate (#PCDATA)>
|
||||
<!ATTLIST rdate
|
||||
%attr.tzid;
|
||||
value NOTATION (DATE-TIME | DATE) "DATE-TIME">
|
||||
|
||||
<!ELEMENT rrule (#PCDATA)>
|
||||
<!ATTLIST rrule
|
||||
value NOTATION (RECUR) #IMPLIED>
|
||||
|
||||
<!-- Alarm component property element type declarations -->
|
||||
|
||||
<!ELEMENT action (#PCDATA)>
|
||||
<!ATTLIST action
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
<!-- Text value must be a valid enumeration -->
|
||||
|
||||
<!ELEMENT repeat (#PCDATA)>
|
||||
<!ATTLIST repeat
|
||||
value NOTATION (INTEGER) #IMPLIED>
|
||||
|
||||
<!ELEMENT trigger (#PCDATA)>
|
||||
<!-- <!ATTLIST trigger
|
||||
%attr.related-to;
|
||||
value NOTATION (DURATION | DATE-TIME) "DURATION"> -->
|
||||
|
||||
<!-- Change management component property element type -->
|
||||
<!-- declarations -->
|
||||
|
||||
<!ELEMENT created (#PCDATA)>
|
||||
<!ATTLIST created
|
||||
value NOTATION (DATE-TIME) #IMPLIED>
|
||||
|
||||
<!ELEMENT dtstamp (#PCDATA)>
|
||||
<!ATTLIST dtstamp
|
||||
value NOTATION (DATE-TIME) #IMPLIED>
|
||||
|
||||
<!ELEMENT last-modified (#PCDATA)>
|
||||
<!ATTLIST last-modified
|
||||
value NOTATION (DATE-TIME) #IMPLIED>
|
||||
|
||||
<!ELEMENT sequence (#PCDATA)>
|
||||
<!ATTLIST sequence
|
||||
value NOTATION (INTEGER) #IMPLIED>
|
||||
|
||||
<!-- Miscellaneous component property element type declarations -->
|
||||
|
||||
|
||||
|
||||
<!ELEMENT request-status (#PCDATA)>
|
||||
<!ATTLIST request-status
|
||||
%attr.language;
|
||||
value NOTATION (TEXT) #IMPLIED>
|
||||
|
||||
<!-- iCalendar object element type declarations -->
|
||||
|
||||
<!ELEMENT iCalendar (vcalendar+)>
|
||||
|
||||
<!ELEMENT vcalendar (%cal.comp;)*>
|
||||
<!ATTLIST vcalendar
|
||||
%attr.language;
|
||||
xmlns CDATA #FIXED 'http://www.ietf.org/internet-drafts/draft-ietf-calsch-many-xcal-00.txt'
|
||||
calscale CDATA "GREGORIAN"
|
||||
method CDATA "PUBLISH"
|
||||
version CDATA #REQUIRED
|
||||
prodid CDATA #IMPLIED>
|
||||
<!-- version - Must be "2.0" if document conforms to this spec. -->
|
||||
<!-- calscale - Calendar scale. Default is GREGORIAN. -->
|
||||
<!-- method - C&S method. Default is iTIP PUBLISH. -->
|
||||
<!-- prodid - ISO 9070 FPI for product that generated iCalendar. -->
|
||||
|
||||
<!-- "vevent" element type declaration -->
|
||||
<!ELEMENT vevent ((%vevent.opt1;)*, (%vevent.optm;)*, valarm*)>
|
||||
|
||||
<!-- "vtodo" element type declaration -->
|
||||
<!ELEMENT vtodo ((%vtodo.opt1;)*, (%vtodo.optm;)*, valarm*)>
|
||||
|
||||
<!-- "vjournal" element type declaration -->
|
||||
<!ELEMENT vjournal ((%vjournal.opt1;)*, (%vjournal.optm;)*)>
|
||||
|
||||
<!-- "vfreebusy" element type declaration -->
|
||||
<!ELEMENT vfreebusy ((%vfreebusy.opt1;)*, (%vfreebusy.optm;)*)>
|
||||
|
||||
<!-- "vtimezone" element type declaration -->
|
||||
<!ELEMENT vtimezone (%vtimezone.man;, (%vtimezone.opt1;)*,
|
||||
(%vtimezone.mann;)*)>
|
||||
|
||||
<!ELEMENT standard (((%standard.man;)*), (%standard.optm;)*)>
|
||||
|
||||
<!ELEMENT daylight (((%daylight.man;)*), (%daylight.optm;)*)>
|
||||
|
||||
<!ELEMENT valarm ((%valarm.audio;) | (%valarm.display;) |
|
||||
(%valarm.email;) | (%valarm.procedure;))>
|
||||
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:date="http://exslt.org/dates-and-times"
|
||||
xmlns:crypto="http://exslt.org/crypto"
|
||||
exclude-result-prefixes="xsl crypto date">
|
||||
|
||||
<xsl:output method="xml"
|
||||
version="1.0"
|
||||
encoding="utf-8"
|
||||
doctype-public="-//IETF//DTD XCAL//iCalendar XML//EN"
|
||||
doctype-system="DTD/xcal.dtd"
|
||||
indent="yes"/>
|
||||
|
||||
<xsl:include href="date.xsl"/>
|
||||
|
||||
<xsl:variable name="baseurl">https://www.c3d2.de/</xsl:variable>
|
||||
|
||||
<xsl:template match="news">
|
||||
<iCalendar>
|
||||
<vcalendar method="PUBLISH" version="2.0" prodid="-//HandGen//NONSGML vGen v1.0//EN">
|
||||
<xsl:for-each select="newsfile">
|
||||
<xsl:sort select="date:seconds(document(.)/item/@date)" data-type="number" order="descending" />
|
||||
|
||||
<xsl:if test="document(.)/item/event">
|
||||
<xsl:apply-templates select="document(.)/item">
|
||||
<xsl:with-param name="newsfile" select="."/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:if>
|
||||
|
||||
</xsl:for-each>
|
||||
</vcalendar>
|
||||
</iCalendar>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="item">
|
||||
<xsl:param name="newsfile"/>
|
||||
|
||||
<vevent>
|
||||
|
||||
<uid><xsl:value-of select="crypto:sha1(concat(@title,@date))"/>@www.c3d2.de</uid>
|
||||
|
||||
<dtstamp>
|
||||
<xsl:call-template name="date-to-hevent">
|
||||
<xsl:with-param name="date" select="@date"/>
|
||||
</xsl:call-template>
|
||||
</dtstamp>
|
||||
|
||||
<dtstart>
|
||||
<xsl:call-template name="date-to-hevent">
|
||||
<xsl:with-param name="date" select="event/start"/>
|
||||
</xsl:call-template>
|
||||
</dtstart>
|
||||
|
||||
<xsl:if test="event/end">
|
||||
<dtend>
|
||||
<xsl:call-template name="date-to-hevent">
|
||||
<xsl:with-param name="date" select="event/end"/>
|
||||
</xsl:call-template>
|
||||
</dtend>
|
||||
</xsl:if>
|
||||
|
||||
<summary><xsl:value-of select="@title"/></summary>
|
||||
|
||||
<location><xsl:value-of select="event/location"/></location>
|
||||
|
||||
<categories>
|
||||
<item><xsl:value-of select="@category"/></item>
|
||||
</categories>
|
||||
|
||||
</vevent>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
|
@ -224,7 +224,7 @@
|
|||
</xsl:for-each>
|
||||
|
||||
<p>
|
||||
Die Neuigkeiten des C3D2 sind auch als <a href="{$baseurl}news-atom.xml">ATOM</a> und <a href="{$baseurl}news-rss.xml">RSS</a> abrufbar.
|
||||
Die Neuigkeiten des C3D2 sind auch als <a href="{$baseurl}news-atom.xml">ATOM</a> und <a href="{$baseurl}news-rss.xml">RSS</a>, die Veranstaltungen als <a href="{$baseurl}xcal.xml">XCal</a> abrufbar.
|
||||
Mehr News gibts im <a href="{$baseurl}news-archiv.html">Archiv</a>.
|
||||
</p>
|
||||
</xsl:template>
|
||||
|
|
Loading…
Reference in New Issue