Skip to content
This repository was archived by the owner on May 7, 2025. It is now read-only.

DOMParser utility (XML v1.1) #483

Open
wants to merge 16 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion epub_content/accessible_epub_3/EPUB/bk01-toc.xhtml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en"
lang="en">
Expand Down
2 changes: 1 addition & 1 deletion epub_content/accessible_epub_3/EPUB/ch01.xhtml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en" lang="en">
<head>
Expand Down
2 changes: 1 addition & 1 deletion epub_content/accessible_epub_3/EPUB/index.xhtml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en" lang="en">
<head>
Expand Down
2 changes: 1 addition & 1 deletion epub_content/accessible_epub_3/EPUB/package.opf
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<?xml version="1.1" encoding="utf-8" standalone="no"?>
<package xmlns="http://www.idpf.org/2007/opf" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/" version="3.0" xml:lang="en"
unique-identifier="pub-identifier">
Expand Down
2 changes: 1 addition & 1 deletion epub_content/epub_library.opds
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.1" encoding="UTF-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:odl="http://opds-spec.org/odl" xml:lang="en" xmlns:dcterms="http://purl.org/dc/terms/" xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:opds="http://opds-spec.org/2010/catalog">

<id>READIUM_OPDS_0123456789</id>
Expand Down
12 changes: 6 additions & 6 deletions src/js/EpubLibrary.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ define([
'Analytics',
'./Keyboard',
'./versioning/ReadiumVersioning',
'readium_shared_js/helpers'],
'readium_shared_js/helpers',
'readium_shared_js/XmlParse'],

function(
moduleConfig,
Expand All @@ -46,7 +47,8 @@ Messages,
Analytics,
Keyboard,
Versioning,
Helpers){
Helpers,
XmlParse){

var detailsDialogStr = DetailsDialog({strings: Strings});

Expand Down Expand Up @@ -190,8 +192,7 @@ Helpers){
$.get(urlContainerXml, function(data){

if(typeof(data) === "string" ) {
var parser = new window.DOMParser;
data = parser.parseFromString(data, 'text/xml');
data = XmlParse.fromString(data, "text/xml");
}
var $rootfile = $('rootfile', data);
var rootFilePath = $rootfile.attr('full-path');
Expand Down Expand Up @@ -255,8 +256,7 @@ Helpers){
// $.get(epub.rootUrl + "/META-INF/container.xml", function(data){

// if(typeof(data) === "string" ) {
// var parser = new window.DOMParser;
// data = parser.parseFromString(data, 'text/xml');
// data = XmlParse.fromString(data, "text/xml");
// }
// var $rootfile = $('rootfile', data);
// epub.packagePath = $rootfile.attr('full-path');
Expand Down
5 changes: 2 additions & 3 deletions src/js/EpubLibraryManager.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
define(['jquery', './ModuleConfig', './PackageParser', './workers/WorkerProxy', 'StorageManager', 'i18nStrings', 'URIjs', './EpubLibraryOPDS'], function ($, moduleConfig, PackageParser, WorkerProxy, StorageManager, Strings, URI, EpubLibraryOPDS) {
define(['jquery', './ModuleConfig', './PackageParser', './workers/WorkerProxy', 'StorageManager', 'i18nStrings', 'URIjs', './EpubLibraryOPDS', 'readium_shared_js/XmlParse'], function ($, moduleConfig, PackageParser, WorkerProxy, StorageManager, Strings, URI, EpubLibraryOPDS, XmlParse) {

var LibraryManager = function(){
};
Expand Down Expand Up @@ -107,8 +107,7 @@ define(['jquery', './ModuleConfig', './PackageParser', './workers/WorkerProxy',
$.get(packageUrl, function(data){

if(typeof(data) === "string" ) {
var parser = new window.DOMParser;
data = parser.parseFromString(data, 'text/xml');
data = XmlParse.fromString(data, "text/xml");
}
var jsonObj = PackageParser.parsePackageDom(data, packageUrl);
jsonObj.coverHref = jsonObj.coverHref ? self._getFullUrl(packageUrl, jsonObj.coverHref) : undefined;
Expand Down
10 changes: 5 additions & 5 deletions src/js/EpubLibraryOPDS.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
define([
'./ModuleConfig',
'jquery',
'readium_shared_js/helpers',
'URIjs'
'URIjs',
'readium_shared_js/XmlParse'
],

function(
moduleConfig,
$,
Helpers,
URI){
URI,
XmlParse){

var processOPDS = function(opdsURL, data, dataSuccess, dataFail) {

Expand Down Expand Up @@ -64,7 +64,7 @@ URI){
}

if (typeof data === "string") {
data = $.parseXML(data);
data = XmlParse.fromString(data, "text/xml");
}

$xml = $(data);
Expand Down
38 changes: 27 additions & 11 deletions src/js/EpubReader.js
Original file line number Diff line number Diff line change
Expand Up @@ -308,32 +308,44 @@ BookmarkData){
var tocNav;

var $navs = $('nav', dom);
Array.prototype.every.call($navs, function(nav){
if (nav.getAttributeNS('http://www.idpf.org/2007/ops', 'type') == 'toc'){
Array.prototype.every.call($navs, function(nav) {

var attr = Helpers.getEpubTypeRoleAttributeValue(nav);

if (attr && ((attr.indexOf('toc') >= 0) || (attr.indexOf('doc-toc') >= 0))) { // TODO: tighter regexp check, with token-separated values (space character? depends on EPUB3 epub:type vs. ARIA role?)
tocNav = nav;
return false;
}

return true;
});

var isRTL = false;
var pparent = tocNav;

while (pparent && pparent.getAttributeNS)
while (pparent)
{
var dir = pparent.getAttributeNS("http://www.w3.org/1999/xhtml", "dir") || pparent.getAttribute("dir");

var dir = undefined;
if (pparent.getAttributeNS) {
dir = pparent.getAttributeNS("http://www.w3.org/1999/xhtml", "dir");
}
if (!dir) {
if (pparent.getAttribute) {
dir = pparent.getAttribute("dir");
}
}

if (dir && dir === "rtl")
{
isRTL = true;
break;
}

pparent = pparent.parentNode;
}

var toc = (tocNav && $(tocNav).html()) || $('body', dom).html() || $(dom).html();
var tocUrl = currentPackageDocument.getToc();


if (toc && toc.length)
{
var $toc = $(toc);
Expand Down Expand Up @@ -375,7 +387,7 @@ BookmarkData){
}

} else {
var tocUrl = currentPackageDocument.getToc();
var tocUrl = currentPackageDocument.getTocURI();

$('#readium-toc-body').append("?? " + tocUrl);
}
Expand Down Expand Up @@ -520,13 +532,17 @@ BookmarkData){
{
try {
spin(true);

var href = $(this).attr('href');

//var tocUrl = currentPackageDocument.getTocURI();
//href = tocUrl ? new URI(href).absoluteTo(tocUrl).toString() : href;

_tocLinkActivated = true;

readium.reader.openContentUrl(href, tocUrl, undefined);
var tocHref = currentPackageDocument.getToc();

readium.reader.openContentUrl(href, tocHref, undefined);

if (embedded) {
$('.toc-visible').removeClass('toc-visible');
Expand Down
3 changes: 2 additions & 1 deletion src/js/workers/EpubLibraryWriter.js
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@ define(['StorageManager', '../storage/ZipFileLoader', '../storage/UnpackedDirLoa
this.fileLoader.loadFile(path, function(blob){
if (blob){
fileReader.onload = function() {
// var xmlDom = (new DOMParser()).parseFromString(this.result, "text/xml");
// readium_shared_js/XmlParse
// var xmlDom = XmlParse.fromString(this.result, "text/xml");
callback(this.result);
};

Expand Down
8 changes: 4 additions & 4 deletions src/js/workers/WorkerProxy.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
define(['../ModuleConfig', './Messages', 'jquery', '../PackageParser', 'readium_js/epub-fetch/encryption_handler'], function(moduleConfig, Messages, $, PackageParser, EncryptionHandler){
define(['../ModuleConfig', './Messages', 'jquery', '../PackageParser', 'readium_js/epub-fetch/encryption_handler', 'readium_shared_js/XmlParse'], function(moduleConfig, Messages, $, PackageParser, EncryptionHandler, XmlParse){

var worker;
var cleanupWorker = function(){
Expand Down Expand Up @@ -60,7 +60,7 @@ define(['../ModuleConfig', './Messages', 'jquery', '../PackageParser', 'readium_
}
break;
case Messages.FIND_PACKAGE:
var containerDom = (new DOMParser()).parseFromString(data.containerStr, "text/xml");
var containerDom = XmlParse.fromString(data.containerStr, "text/xml");
var $rootfile = $('rootfile', containerDom);
if (!$rootfile.length){
error(Messages.ERROR_EPUB);
Expand All @@ -71,7 +71,7 @@ define(['../ModuleConfig', './Messages', 'jquery', '../PackageParser', 'readium_
}
break;
case Messages.PARSE_PACKAGE:
var packageDom = (new DOMParser()).parseFromString(data.packageStr, "text/xml");
var packageDom = XmlParse.fromString(data.packageStr, "text/xml");
var errors = $(packageDom).find('parsererror');
if (errors.length) {
error(Messages.ERROR_PACKAGE_PARSE, $(errors).find('div').text());
Expand All @@ -82,7 +82,7 @@ define(['../ModuleConfig', './Messages', 'jquery', '../PackageParser', 'readium_

var encryptionData;
if(data.encryptionStr) {
var encryptionDom = (new DOMParser()).parseFromString(data.encryptionStr, "text/xml");
var encryptionDom = XmlParse.fromString(data.encryptionStr, "text/xml");

encryptionData = EncryptionHandler.CreateEncryptionData(packageObj.id, encryptionDom);
}
Expand Down