Navigando nell’EPUB CFI
Avevo promesso di dare qualche feedback sugli EPUB CFI. Le specifiche degli EPUB Canonical Fragment Identifier non brillano per chiarezza, e parrebbe che nemmeno in IDPF siano particolarmente felici per questa particolare specifica di EPUB3.Cosa dovrebbero permettere di fare i CFI in pratica?
Si tratta di una specifica che dovrebbe permettere di identificare una precisa zona testuale (e non) di un ePub. Non un link a un file o a un id, ma il puntamento o la selezione di una parte di un paragrafo o altro. Il puntamento può essere effettuato dall’interno dell’ePub, o dall’esterno: è quindi in teoria possibile per un software/biblioteca di ePub andare a prelevare, leggere, confrontare brani di diversi ePub, così come fornire all’esterno riferimenti precisi ai contenuti di più ePub, magari gestiti in rete. Non mi pare invece ancora possibile interrogare un ePub a partire da un altro ePub. La sintassi è complessa e parte dallaspine
dell’ePub. Si lavora a saltelli. Ogni elemento della DOM viene numerato in maniera crescente, secondo alcune regole che riassume bene Matt Garrish nel suo blog, dopo di che si saltella tra gli elementi del package
fino alla spine
, e poi all’interno di questi fino al file nel quale è contenuto il testo che ci interessa selezionare.
La sintassi è qualcosa del tipo: content.opf#epubcfi(/6/4!)
Ovvero: vai al quarto elemento figlio del sesto elemento contenuto nel file content.opf (il quarto elemento corrisponde in realtà al secondo tag figlio, e il sesto elemento al terzo tag figlio: lo schema del surriportato link di Matt chiarisce bene le regole per un buon conteggio).
Il punto esclamativo significa, e poi fai un salto grosso. Dove? Dentro al file selezionato nella spine dell’ePub.
A questo punto il gioco dei saltelli continua, e si inseriscono dopo il punto esclamativo i successivi salti nella dom, fino al punto esatto che si vuole individuale, o – se si usa un range – alla porzione testuale che si vuole selezionare. Un esempio di CFI corretto potrebbe essere: content.opf#epubcfi(/6/4!/4/4/2/1:5)
. I saltelli prima del punto esclamativo ci portano fino alla spine
, in corrispondenza del capitolo in cui vogliamo andare. Quelli successivi al punto esclamativo iniziano a saltellare dentro il capitolo in questione, andando esattamente nel punto desiderato.