{ "translatorID":"add79dfd-7951-4c72-af1d-ce1d50aa4fb4", "translatorType":4, "label":"informIT database", "creator":"Adam Crymble", "target":"http://www.informit.com", "minVersion":"1.0.0b4.r5", "maxVersion":"", "priority":100, "inRepository":true, "lastUpdated":"2008-07-07 14:50:00" } function detectWeb(doc, url) { if (doc.title.match("Search Results")) { return "multiple"; } else if (doc.location.href.match("topics")) { return "multiple"; } else if (doc.location.href.match("product")) { return "book"; } else if (doc.location.href.match("guides")) { return "book"; } else if (doc.location.href.match("library")) { return "bookSection"; } else if (doc.location.href.match(/articles\/article/)) { return "bookSection"; } } //informIT database translator. Code by Adam Crymble function scrape(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { if (prefix == 'x') return namespace; else return null; } : null; var dataTags = new Object(); //FOR GUIDES if (doc.location.href.match("guides")) { var newItem = new Zotero.Item("book"); newItem.title = doc.evaluate('//h1', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent; var authors = doc.evaluate('//div[@class="titling"]/p/a', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent; } //FOR ARTICLES if (doc.location.href.match(/articles\/article/)) { var newItem = new Zotero.Item("bookSection"); var contents = doc.evaluate('//div[@id="articleHeader"]/ul/li', doc, nsResolver, XPathResult.ANY_TYPE, null); var xPathCount = doc.evaluate('count (//div[@id="articleHeader"]/ul/li)', doc, nsResolver, XPathResult.ANY_TYPE, null); var authors = contents.iterateNext().textContent.substr(3); if (doc.evaluate('//div[@class="relatedBook"]/p/a', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { newItem.bookTitle = doc.evaluate('//div[@class="relatedBook"]/p/a', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent; } newItem.date = contents.iterateNext().textContent; var rights1; if (xPathCount.numberValue> 2) { newItem.rights = contents.iterateNext().textContent; } newItem.title = doc.evaluate('//h1', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent; } else if (doc.evaluate('//ul[@class="bibliography"]/li', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { //FOR STORE BOOKS var newItem = new Zotero.Item("book"); var contents = doc.evaluate('//ul[@class="bibliography"]/li', doc, nsResolver, XPathResult.ANY_TYPE, null); var xPathCount = doc.evaluate('count (//ul[@class="bibliography"]/li)', doc, nsResolver, XPathResult.ANY_TYPE, null); for (i=0; i0 && noMoreAuthor != 1) { for (var i = 0; i < authors.length; i++) { newItem.creators.push(Zotero.Utilities.cleanAuthor(authors[i], "author")); } } newItem.url = doc.location.href; if (newItem.publisher) newItem.publisher = Zotero.Utilities.trimInternal(newItem.publisher); newItem.complete(); } function doWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { if (prefix == 'x') return namespace; else return null; } : null; var articles = new Array(); if (detectWeb(doc, url) == "multiple") { var items = new Object(); var next_title; //xPath for Topics pages, else xPaths for regular search pages. if (doc.location.href.match("topics")) { var titles = doc.evaluate('//div[@class="productList articles"]/dl/dt/a', doc, nsResolver, XPathResult.ANY_TYPE, null); } else { var titles = doc.evaluate('//td[3][@class="results"]/ul/li/a', doc, nsResolver, XPathResult.ANY_TYPE, null); var chapters = doc.evaluate('//dt/a', doc, nsResolver, XPathResult.ANY_TYPE, null); } while (next_title = titles.iterateNext()) { items[next_title.href] = next_title.textContent; } if (doc.title.match("Search Results")) { while (next_title = chapters.iterateNext()) { items[next_title.href] = next_title.textContent; } } items = Zotero.selectItems(items); for (var i in items) { articles.push(i); } } else { articles = [url]; } Zotero.Utilities.processDocuments(articles, scrape, function() {Zotero.done();}); Zotero.wait(); }