//
Scraper Description
var prefix = {
rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
dc: 'http://purl.org/dc/elements/1.1/',
ical: 'http://www.w3.org/2000/10/swap/pim/ical#'
};
var expand = function(ns,property) {
return prefix[ns] + property;
};
var namespace = document.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
return (prefix == 'x') ? namespace : null;
} : null;
var getNode = function(document, contextNode, xpath, nsResolver) {
return document.evaluate(xpath, contextNode, nsResolver, XPathResult.ANY_TYPE,null).iterateNext();
}
var cleanString = function(s) {
return utilities.trimString(s);
}
var xpath = '//table[@class="smwtable"][@id="querytable1"]/tbody/tr';
var elmts = utilities.gatherElementsOnXPath(document, document, xpath, nsResolver);
for each (var elmt in elmts) {
try {
uri = cleanString(getNode(document, elmt, './TD[1]/A[1]', nsResolver).href);
function assert (ns, property, selector) {
try {
var ndQ = getNode(document, elmt, selector, nsResolver);
if (ndQ) {
data.addStatement(uri, expand(ns,property), cleanString(ndQ.nodeValue), true);
}
} catch (e) {
log("Error seeking <" + uri + ">'" + property + ": " + e);
}
}
log("scraping: " + uri);
data.addStatement(uri, expand('rdf','type'), expand('ical', 'Vevent'), false);
assert('dc', 'title', './TD[2]/text()[1]');
assert('ical', 'dtstart', './TD[5]/text()[1]');
assert('ical', 'dtend', './TD[6]/text()[1]');
} catch (e) {
log(e);
}
}
//