GOAL out { resource [ "stdout:", "html" ], div[ class="block", h2[ "Past Sessions" ], all div[ h3[ attributes { id{ &join(var PYear,"-",var PMonth, "-",var PDay, "-",var PStartTime)} } , &join(var PYear,"-",var PMonth,"-",var PDay, ": "), a[ attributes { href {&join(var PYear,"-",var PMonth, "-",var PDay, "-",var PStartTime) } }, rel="bookmark", title="Permanent Link to Entry!", var PTitle], &join(", ", var PSpeaker) ], p [ span[ class="time", &join(var PStartTime, "-", var PEndTime)], span[ class="location" ]], optional p [ class="abstract", var PAbstract ], div[ class="details", span[ class="location" ], " | ", span[ class="time", &join(var PStartTime, "-", var PEndTime)], " | ", optional span[ class="modification", "Last modified at ", var PUpdated], " | ", optional span[ class="category", "Filed Under: ", var PType ] ] ] order by lexical [ PYear, PMonth, PDay, PStartTime ] descending, ] } FROM ns-prefix atom = "http://www.w3.org/2005/Atom" ns-prefix gd = "http://schemas.google.com/g/2005" in { resource [ "http://www.google.com/calendar/feeds/sc1lgv2s0nqgktgn9rdneilv6g%40group.calendar.google.com/public/full?start-max=2008-05-15T05:20:29", "Xml" ], atom:feed {{ atom:entry {{ atom:title {{ var PTitle }}, gd:when {{ attributes {{ atom:startTime{ /^(var PYear ->[0-9]{4})-(var PMonth ->[0-9]{2})-(var PDay ->[0-9]{2})T(var PStartTime ->[0-9]{2}:[0-9]{2}):[0-9]{2}/}, atom:endTime{ /^.*T(var PEndTime ->[0-9]{2}:[0-9]{2}):[0-9]{2}/ } }} }}, atom:content {{ /^.*Speaker:( ?)(var PSpeaker ->.+)Type:( ?)(var PType ->.+)Abstract:( ?)(var PAbstract ->.{0,250})/ }}, optional atom:updated {{ /^(var PUpdated ->[0-9]{4}-[0-9]{2}-[0-9]{2})/ }} }} }} } END