Professional Documents
Culture Documents
EPUB 3.0, la más reciente revisión del estándar de formato XML de la industria para e-book,
salta a la moderna tecnología web adoptando HTML5 y CSS3. Mantiene su enfoque en kits de
herramientas basados en XML al requerir serialización de XHTML y añadir vocabularios XML
adicionales, como MathML y SVG. EPUB 3 ofrece una variedad de opciones para el desarrollo
de publicaciones nativas digitales avanzadas. En este artículo, aprenda a crear páginas ricas
en diseños utilizando algunos recursos nuevos en EPUB 3.
Introducción
EPUB es el formato XML para libros digitales "reflowable" y publicaciones estandarizadas por el
International Digital Publishing Forum (IDPF). En 2009, EPUB 2 era el formato de eBook de hecho
utilizado por la mayoría de los principales retailers de eBook y sistemas de lectura.
Los archivos EPUB ZIP se empaquetan bajo una estructura bien definida. Cada componente tiene
su propia especificación, y se unen bajo la etiqueta EPUB común:
Especificación de contenedor
Define el método por el cual se empaqueta un documento EPUB.
Publicación EPUB
Incluye todos los metadatos acerca de los contenidos del eBook, incluyendo: manifiesto del
paquete, título básico, metadatos del autor y, —en EPUB 3—, definiciones sobre a cuáles
recursos avanzados la publicación espera dar soporte, como JavaScript o MathML. Esto se
denomina archivo de Open Container Format.
Documentos de contenidos de EPUB
Los actuales archivos XHTML y CSS que componen el contenido de la publicación. Los
documentos de contenidos también incluyen recursos binarios como imágenes, multimedios,
y, potencialmente, documentos XML definidos externamente.
En este artículo se exploran algunos de los recursos de EPUB 3. Usted aprenderá acerca de la
validación de documentos EPUB 3, navegación, jerarquía y directrices de desarrollo. Un ejemplo
describe el proceso de adaptación de una página de un libro para niños en EPUB 3.
Prerrequisitos
El código de muestra y los ejemplos de este artículo suponen un conocimiento básico de la
especificación EPUB 2 y, en general, de las publicaciones basadas en XML. Consulte Recursos
para detalles sobre EPUB 2.
Cambios en EPUB 3
EPUB 2 proporciona todas las capacidades de diseño y formato de HTML4 y CSS2, que son
más que suficientes para publicaciones de texto pesadas. Sin embargo, editores y autores
encontraron que EPUB 2 no podía manejar muchos tipos de contenido y casos de uso, como
libros de multimedios, libros con diseño complejo, publicaciones matemáticas y documentos
interactivos. IDPF y la comunidad de eBook publicaron la especificación para EPUB 3 en octubre
de 2011.
Este artículo incluye técnicas para crear polyfills (shims) inofensivos para producir resultados
compatibles con EPUB 3 aun sin un sistema de lectura EPUB 3 completo.
Se recomienda enfáticamente que utilice la extensión .xhtml para todos los documentos de
contenido de EPUB. Los navegadores no interpretarán el contenido HTML como application/
xhtml+xml sin esa extensión. El modo de procesamiento de XML es necesario al trabajar con
muchos de los recursos demostrados en el presente artículo, como espacios de nombres de CSS.
EpubCheck 3 puede validar un único subcomponente del paquete EPUB individualmente, como
en el Listado1. Este es un recurso muy útil, utilizado en los ejemplos de este artículo, que puede:
• Disminuir la necesidad del tedioso reempaquetado de EPUB en un nuevo ZIP solo para
validarlo.
• Incorporarse en una infraestructura de prueba de unidad para una cadena de herramientas
que genera un tipo de archivo único.
WARNING: sample-toc.xhtml: File is validated as a single file of type nav and version 3!
Only a subset of the available tests is run!
EPUB 3 eliminó el NCX y lo reemplazó por el EPUB Navigational Document (END). El Listado 2
muestra un ejemplo. El END utiliza XHTML5 en vez de un DTD personalizado, reduciendo así
la cantidad de formatos XML a implementar y validar. Los atributos personalizados de EPUB se
suministran mediante los espacios de nombres de EPUB (http://www.idpf.org/2007/ops).
Declarando el END
Incluir el END en una publicación mediante declaración del item en el manifiesto con el valor de
properties de nav, como en el Listado 3.
<item id="toc"
properties="nav"
href="toc.html"
media-type="application/xhtml+xml"/>
<item id="chapter_001"
href="chapter_001.html"
media-type="application/xhtml+xml"/>
...
</manifest>
Para añadir el END al flujo de contenido, sencillamente inclúyalo en spinede OPF, como en Listing
4.
En documentos con jerarquías profundas, como documentación técnica, tal vez desee incluir
todos los niveles de sección en un TOC puramente funcional a la vez que muestra a los usuarios
solo las secciones de primer o segundo nivel en el flujo de contenido. Para ello, se utiliza el
atributo hidden de HTML5, como en el Listado 5, sobre los elementos que deben eliminarse de la
presentación a los usuarios.
Puede que se pregunte por qué no podría hacerlo mediante la propiedad de CSS display: none
. Debido a que EPUB se utiliza en una variedad de sistemas de lectura, incluidos los lectores de
pantalla no visuales o dispositivos Braille, no es necesario que todos los lectores den soporte a
CSS. La mayoría de los navegadores web modernos dan soporte nativo a hidden . Es una buena
idea incluir CSS para configurar explícitamente la propiedad exhibir de estos elementos, como en
el Listado 6. Debido a que el archivo END es solo otro archivo HTML, se puede añadir CSS en el
headde HTML, al igual que con cualquier otra hoja de estilo.
En navegadores que dan soporte a hidden o después de suministrar el shim CSS, la salida se
transforma, como en la Figura 2.
de elementos de la lista debe ser equivalente al CSS list-style: none." Para lograr esta
presentación, añada otra regla al polyfill CSS de EPUB 3, como en el Listado 7.
<xsl:template match="ncx:ncx">
<html>
<head>
<title><xsl:apply-templates select="/ncx:ncx/ncx:docTitle/ncx:text"/></title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
Con el esquema básico establecido, empiece a caminar por la jerarquía de TOC en los elementos
de NCX y salidas XHTML correspondientes. Aunque el NCX permite diferentes tipos de listas de
páginas, los libros EPUB normalmente incluyen solo el ncx:navMap. El extracto de plantilla en el El
Listado 9 muestra como producir un conjunto de nodos desde el ncx:navMap.
<xsl:template match="ncx:navPoint">
<xsl:text>
</xsl:text>
<li>
<xsl:copy-of select="@id|@class"/>
<head>
<meta name="dtb:uid" content="d989d60c-2302-40d1-9c85-1c028414342a" />
<meta name="dtb:depth" content="-1" />
<meta name="dtb:totalPageCount" content="-1" />
<meta name="dtb:maxPageNumber" content="-1" />
</head>
<docTitle>
<text>Middlemarch</text>
</docTitle>
<navMap>
<navPoint id="np1" playOrder="1">
<navLabel>
<text>Prelude</text>
</navLabel>
<content src="prelude.html"/>
</navPoint>
...
Debido a que los valores de @id se conservan desde el archivo original, usted debe ser capaz de
escribir herramientas de validación para garantizar que todos los nodos originales son capturados.
Otras opciones para posteriores transformaciones incluyen:
Muchos sistemas de lectura ya dan soporte a un tipo de "EPUB 2.5," donde se permite el marcado
HTML5 (especialmente en relación con elementos de video, audioy canvas ). Se debe esperar
que las plataformas eReading con motores de navegador web, como Apple iBooks, presenten
con éxito muchos de los elementos permitidos en documentos de contenido de EPUB 3. Como
con cualquier contenido web innovador, pruebe su contenido en tantos lectores como sea posible
antes del release.
Estos recursos ya son utilizados en algunos sitios web para proporcionar experiencias de usuario
mejoradas en dispositivos móviles. Tomados en conjunto, estos principios se denominan diseño
web adaptable. Las técnicas han demostrado ser eficaces en la web y, de alguna manera, son
aún más aplicables a los diseñadores de libros. Los diseñadores de libros bosquejan desde hace
décadas de investigación y experimentación cómo presentar eficazmente información visual
en diversos tamaños y orientaciones. (Consulte Recursos para obtener más información sobre
diseño web adaptable.)
La mayor parte de los eBooks contienen exclusiva o principalmente texto. Sin embargo, muchos
tipos de publicaciones requieren un diseño más rico por razones de marketing o por la naturaleza
esencial del contenido. Los libros que contienes muchos diseños han sido considerados malos
candidatos para la conversión de eBook, pero EPUB 3 y su uso de HTML5 y CSS3 permiten un
diseño avanzado. Con gran poder viene una gran responsabilidad, sin embargo. No se puede
descuidar a los usuarios de dispositivos móviles que quieren leer el contenido fácilmente y aún
con diseños llamativos. Aquí es donde las técnicas combinadas de diseño de CSS3 y el diseño
adaptable de eBook se juntan.
El enfoque consiste en capturar el texto como XHTML y luego extraer algunas de las imágenes
para evocar—pero no reproducir—el diseño original. Debido a que EPUB 3 supone un contexto de
procesamiento XHTML5/CSS3, puede utilizar un marcado semántico mínimo en vez de acomodar
muchos navegadores antiguos, como lo haría en la web abierta. El Listado 12 muestra el marcado
XHTML para el contenido.
No se especifican imágenes. Para hacer más fácil el diseño adaptable, las imágenes se
proporcionarán en el CSS. Aunque muchos defensores del desarrollo web adaptable propugnan
una estrategia de "móvil primero", puede ser más fácil empezar por adaptar el contenido de
impresión con una pantalla de tamaño de escritorio o pizarra digital. Para el ejemplo, se supone
que la vista predeterminada es una pantalla de formato grande. El Listado 13 muestra el CSS, y la
Figura 4 muestra el eBook resultante como se presenta en iBooks en un iPad de Apple.
body {
font-family: Georgia, serif;
margin: 0;
padding: 0;
}
div[epub|type="chapter"] {
background-image: url('childrens-book-swans.jpg'),
url('childrens-book-flowers.jpg');
background-position: 100% 50%, bottom center;
background-size: 50% auto, auto auto;
background-repeat: no-repeat, repeat-x;
background-color: #fdefc2;
padding: 2em;
}
p {
font-size: .75em;
text-align: left;
}
p:last-child {
padding-bottom: 2em;
}
h1 {
margin-top: 0;
text-transform: uppercase;
font-weight: 200;
}
p > span {
display: block;
}
p > span:nth-child(even) {
text-indent: 1em;
}
El ejemplo utiliza la sintaxis de @namespace del módulo Espacios de nombres de CSS. Los
espacios de nombres de CSS permiten estilos de elementos y atributos de espacios de nombres
prefijados. Aunque no es necesario utilizar espacios de nombres de CSS en EPUB 3, es
conveniente adjuntar estilos a los elementos con flexión semántica EPUB aplicada (el atributo
@epub:type ) en vez de crear clases separadas solo para estilos. El documento HTML debe
usar una extensión .xhtml para que la mayoría de los navegadores procesen correctamente los
espacios de nombre.
Con la imagen alineada a la derecha y un borde decorativo grande, el diseño en la Figura 4 podría
decirse que evoca muy bien la página original. Sin embargo, esta disposición no es adecuada
para un dispositivo móvil en modo retrato, donde el ancho será insuficiente para la imagen y
el texto. Para dispositivos móviles, que suelen tener unos 480 píxeles de ancho, se pueden
reemplazar varios elementos, como en el Listado 14. Con el CSS en el Listado 14:
• La imagen de los cisnes se disminuye y aparece centrada antes del texto. La imagen
decorativa en la parte inferior se disminuye para evitar que sobrecargue el contenido del
poema.
• El título se disminuye y se centraliza.
• El texto del poema va a estar más centralizado en vez de muy alineado a la izquierda.
div[epub|type="chapter"] {
background-position: top center, bottom center;
background-size: 30% auto, 50% auto;
padding: 1em;
margin: auto;
text-align: center;
}
h1 {
margin: 50% auto 0 0;
font-size: 1em;
text-align: center;
}
p {
margin-left: 25%;
}
}
La anterior directriz sigue el CSS anterior, por lo que solo es necesario reemplazar las
propiedades cuyos valores han cambiado en el nuevo diseño. La Figura 5 muestra el resultado
distribuido en dos páginas.
La presentación angosta funciona bien en un diseño de retrato, pero un poema corto fácilmente
puede colocarse entero en la mayoría de las páginas de paisaje. Usted puede añadir una consulta
de medios final para permitir a los dispositivos orientados a paisaje diseñar el poema en varias
columnas. Este recurso forma parte del módulo de Texto de CSS y es parte esencial del soporte a
CSS de EPUB 3. El CSS para el diseño de paisaje de tamaño de teléfono está en el Listado 15.
/* For now we are required to use the vendor-prefixed versions in most browsers */
-webkit-column-count: 2;
-moz-column-count: 2;
column-count: 2;
-webkit-column-gap: 0;
-moz-column-count: 0;
column-gap: 0;
EPUB 3 incluye MathML como un tipo de contenido nativo de EPUB. El marcado de MathML
puede proporcionarse sin cualquier retroceso a otro tipo, como una imagen ráster. Los lectores
EPUB 3 son necesarios para dar soporte por lo menos a las presentaciones de MathML, en la
mayoría de los casos.
Aunque MathML es un tipo de contenido esencial, es necesario que se declare cuáles páginas
XHTML tienen MathML en el archivo OPF, como en el Listado 16.
El Listado 17 muestra una ecuación simple. Aunque algunos navegadores web ahora dan
soporte a MathML en un contexto de HTML5 (sin espacios de nombres), EPUB 3 requiere que el
contenido MathML sea declarado en el espacio de nombre correcto de http://www.w3.org/1998/
Math/MathML.
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:epub="http://www.idpf.org/2007/ops"
xmlns:m="http://www.w3.org/1998/Math/MathML">
<head>
<title>Example of MathML in EPUB 3</title>
<link rel="stylesheet" type="text/css" href="mathml-style.css" />
</head>
<body>
<m:math display="block">
<m:mrow>
<m:mi>x</m:mi>
<m:mo>=</m:mo>
<m:mfrac>
<m:mrow>
<m:mo form="prefix">-</m:mo>
<m:mi>b</m:mi>
<m:mo>±</m:mo>
<m:msqrt>
<m:msup>
<m:mi>b</m:mi>
<m:mn>2</m:mn>
</m:msup>
<m:mo>-</m:mo>
<m:mn>4</m:mn>
<m:mo>#</m:mo>
<m:mi>a</m:mi>
<m:mo>#</m:mo>
<m:mi>c</m:mi>
</m:msqrt>
</m:mrow>
<m:mrow>
<m:mn>2</m:mn>
<m:mo>#</m:mo>
<m:mi>a</m:mi>
</m:mrow>
</m:mfrac>
</m:mrow>
</m:math>
</body>
</html>
La Figura 7 muestra el resultado en iBooks. Puede ser necesario incorporar una fuente que
incluya los símbolos matemáticos apropiados para que todos los tipos de ecuaciones sean
correctamente presentados. Consulte Recursos para información adicional sobre Fuentes STIX
para publicaciones científicas.
Muchos sistemas que producen MathML pueden utilizar entidades nombradas que forman parte
del DTD de MathML 1.0, como ±. Es necesario convertir estas entidades en entidades
numéricas antes de incluirlas en una publicación de EPUB 3. Como DTDs externos, aun para
tipos de contenidos esenciales, no deben incluirse en archivos EPUB.
EPUB 3 se está extendiendo de manera activa. Es probable que recursos de los nuevos módulos
de CSS, como Regiones de CSS, se incorporen en futuras revisiones.
Descargas
Descripción Nombre tamaño
XSLT and sample files for NCX transformation ncx-to-end.zip 5KB
A sample EPUB 3 demonstrating advanced CSS3 layout childrens-book-epub.zip 139KB
A sample EPUB 3 demonstrating MathML mathml-epub.zip 3KB
Recursos
Aprender
• Build a digital book with EPUB (Liza Daly, developerWorks, julio de 2011). Aprenda sobre el
formato EPUB en detalle.
• EPUB 3 specification: Obtenga una visión general de la actual revisión del estándar de
EPUB.
• EPUB Publications 3.0 Recommended Specification: Lea sobre la semántica en nivel de
publicación y los requerimientos de conformidad para EPUB® 3, incluyendo el formato
del Paquete de Documentos y reglas para cómo este documento y otros Recursos de
Publicaciones sea asocian para crear una Publicación en conformidad con EPUB.
• EPUB 3 Structural Semantics Vocabulary: Aprenda más sobre el conjunto de propiedades
relacionadas a la descripción de semántica estructural de trabajos escritos.
• HTML5 for Publishers (Sanders Kleinfeld, O'Reilly Media, 2011): Obtenga este libro EPUB
gratuito que demuestra el uso de la interactividad basada en canvas y otros interesantes
recursos de EPUB 3.
• Responsive Web Design por Ethan Marcotte: Explore las técnicas y los principios de diseño
de CSS, incluyendo cuadrículas fluidas, imágenes flexibles y consultas de medios.
• New to XML? Obtenga los recursos necesarios para aprender XML.
• XML area on developerWorks: Encuentre los recursos que necesita para avanzar en la
arena de XML, incluyendo DTDs, esquemas y XSLT. Consulte XML technical library donde
encontrará una amplia variedad de artículos técnicos, consejos, tutoriales, estándares y
Redbooks de IBM.
• Certificación IBM XML: Conozca cómo puede usted convertirse en un Desarrollador
Certificado IBM en XML y en tecnologías relacionadas.
• developerWorks technical events and webcasts: Manténgase actualizado con la tecnología
en estas sesiones.
• developerWorks on-demand demos: Asista a demostraciones que van desde instalación
y configuración de productos para principiantes hasta funcionalidades avanzadas para
desarrolladores experimentados.
• developerWorks on Twitter: Únase hoy para seguir los tweets de developerWorks.
• developerWorks podcasts: Escuche interesantes entrevistas y discusiones para
desarrolladores de software.
• developerWorks on-demand demos: Observe demostraciones que van desde la instalación
de productos y configuración para principiantes hasta funcionalidades avanzadas para
desarrolladores experimentados.
• EpubCheck: Descargue la versión reciente del validador para trabajar con documentos de
EPUB 2 y EPUB 3.
• nend: Obtenga la suite completa de las herramientas XSLT y Python para convertir archivos
NCX en ENDs.
• STIX Fonts: Utilice el conjunto completo de fuentes que sirve a la comunidad científica y de
ingeniería.
• IBM product evaluation versions: Descargue o vaya a explore the online trials in the IBM
SOA Sandbox y obtenga experiencia práctica en herramientas de desarrollo de aplicaciones
y en productos de middleware de DB2®, Lotus®, Rational®, Tivoli® y WebSphere®.
Comentar
Sobre el autor
Liza Daly