www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 3f9e9d0cf4d1fb1953a85df1f1fcebe8b91b16f1
parent d21494ad2dfff17b64c618a4f28b6b473504ac91
Author: Dan Stillman <dstillman@zotero.org>
Date:   Wed, 27 May 2009 08:07:16 +0000

Look for explicit Dublin Core prefix, in the unlikely event that any pages don't use "DC."


Diffstat:
Mtranslators/Embedded RDF.js | 45++++++++++++++++++++++++++++++++++++---------
1 file changed, 36 insertions(+), 9 deletions(-)

diff --git a/translators/Embedded RDF.js b/translators/Embedded RDF.js @@ -8,15 +8,42 @@ "maxVersion":"", "priority":400, "inRepository":true, - "lastUpdated":"2009-05-27 05:25:00" + "lastUpdated":"2009-05-27 08:06:05" +} + +var _prefix; +var _dc = "http://purl.org/dc/elements/1.1/"; + +function getDCPrefix(doc) { + if(_prefix) { + return _prefix; + } + + var links = doc.getElementsByTagName("link"); + for(var i=0; i<links.length; i++) { + if(links[i].getAttribute("href") == _dc) { + var rel = links[i].getAttribute("rel"); + var matches = rel.match(/^schema\.([a-zA-Z]+)/); + if(matches) { + _prefix = matches[1].toLowerCase() + "."; + } + break; + } + } + if(!_prefix) { + _prefix = "dc."; + } + return _prefix; } function detectWeb(doc, url) { + var prefix = getDCPrefix(doc); + if (url.indexOf("reprint") != -1) return false; var metaTags = doc.getElementsByTagName("meta"); for(var i=0; i<metaTags.length; i++) { var tag = metaTags[i].getAttribute("name"); - if(tag && tag.substr(0, 3).toLowerCase() == "dc.") { + if(tag && tag.substr(0, 3).toLowerCase() == prefix) { return "webpage"; } } @@ -25,8 +52,8 @@ function detectWeb(doc, url) { } function doWeb(doc, url) { - var dc = "http://purl.org/dc/elements/1.1/"; - + var prefix = getDCPrefix(doc); + // load RDF translator, so that we don't need to replicate import code var translator = Zotero.loadTranslator("import"); translator.setTranslator("5e3ad958-ac79-463d-812b-a86a9235c28f"); @@ -46,20 +73,20 @@ function doWeb(doc, url) { for(var i=0; i<metaTags.length; i++) { var tag = metaTags[i].getAttribute("name"); var value = metaTags[i].getAttribute("content"); - if(tag && value && tag.substr(0, 3).toLowerCase() == "dc.") { + if(tag && value && tag.substr(0, 3).toLowerCase() == prefix) { if(tag == "dc.title") { foundTitle = true; } - rdf.Zotero.RDF.addStatement(url, dc + tag.substr(3).toLowerCase(), value, true); + rdf.Zotero.RDF.addStatement(url, _dc + tag.substr(3).toLowerCase(), value, true); } else if(tag && value && (tag == "author" || tag == "author-personal")) { - rdf.Zotero.RDF.addStatement(url, dc + "creator", value, true); + rdf.Zotero.RDF.addStatement(url, _dc + "creator", value, true); } else if(tag && value && tag == "author-corporate") { - rdf.Zotero.RDF.addStatement(url, dc + "creator", value, true); + rdf.Zotero.RDF.addStatement(url, _dc + "creator", value, true); } } if (!foundTitle) { - rdf.Zotero.RDF.addStatement(url, dc + "title", doc.title, true); + rdf.Zotero.RDF.addStatement(url, _dc + "title", doc.title, true); } rdf.defaultUnknownType = "webpage"; rdf.doImport();