Look for explicit Dublin Core prefix, in the unlikely event that any pages don't use "DC."
This commit is contained in:
parent
d21494ad2d
commit
3f9e9d0cf4
1 changed files with 36 additions and 9 deletions
|
@ -8,15 +8,42 @@
|
||||||
"maxVersion":"",
|
"maxVersion":"",
|
||||||
"priority":400,
|
"priority":400,
|
||||||
"inRepository":true,
|
"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) {
|
function detectWeb(doc, url) {
|
||||||
|
var prefix = getDCPrefix(doc);
|
||||||
|
|
||||||
if (url.indexOf("reprint") != -1) return false;
|
if (url.indexOf("reprint") != -1) return false;
|
||||||
var metaTags = doc.getElementsByTagName("meta");
|
var metaTags = doc.getElementsByTagName("meta");
|
||||||
for(var i=0; i<metaTags.length; i++) {
|
for(var i=0; i<metaTags.length; i++) {
|
||||||
var tag = metaTags[i].getAttribute("name");
|
var tag = metaTags[i].getAttribute("name");
|
||||||
if(tag && tag.substr(0, 3).toLowerCase() == "dc.") {
|
if(tag && tag.substr(0, 3).toLowerCase() == prefix) {
|
||||||
return "webpage";
|
return "webpage";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,8 +52,8 @@ function detectWeb(doc, url) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function doWeb(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
|
// load RDF translator, so that we don't need to replicate import code
|
||||||
var translator = Zotero.loadTranslator("import");
|
var translator = Zotero.loadTranslator("import");
|
||||||
translator.setTranslator("5e3ad958-ac79-463d-812b-a86a9235c28f");
|
translator.setTranslator("5e3ad958-ac79-463d-812b-a86a9235c28f");
|
||||||
|
@ -46,20 +73,20 @@ function doWeb(doc, url) {
|
||||||
for(var i=0; i<metaTags.length; i++) {
|
for(var i=0; i<metaTags.length; i++) {
|
||||||
var tag = metaTags[i].getAttribute("name");
|
var tag = metaTags[i].getAttribute("name");
|
||||||
var value = metaTags[i].getAttribute("content");
|
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") {
|
if(tag == "dc.title") {
|
||||||
foundTitle = true;
|
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")) {
|
} 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") {
|
} 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) {
|
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.defaultUnknownType = "webpage";
|
||||||
rdf.doImport();
|
rdf.doImport();
|
||||||
|
|
Loading…
Add table
Reference in a new issue