Skip to content

Commit

Permalink
Merge pull request #29 from readium/hotfix/firefox-xml-package-docume…
Browse files Browse the repository at this point in the history
…nt-parsing

Fix Firefox XML namespace handling incompatibilities in package document parser
  • Loading branch information
bormind committed Mar 24, 2014
2 parents d55521e + 744c68a commit 5e4f0b5
Showing 1 changed file with 23 additions and 8 deletions.
31 changes: 23 additions & 8 deletions epub-modules/epub/src/models/package_document_parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -167,28 +167,43 @@ define(['require', 'module', 'jquery', 'underscore', 'backbone', 'epub-fetch/mar
return jsonSpine;
}

function findXmlElemByLocalNameAnyNS(rootElement, localName) {
return rootElement.getElementsByTagNameNS("*", localName)[0];
}

function getElemText(rootElement, localName) {
var foundElement = findXmlElemByLocalNameAnyNS(rootElement, localName);
if (foundElement) {
return foundElement.textContent;
} else {
return '';
}
}

function getJsonMetadata(xmlDom) {

var $metadata = $("metadata", xmlDom);
var metadataElem = xmlDom.getElementsByTagNameNS("*", "metadata")[0];
var jsonMetadata = {};

jsonMetadata.author = $("creator", $metadata).text();
jsonMetadata.description = $("description", $metadata).text();
jsonMetadata.author = getElemText(metadataElem, "creator");
jsonMetadata.description = getElemText(metadataElem, "description");
// TODO: Convert all jQuery queries (that get confused by XML namespaces on Firefox) to getElementsByTagNameNS().
jsonMetadata.epub_version =
$("package", xmlDom).attr("version") ? $("package", xmlDom).attr("version") : "";
jsonMetadata.id = $("identifier", $metadata).text();
jsonMetadata.language = $("language", $metadata).text();
jsonMetadata.id = getElemText(metadataElem,"identifier");
jsonMetadata.language = getElemText(metadataElem, "language");
jsonMetadata.layout = $("meta[property='rendition:layout']", $metadata).text();
jsonMetadata.modified_date = $("meta[property='dcterms:modified']", $metadata).text();
jsonMetadata.ncx = $("spine", xmlDom).attr("toc") ? $("spine", xmlDom).attr("toc") : "";
jsonMetadata.orientation = $("meta[property='rendition:orientation']", $metadata).text();
jsonMetadata.page_prog_dir = $("spine", xmlDom).attr("page-progression-direction") ?
$("spine", xmlDom).attr("page-progression-direction") : "";
jsonMetadata.pubdate = $("date", $metadata).text();
jsonMetadata.publisher = $("publisher", $metadata).text();
jsonMetadata.rights = $("rights").text();
jsonMetadata.pubdate = getElemText(metadataElem, "date");
jsonMetadata.publisher = getElemText(metadataElem, "publisher");
jsonMetadata.rights = getElemText(metadataElem, "rights");
jsonMetadata.spread = $("meta[property='rendition:spread']", $metadata).text();
jsonMetadata.title = $("title", $metadata).text();
jsonMetadata.title = getElemText(metadataElem, "title");


// Media part
Expand Down

0 comments on commit 5e4f0b5

Please sign in to comment.