e-book in formato ePub, standard e store digitali

Image by HowardWilks available on Pixabay. Relased with a CC0 license.

Di recente mi sono accorto di una cosa abbastanza sconcertante riguardo gli e-book e la loro validazione in alcuni store. Ma prima di discutere della mia “scoperta” vi devo spiegare alcune cose.

Cos’è una validazione di un e-book? Dovete sapere che l’e-book in formato ePub è un file compresso di formato ZIP al cui interno ci sono cartelle, file HTML/XHTML e CSS. La validazione serve per fare in modo che questo insieme di dati sia coerente con lo standard ePub, ovvero con le regole che si usano per creare il file ePub.

Un e-book validato è la base di partenza per pubblicare e-book. Questo perché un programma che visualizza l’e-book si aspetta un formato corretto, anche se oramai si sa bene che non tutti gli e-book riescono col buco e quindi il programma di visualizzazione di un e-book si deve “adattare” anche ad e-book non validati e con errori vari. Se ha modo di aggirare il problema, allora visualizzerà il contenuto dell’e-book senza che il lettore si accorga di questi problemi. Se non ci riesce potrebbe “dare i numeri”, ovvero produrre comportamenti non previsti e, a tal punto, evidenti al lettore.

Ho comprato degli e-book di recente e mi è venuta l’idea di passare il file nel validatore ePub. A quel punto ero convinto che chi avesse messo a disposizione l’e-book non conoscesse nemmeno le regole base per fare un e-book, oppure usasse qualche strano software per produrli. Qualcuno mi ha messo, però, una pulce nell’orecchio e mi sono spinto a verificare anche i miei e-book. Di solito quando pubblico in uno store mi capita di comprare anche il mio e-book per essere sicuro del lavoro finale fatto, oppure per verificare alcune funzionalità.

Ebbene, scaricando la versione acquistata dallo store di “Le parole confondono”, file aggiornato più o meno un anno fa sullo store, e confrontandola con quella che io ho caricato ho scoperto che lo store modifica gli e-book che mette in vendita rendendoli non più validati.

Questo è ciò che il controllo di validazione ha verificato sul mio file originale:

$ ./check-epub.sh giovanni_venturi_le_parole_confondono.epub
Controllo secondo le regole per EPUB versione 2.0.1.
Non sono stati trovati errori o potenziali errori.
Controllo completato.

E questo, invece, è ciò che il controllo di validazione ha trovato sul file scaricato dallo store:

$ ./check-epub.sh Le_parole_confondono.epub
Controllo secondo le regole per EPUB versione 2.0.1.
ERROR(RSC-005): Le_parole_confondono.epub/OEBPS/volume.opf(58,42): È occorso un errore durante la lettura del file: trovato attributo "page-map", non permesso per l'elemento . Ammesso solo l'attributo "id".
ERROR(RSC-005): Le_parole_confondono.epub/OEBPS/Text/copertina.xhtml(25,23): È occorso un errore durante la lettura del file: elemento "a" non ammesso in questo punto . Atteso tag di chiusura dell'elemento o elemento "address", "blockquote", "del", "div", "dl", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "ins", "noscript", "ns:svg", "ol", "p", "pre", "script", "table" o "ul" (con xmlns:ns="http://www.w3.org/2000/svg").
ERROR(RSC-005): Le_parole_confondono.epub/OEBPS/Text/copertina.xhtml(25,329): È occorso un errore durante la lettura del file: trovato attributo "alt", non permesso per l'elemento . Ammesso solo l'attributo "class", "clip", "clip-path", "clip-rule", "color", "color-interpolation", "color-profile", "color-rendering", "cursor", "display", "externalResourcesRequired", "fill-opacity", "filter", "id", "image-rendering", "mask", "ns:actuate", "ns:arcrole", "ns:role", "ns:show", "ns:title", "ns:type", "onactivate", "onclick", "onfocusin", "onfocusout", "onload", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "opacity", "overflow", "pointer-events", "preserveAspectRatio", "requiredExtensions", "requiredFeatures", "shape-rendering", "stroke-opacity", "style", "systemLanguage", "text-rendering", "transform", "visibility", "x", "xml:base", "xml:lang", "xml:space" o "y" (con xmlns:ns="http://www.w3.org/1999/xlink").
ERROR(RSC-005): Le_parole_confondono.epub/OEBPS/Text/copertina.xhtml(25,355): È occorso un errore durante la lettura del file: elemento "a" non ammesso in questo punto . Atteso tag di chiusura dell'elemento o elemento "address", "blockquote", "del", "div", "dl", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "ins", "noscript", "ns:svg", "ol", "p", "pre", "script", "table" o "ul" (con xmlns:ns="http://www.w3.org/2000/svg").
ERROR(HTM-004): Le_parole_confondono.epub/OEBPS/Text/titolo.xhtml(-1,-1): È stato trovato un 'DOCTYPE' errato: '-//W3C//DTD XHTML 1.0 Strict//EN' mentre era atteso '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'.
ERROR(HTM-004): Le_parole_confondono.epub/OEBPS/Text/copyright.xhtml(-1,-1): È stato trovato un 'DOCTYPE' errato: '-//W3C//DTD XHTML 1.0 Strict//EN' mentre era atteso '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'.
...
ERROR(HTM-004): Le_parole_confondono.epub/OEBPS/Text/cap-22.xhtml(-1,-1): È stato trovato un 'DOCTYPE' errato: '-//W3C//DTD XHTML 1.0 Strict//EN' mentre era atteso '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'.
ERROR(HTM-004): Le_parole_confondono.epub/OEBPS/Text/ringraziamenti.xhtml(-1,-1): È stato trovato un 'DOCTYPE' errato: '-//W3C//DTD XHTML 1.0 Strict//EN' mentre era atteso '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'.
ERROR(HTM-004): Le_parole_confondono.epub/OEBPS/Text/l-autore.xhtml(-1,-1): È stato trovato un 'DOCTYPE' errato: '-//W3C//DTD XHTML 1.0 Strict//EN' mentre era atteso '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'.
ERROR(HTM-004): Le_parole_confondono.epub/OEBPS/Text/altre-pubblicazioni.xhtml(-1,-1): È stato trovato un 'DOCTYPE' errato: '-//W3C//DTD XHTML 1.0 Strict//EN' mentre era atteso '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'.

Sono stati rilevati errori.

Controllo completato.

A quel punto mi era chiaro che il problema che avevo riscontrato su alcuni autori ed editori non era un problema loro, come non lo è mio sui miei file, se una piattaforma modifica ciò che noi carichiamo per motivi arcani. Il fatto è che renderlo non validato è un po’ tanto strano. Se qualcun altro fa il mio stesso ragionamento iniziale, ovvero che l’e-book dell’editore o dell’autore non è validato perché lui non lo sa fare capirete le ore perse ad assicurarmi che tutto sia corretto, vanno a farsi benedire, oltre che la mia reputazione, io che sono un tipo pignolo e preciso sulla questione della validazione e sul contenuto del codice che costituisce l’e-book.

Vediamo meglio questi errori.

Il primo dice:

ERROR(RSC-005): Le_parole_confondono.epub/OEBPS/volume.opf(58,42): È occorso un errore durante la lettura del file: trovato attributo "page-map", non permesso per l'elemento . Ammesso solo l'attributo "id".

Vediamo la riga corrispondete nel mio mio file giovanni_venturi_le_parole_confondono.epub/OEBPS/volume.opf:

<spine toc="ncx">

e in Le_parole_confondono.epub/OEBPS/volume.opf:

<spine page-map="_page_map_" toc="ncx">

Effettivamente hanno inserito quel:

page-map="_page_map_"

Che non ci deve stare.

Altri errori:

ERROR(RSC-005): Le_parole_confondono.epub/OEBPS/Text/copertina.xhtml(25,23): È occorso un errore durante la lettura del file: elemento "a" non ammesso in questo punto . Atteso tag di chiusura dell'elemento o elemento "address", "blockquote", "del", "div", "dl", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "ins", "noscript", "ns:svg", "ol", "p", "pre", "script", "table" o "ul" (con xmlns:ns="http://www.w3.org/2000/svg").
ERROR(RSC-005): Le_parole_confondono.epub/OEBPS/Text/copertina.xhtml(25,329): È occorso un errore durante la lettura del file: trovato attributo "alt", non permesso per l'elemento . Ammesso solo l'attributo "class", "clip", "clip-path", "clip-rule", "color", "color-interpolation", "color-profile", "color-rendering", "cursor", "display", "externalResourcesRequired", "fill-opacity", "filter", "id", "image-rendering", "mask", "ns:actuate", "ns:arcrole", "ns:role", "ns:show", "ns:title", "ns:type", "onactivate", "onclick", "onfocusin", "onfocusout", "onload", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "opacity", "overflow", "pointer-events", "preserveAspectRatio", "requiredExtensions", "requiredFeatures", "shape-rendering", "stroke-opacity", "style", "systemLanguage", "text-rendering", "transform", "visibility", "x", "xml:base", "xml:lang", "xml:space" o "y" (con xmlns:ns="http://www.w3.org/1999/xlink").
ERROR(RSC-005): Le_parole_confondono.epub/OEBPS/Text/copertina.xhtml(25,355): È occorso un errore durante la lettura del file: elemento "a" non ammesso in questo punto . Atteso tag di chiusura dell'elemento o elemento "address", "blockquote", "del", "div", "dl", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "ins", "noscript", "ns:svg", "ol", "p", "pre", "script", "table" o "ul" (con xmlns:ns="http://www.w3.org/2000/svg").

Vediamo il mio file copertina.xhtml:

<body>
<h1 id="cover-image"><img alt="Le parole confondono" height="100%" src="../Images/le-parole-confondono-cover-ebook.jpg"/></h1>
</body>

Le righe corrispondenti nel file manipolato:

<body style="margin-top: 0px; margin-left: 0px; margin-right: 0px; margin-bottom: 0px;"><div style="display:none;"><a id="GBS.0001.01"></a></div>
<a id="cover-image"></a><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="99%" viewBox="0 0 600 800" preserveAspectRatio="xMidYMid meet"><image width="600" height="800" xlink:href="../Images/le-parole-confondono-cover-ebook.jpg" alt="Le parole confondono"/></svg><a id="GBS.0002.01"></a>
<div style="display:none;"><a id="GBS.0002.02"></a></div></body>

Hanno inserito più tag A in punti in cui non ci devono stare. Questi tag particolari sono dei segnalibri e sono presenti anche all’interno dei vari capitoli più e più volte, forse servono per scandire il numero di pagine dell’e-book nell’app, non so.

Infine in ogni file XHTML che ho nell’ePub:

ERROR(HTM-004): Le_parole_confondono.epub/OEBPS/Text/titolo.xhtml(-1,-1): È stato trovato un 'DOCTYPE' errato: '-//W3C//DTD XHTML 1.0 Strict//EN' mentre era atteso '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'.

Questa la mia intestazione dei file XHTML:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

Questo è il modo in cui la hanno sostituita:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

Perché? Non saprei.

Lo store aveva anche inizialmente contribuito a creare questo standard ePub per cui non sarei mai andato all’idea che dopo aver preso un file validato (non viene caricato se non è validato al 100%) poi gli si fa perdere la validazione rielaborandolo.

Questa cosa sugli store che vendono ePub si è potuta controllare. Dove non viene usato l’ePub viene buttato tutto sotto al tappeto, il che è pure peggio.

Ma questi file ePub di cui parlo, comprati sullo store, si leggono correttamente anche su lettori diversi dalla loro app di lettura? Sì, e questo è importante, ma perché ci siano specifiche modifiche che rendono un file non più validato non saprei.

In questa faccenda ho colto un elemento importante. Non sempre la prospettiva da cui si guarda è quella corretta. Ero convintissimo che lo store rilasciasse e-book validati, lo davo per scontato, insomma. Ho imparato un’altra cosa. Continuerò a comprare gli e-book sul loro store ma ora so che non devo mai giudicare da ciò che sembra. Bisogna fare controlli incrociati a 360° o magari non farli e basta, non pensare che gli e-book c’è chi li sa fare o no e chi te li vende in formato non validato. Tanto alla fine, per fortuna, il lettore finale tutte queste cose non le vede proprio e, con molta probabilità, non conoscendo HTML/XHTML, nemmeno ha capito di cosa parlo.

Al momento sto leggendo il libro cartaceo “La Zona Extramondo” di Riccardo Pietrano e rileggendo il mio e-book “Certe Incertezze”. Tu cosa leggi di bello?

Se vuoi tenerti in contatto c’è il mio canale Telegram oppure la mia newsletter. Ti puoi iscrivere quando vuoi e cancellare quando vuoi. In particolare ci sarà l’anteprima del primo racconto della raccolta di racconti sul ferragosto quando sarà tutto ultimato.


Scopri di più da Giochi di parole... con le parole

Abbonati per ricevere gli ultimi articoli inviati alla tua e-mail.

2 pensieri su “e-book in formato ePub, standard e store digitali

Scrivi una risposta a giovanni Cancella risposta