woensdag 24 april 2013

10. Sigil tips - check de 'correctheid' van je epub via idpf

Epubs zijn eigenlijk veredelde html-bestanden. Net zoals bij html kunnen er in je epub coderingsfouten zitten.

Er zijn twee manieren om te verifiëren of je epub correct is opgemaakt.

1. via http://validator.idpf.org/
2. via Sigil 

Onderstaande uitleg behandelt de verificatie via een de idpf validator.


Surf naar http://validator.idpf.org/

Klik op de knop 'bladeren'.

Klik op 'validate'.

Als je epub correct is krijg je volgende melding:
 

Als je minder geluk hebt, dan krijg je een lijst van alles dat mis is met je epub:









Let wel: het is niet omdat de validator fouten aangeeft, dat je epub niet werkt in een e-reader.
Veel epubs die zijn gepubliceerd, bevatten html-fouten, maar kunnen perfect gelezen worden.

Check eerst in bijvoorbeeld Adobe Digital Editions of op je eigen e-reader of je epub werkt.
Werkt die niet, ga dan pas over op het oplossen van coderingsfouten in je epub. 
Om dergelijke fouten op te lossen, ga je wel wat html-kennis nodig hebben.
Ken je niks van html? Wanhoop nog niet onmiddellijk. Je moet echt geen computernerd zijn om de basis onder de knie te krijgen. Op W3Schools vind je een Engelstalige cursus: http://www.w3schools.com/html/html_intro.asp

Eens je de basis van html onder de knie hebt, kan je beginnen met je epub te bewerken.
Het belangrijkste dat je moet weten ivm html is dat het werkt met 'tags' en dat er altijd een tag is die opent <tag> en een die sluit </tag>. Wat daartussen komt is de informatie/tekst die je wilt meegeven.

Hieronder een paar voorbeelden hoe je te werk moet gaan om fouten op te lossen.
Het is geen uitgebreide encyclopedie, maar het stramien is  steeds hetzelfde: kijk na op welke regel je moet zoeken in je epub en probeer de html aan te passen.

Problemen met het aanpassen met je html? Roep hulp in van andere mensen op gespecialiseerde forums (zoek bij voorkeur forums die met epubs te maken hebben. Html-mensen weten dikwijls niet wat een epub is).
Vind je geen hulp en geraak je er echt niet aan uit? Helaas, dan zal je je moeten beroepen op professionele firma's en centjes neerleggen.


Voorbeeld 1


In de tweede kolom kan je terugvinden over welk bestand de validator valt. In dit geval 'content.opf'.


Ga naar Sigil en open je epub

In het menu links zie je 'content.opf' staan.

Dubbelklik er op zodat in het middelste scherm het bestand opengaat:


In het foutrapport van de validator kon je terugvinden dat de fout zich bevindt op lijn 5, positie 19






Dit komt overeen met de lijn 5 die je ook in Sigil kan terugvinden:


De validator zegt hierover:
"element "dc:generator" not allowed anywhere; expected element "dc:contributor", "dc:coverage", "dc:creator", "dc:date", "dc:description", "dc:format", "dc:identifier", "dc:language", "dc:publisher", "dc:relation", "dc:rights", "dc:source", "dc:subject", "dc:title", "dc:type" or "meta" or an element from another namespace"

Dat wil zoveel zeggen als: ik ken de code dc:generator niet.
Nu, het dc:generator element is iets dat gewoon wat randinformatie geeft. Je zou er in dit geval dus voor kunnen kiezen om deze lijn gewoon te verwijderen.


Als je de epub opslaat en dan opnieuw door de validator haalt, dan zal de fout verdwenen zijn.

Voorbeeld 2



In sommige gevallen ontbreken bepaalde elementen die wel een toegevoegde waarde hebben voor je epub. De fout in bovenstaand voorbeeld wil zeggen dat de epub niet duidelijk maakt in welke taal je epub is geschreven of wat de titel er van is.

Je gaat in dit geval dus code moeten toevoegen.

Ga opnieuw naar content.opf.
Voeg boven het element  </metadata> een lege lijn toe (door op enter te drukken na de voorgaande lijn).


Type op de lege lijn:
          <dc:language>nl</dc:language>
dc: language maakt duidelijk dat je boek in een bepaalde taal is geschreven.
nl specifieert dat dit in het Nederlands is gebeurd.

Type daaronder nog:
         <dc:title>Hier de titel van je boek</dc:title>



Dit zijn natuurlijk maar twee types van dc-elementen die ontbraken in de epub.
Vernoemt de validator andere dc-elementen en weet je niet wat je juist moet toevoegen aan je opf, open dan eens een epub van een andere auteur en zoek daarin naar de juiste syntaxis.

Andere mogelijke dc-elementen die ontbreken:
     <dc:subject>Technische handleiding ruimtevaartkunde</dc:subject>
     <dc:creator opf:role="aut">Naam auteur</dc:creator>
     <dc:description>Korte samenvatting van het boek.</dc:description>


Voorbeeld 3



Bij deze foutmelding gaat het om een fout in de tekst zelf.
Klik in Sigil op het bestand dat wordt vermeld in de validator.


Text/Section0002.htm in de validator komt overeen in Sigil met:


Dubbelklik op de bestandsnaam om deze in het middelste scherm te openen.
Standaard gaat Sigil het bestand openen in tekst-modus.




Volgens de validator zit de fout op lijn 412.
In tekst-modus krijg je geen regelnummers te zien.
Om te wisselen van modus moet je in de menubalk klikken op de vishaken:


Je krijgt dan de code-modus te zien.
Hier zie je de regelnummers wel.

Ga naar de lijn waarop de fout is terug te vinden.


Volgens de validator is er in bovenstaand voorbeeld de volgende fout terug te vinden op deze lijn:
         attribute "link" not allowed here; expected attribute "class", "dir", "id", "lang", "style", "title" or "xml:lang"

 Link="#00000" wil eigenlijk zeggen dat hyperlinks in je epub in het zwart moeten worden weergegeven. De syntaxis hiervan is echter niet juist. De validator wil je hiervoor 'styles' gebruikt.

Hoe doe je dit?

Verwijder om te beginnen de foute code:








Kijk in je code of je iets dergelijks kunt terugvinden:






Indien ja, voeg dan de volgende lijnen toe:


Kan je geen <style> terugvinden in de code van je bestand, dan ga je die nog zelf moeten toevoegen.
Je moet er wel voor zorgen dat je dit doet boven de afsluitende tag </head>.

Een correcte 'style' begint altijd met de tag <style type="text/css"> en sluit af met </style>.
Daartussen komt dan de stijl je probeert te definiëren.


Randopmerking 1: in dit voorbeeld wordt de stijl toegevoegd in het .htm bestand zelf. Je kan dit ook via externe stylesheets, maar daar gaan we hier niet verder op in.
Randopmerking 2: in dit voorbeeld gaat het over hyperlinks, maar je kan dit ook stijlen definiëren voor hoofdingen, gewone paragrafen, enzoverder... Ook dit is al een stuk geavanceerder. Iemand dit html kent, zal dit echter zonder problemen kunnen toepassen.


Je hebt nog talloze andere fouten die je kunt krijgen als je epub door de validator wordt afgekeurd.
Lees altijd goed wat de validator zegt: gaat het over een verkeerde syntaxis, een onbestaande element,... ? In veel gevallen kun je de foute code gewoon schrappen. In andere gevallen zal je op jacht moeten gaan naar de 'juiste' code.
Meestal geeft de validator zelf aan wat hij verwacht na 'expected atrribute'. Check op W3Schools of je daar ergens informatie over dat bepaalde attribuut kan terugvinden.