text:
Giới thiệu
EPUB là định dạng XML dùng cho các sách và các ấn phẩm số có khả năng tự tương thích.và được chuẩn hóa bởi Diễn đàn xuất bản số quốc tế (IDPF). Năm 2009, EPUB 2 là định dạng sách điện tử phổ biến được hầu hết các nhà bán lẻ và hệ thống sách điện tử lớn sử dụng.
Các tệp lưu trữ ZIP của EPUB đều được đóng gói theo một cấu trúc rõ ràng. Mỗi thành phần có đặc tả riêng của mình, được hợp nhất dưới nhãn EPUB chung:
- Đặc tả đóng gói
- Định nghĩa phương pháp đóng gói một tài liệu EPUB.
- Ấn phẩm EPUB
- Bao gồm thông tin về các nội dung của sách điện tử: thông tin của gói package, tiêu đề đơn giản, thông tin tác giả và—đối với EPUB 3— còn hỗ trợ thêm các tính năng nâng cao như JavaScript hay MathML. Thành phần này được gọi là Open Container Format file.
- Các tài liệu nội dung của EPUB
- Thực ra nội dung của ấn phẩm chính là các file XHTML và CSS. Nó cũng bao gồm các tài nguyên nhị phân như hình ảnh, đa phương tiện và các tài liệu XML.
Bài này tìm hiểu một số tính năng của EPUB 3. Bạn sẽ tìm hiểu cách xác nhận hợp lệ các tài liệu EPUB 3, các chỉ dẫn, phân cấp và các tài liệu hướng dẫn phát triển. Một ví dụ sẽ hướng dẫn bạn chuyển một trang sách trẻ em thành EPUB 3. Ngoài ra, bạn sẽ tìm hiểu cách đưa MathML vào các ấn phẩm.
Tải về các ví dụ được sử dụng trong bài này.
Điều kiện tiên quyết
Các đoạn mã và ví dụ mẫu trong bài này đều xem rằng bạn đã biết qua về EPUB 2 nói riêng và các ấn phẩm dựa trên XML nói chung. Xem phần Tài nguyên để biết thêm chi tiết về EPUB 2.
Những thay đổi trong EPUB 3
EPUB 2 cung cấp tất cả các khả năng định dạng và trình bày của HTML4 và CSS2, là quá đủ cho các ấn phẩm nặng về văn bản. Tuy nhiên, các nhà xuất bản và tác giả đã nhận thấy rằng EPUB 2 không thể xử lý nhiều kiểu nội dung trong một số trường hợp như: sách đa phương tiện, sách có bố cục phức tạp, các ấn phẩm toán học và các tài liệu tương tác. Do đó vào tháng 10 năm 2011, cộng đồng IDPF và sách điện tử đã phát hành bản đặc tả cho EPUB 3.
Những thay đổi của EPUB 3 so với EPUB 2:
- Tài liệu đặc tả schema cho EPUB 3 đã chuyển đổi từ XHTML 1.1 sang phiên bản XHTML của HTML5.
Điều này là quan trọng cần thiết để có thể chứa các phần tử đa phương tiện từ
HTML5 (như
<video>,
<audio>và
<canvas>).
- EPUB 3 đã mở rộng phạm vi cho phép các tài liệu CSS từ một tập hợp con của phiên bản CSS2.1 đến một tập hợp các mô đun hoàn thiện của CSS3 có liên quan đến việc soạn thảo tài liệu.
- MathML đã được thêm vào XHTML5 và SVG như là một loại nội dung quan trọng hàng đầu.
- Ngày nay, việc hỗ trợ nhiều phông chữ nhúng là bắt buộc đối với các hệ thống đọc có khả năng hiển thị CSS. Web Open Font Format là định dạng phông chữ mở trên nền Web đã được chấp nhận thêm vào để sử dụng.
- Hỗ trợ chi tiết các kiểu trình bày hay các bố cục không theo chuẩn phương Tây, chẳng hạn như cách trình bày trang giấy theo chiều dọc hay các kiểu của các nước châu Á khác.
- Hỗ trợ tùy chọn tương tác JavaScript trung gian bằng cách sử dụng một mô hình bảo mật tùy chỉnh.
- Các tài liệu xuất bản đã được mở rộng thêm các thông tin metadata (siêu dữ liệu), bao gồm một số hỗ trợ cho RDFa (Resource Description Framework–in–attributes: Khung công tác mô tả tài nguyên-bằng-các thuộc tính).
- Trung tâm điều hướng mở rộng NCX (Navigational Center eXtended) không tán thành việc tạo mục lục (TOC - table of contents) dự trên XHTML5. Tuy nhiên, NCX vẫn cho phép tương thích ngược.
Validate (xác nhận hợp lệ) các tài liệu EPUB 3
Vì EPUB 3 dựa trên khả năng tuần tự hóa của XML cho hầu hết các kiểu nội dung, nên nó tuân thủ việc validate tự động. EpubCheck là một công cụ kinh điển để kiểm tra tính hợp lệ và sự phù hợp của các tài liệu EPUB. Nó chính là một thư viện Java™ mở (Berkeley Software Distribution-licensed - được cấp phép bởi hệ thống Phân phối phần mềm Berkeley). Trong bài này, chúng ta sẽ sử dụng phiên bản dành cho nhà phát triển để làm việc với các tài liệu EPUB 3. Xem phần Tài nguyên để tìm đường link tải phiên bản mới nhất .
Chúng tôi khuyên bạn nên sử dụng phần mở rộng .xhtml cho tất cả các tài liệu nội dung EPUB.
Bởi vì các trình duyệt sẽ không biên dịch nội dung HTML thành
application/xhtml+xml nếu thiếu phần mở rộng đó. Việc xử lý XML là bắt
buộc khi làm việc với nhiều tính năng được trình bày trong bài này, chẳng hạn như
các namespace (vùng tên) CSS.
Thông thường, bạn tương tác với EpubCheck thông qua dòng lệnh sau đây.
$ java -jar epubcheck-3.0b3.jar sample.epub Epubcheck Version 3.0b3 No errors or warnings detected.
Nếu bạn nhận được lỗi trả về
java.lang.NoClassDefFoundError:
com/thaiopensource/validate/SchemaReader, bạn hãy chắc chắn rằng thư mục
lib/ đang nằm trong cùng thư mục với tệp JAR của EpubCheck.
EpubCheck 3 có thể tiến hành validate từng thành phần con riêng lẻ của gói EPUB, như trong Liệt kê 1. Tính năng hữu ích này được sử dụng trong các ví dụ của bài này, nó:
- Giúp cô lập các vấn đề.
- Giảm đi việc phải đóng gói lại gói EPUB thành ZIP thì mới thực hiện validate được.
- Được tích hợp trong một framework kiểm thử ở mức đơn vị (unit testing famework) dùng cho chuỗi công cụ để xuất ra một kiểu tệp duy nhất.
Liệt kê 1. Chạy EpubCheck 3 dựa vào một kiểu tệp duy nhất
$ java -jar ~/src/epubcheck-3.0b3.jar sample-toc.xhtml -mode nav Epubcheck Version 3.0b3 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! No errors or warnings detected.
Sự điều hướng và hệ thống phân cấp trong các tài liệu EPUB 3
Mặc dù tệp TOC của NCX trong EPUB 2 đã hỗ trợ nhiều cách đánh dấu để điều hướng phân cấp và ánh xạ tới trang tương ứng, nó được bắt nguồn từ Digital Talking Book (Sách nói số - một đặc tả để tạo phiên bản điện tử cho các quyển sách không được in ra) của DAISY (Digital Accessible Information System - Hệ thống thông tin số có thể truy cập được). Định dạng DAISY đã được đặc tả rõ ràng giúp dễ dàng phát triển các trình đọc sách điện tử và hỗ trợ nhiều khả năng tiếp cận. Từ đó, NCX có thể vận hành một cách trơn tru. Tuy nhiên, đặc tả DTD của NCX là khá lớn bao gồm các tính năng không liên quan đến EPUB 2. Sự nhầm lẫn về việc bắt buộc phải có các thành phần nào của NCX trong EPUB đã dẫn đến sự phân mảnh không mong muốn và tạo ra các phần mở rộng độc quyền của một số nhà bán lẻ và các nhà cung cấp hệ thống đọc sách điện tử.
EPUB 3 không sử dụng NCX mà thay thế nó bằng END (EPUB Navigational Document – Tài liệu điều hướng của EPUB). Liệt kê 2 cho thấy một ví dụ. END sử dụng XHTML5 chứ không phải là một DTD tùy biến, do đó làm giảm số lượng các định dạng XML để thực thi và validate. Các thuộc tính EPUB tùy biến được cung cấp thông qua EPUB namespace (http://www.idpf.org/2007/ops).
Liệt kê 2. Một END tối thiểu
  <title>Example</title>

Contents

 Chapter 1

Phần tử
 của HTML5 là bắt buộc (cũng như giá trị
toc của
epub:type).
Khai báo END
Đặt END vào một ấn phẩm bằng cách khai báo
item trong bảng kê khai
manifest với giá trị
nav cho thuộc tính
properties, như trong Liệt kê 3.
Liệt kê 3. Đưa một END vào một OPF (EPUB Package Document - Tài liệu đóng gói EPUB)
<manifest> <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>
Việc đưa vào một tệp END là bắt buộc trong EPUB 3. Bạn cũng có thể thêm vào một tệp NCX để tận dụng tính tương thích ngược, nhưng các bộ vi xử lý EPUB 3 sẽ phải sử dụng END và bỏ qua NCX.
Tính trực quan của END
Không giống như NCX, bạn có thể đưa END vào thẳng nội dung của sách. Trong EPUB 2, nếu bạn muốn hiển thị một mục lục tùy biến cho người sử dụng (không phải mục lục có sẵn trong các chương trình eReader – Trình đọc sách điện tử), thì bạn phải tạo ra hai bản sao của cùng một nội dung—một bản theo NCX và một bản tài liệu nội dung HTML. END loại bỏ sự trùng lặp này và cho phép linh hoạt hơn nhiều trong việc trình bày một vài hay tất cả mục lục trong luồng nội dung.
Để thêm END vào luồng nội dung, chỉ cần đặt nó vào thẻ
spine của
OPF, xem Liệt kê 4.
Liệt kê 4. Đưa END vào luồng nội dung
<spine> <itemref idref="toc" /> <itemref idref="chapter_001" /> ... </spine>
Trong các tài liệu có hệ phân cấp sâu, chẳng hạn như tài liệu hướng dẫn kỹ thuật, bạn có thể
muốn đưa tất cả các cấp sâu hơn vào mục lục, nhưng chỉ muốn hiển thị các đầu mục ở
cấp đầu tiên hoặc cấp thứ hai cho người dùng. Để làm được điều này, bạn có thể sử
dụng thuộc tính
hidden của HTML5, như trong Liệt kê 5, trên bất kỳ cấp nào mà bạn muốn dấu đi và không
hiển thị cho người dùng.
Liệt kê 5. Dấu đi các cấp con khỏi mục lục
...

 Chapter 1

 Chapter 1 subsection

 Chapter 1 subsection 1 ...
Có thể bạn đang thắc mắc là vì sao không thể làm được điều này bằng cách sử dụng thuộc tính
display: none của CSS. Do EPUB được sử dụng trong
nhiều hệ thống đọc, bao gồm cả các trình đọc màn hình không trực quan hoặc các thiết
bị Braille, mà không phải tất cả các trình đọc đều hỗ trợ CSS. Nhưng hầu hết các
trình duyệt web hiện đại lại hỗ trợ thuộc tính
hidden. Có
một cách là thêm một tệp CSS để chứa các thiết lập cho thuộc tính hiển thị của những
phần tử này, như trong Liệt kê 6. Vì tệp END chỉ là một tệp
HTML, nên bạn có thể thêm CSS vào thẻ
head, giống như với
bất kỳ bản định kiểu khác.
Liệt kê 6. Thiết lập đặc tính hiển thị
/* Never display elements with the hidden attribute */ *[hidden] { display: none; }
Trên các hệ thống đọc hoặc các trình duyệt không tương thích, việc không thiết lập thuộc tính
hidden sẽ khiến tất cả các phần con được hiển thị,
như trong Hình 1.
Hình 1. Mục lục END không có thuộc tính hidden hay CSS
Trên các trình duyệt có hỗ trợ thuộc tính
hidden hoặc sau khi bạn
cung cấp một đoạn mã đệm CSS, kết quả đầu ra sẽ khác hoàn toàn, như trong Hình 2.
Hình 2. Mục lục END có áp dụng thuộc tính hidden
Theo mặc định, danh sách theo thứ tự HTML sẽ được đánh số. Tuy nhiên, đặc tả END viết rằng, "
. . . kiểu hiển thị mặc định của các mục danh sách phải tương ứng với
CSS list-style: none." Để trình bày được theo kiểu này, hãy
thêm một thông số vào đoạn mã đệm CSS của EPUB 3, như trong Liệt kê
7.
Liệt kê 7. Thiết lập kiểu của các mục danh sách
/* In a declared TOC list, never show list numbering */ nav#toc ol { list-style-type: none; }
Chuyển đổi từ NCX sang END thông qua XSLT
Mặc dù END của EPUB 3 cung cấp nhiều tùy chọn hơn để bố cục và kiểm soát, nếu bạn đang muốn chuyển từ EPUB 2 sang EPUB 3 thì hãy bắt đầu xem xét chuyển đổi từ các tài liệu NCX hiện có. Vì cả hai tài liệu vào và ra đều là XML, nên đây là một ứng dụng hoàn hảo cho XSLT.
Liệt kê 8 cung cấp framework cơ bản để tạo ra tài liệu HTML có chứa mục lục.
Liệt kê 8. Khai báo các namespace (vùng tên) cần thiết cho NCX và END
<?xml version="1.0"?> <xsl:stylesheet version="1.0" exclude-result-prefixes="ncx xsl" xmlns="http://www.w3.org/1999/xhtml" xmlns:ncx="http://www.daisy.org/z3986/2005/ncx/" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="ncx:ncx">   <title><xsl:apply-templates select="/ncx:ncx/ncx:docTitle/ncx:text"/></title>   <xsl:apply-templates/>   </xsl:template>
Lưu ý việc sử dụng namespace
http://www.idpf.org/2007/ops là bắt
buộc, thường được gắn với tiếp đầu ngữ
epub. Thêm vào
namespace này chính là để hỗ trợ ngữ nghĩa của EPUB (ý nghĩa bổ sung cho một mục
đích cụ thể mà một phần tử có trong một tài liệu EPUB). Nếu sử dụng EPUB 3, bạn được
khuyến khích sử dụng các ngữ nghĩa có sẵn trong Structural Semantics Vocabulary
(Bảng từ vựng ngữ nghĩa) để cung cấp bối cảnh cho phần mềm truy cập cũng như việc xử
lý của máy tính. Xem phần Tài nguyên để biết thông tin về
các giá trị có trong bảng từ vựng đó.
Với nét những thông tin cơ bản sẵn có, hãy bắt đầu xem qua mục lục phân cấp trong NCX và cung
cấp các phần tử XHTML tương ứng. Mặc dù NCX cho phép áp dụng các kiểu khác nhau vào
danh sách trang, nhưng các sách EPUB thường chỉ bao gồm
ncx:navMap. Template được trích dẫn trong Liệt kê 9
cho thấy làm thế nào để xuất ra một tập hợp các node (nút) từ
ncx:navMap.
Liệt kê 9. Xuất ra navMap
...  <xsl:template match="ncx:navMap">  <xsl:copy-of select="@class"/> <xsl:choose> <xsl:when test="ncx:navLabel"> <xsl:apply-templates select="ncx:navLabel" mode="heading"/> </xsl:when> <xsl:otherwise> <xsl:if test="self::ncx:navMap">
Table of Contents
 </xsl:if> </xsl:otherwise> </xsl:choose>
 <xsl:apply-templates select="ncx:navPoint|ncx:navLabel"/>
  </xsl:template> <xsl:template match="ncx:navPoint"> <xsl:text> </xsl:text>
 <xsl:copy-of select="@id|@class"/>   <xsl:apply-templates select="ncx:navLabel"/>   <xsl:if test="ncx:navPoint">
 <xsl:apply-templates select="ncx:navPoint"/>
 </xsl:if>
 </xsl:template>  <xsl:template match="ncx:navLabel|ncx:text"> <xsl:apply-templates/> </xsl:template> ...
Liệt kê 10 là ví dụ về một NCX phân cấp.
Liệt kê 10. Ví dụ về một NCX có tổ chức phân cấp
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN" "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd"> <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1" xml:lang="en">  <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" />  <docTitle> <text>Middlemarch</text> </docTitle> <navMap> <navPoint id="np1" playOrder="1"> <navLabel> <text>Prelude</text> </navLabel> <content src="prelude.html"/> </navPoint> <navPoint id="np2" playOrder="2"> <navLabel> <text>I: Miss Brooke</text> </navLabel> <content src="book1.html" /> <navPoint id="np3" playOrder="3"> <navLabel> <text>Chapter 1</text> </navLabel> <content src="chapter1.html" /> </navPoint> <navPoint id="np4" playOrder="4"> <navLabel> <text>Chapter 2</text> </navLabel> <content src="chapter2.html" /> </navPoint> ...
Việc chuyển đổi tệp trong Liệt kê 10 khi sử dụng XSLT dẫn đến kết quả như Liệt kê 11 dưới đây. Bạn có thể tải về các tệp ví dụ.
Liệt kê 11. Kết quả của việc chuyển đổi từ NCX sang END
<?xml version="1.0"?>   <title>Middlemarch</title>
Table of Contents

 Prelude

 I: Miss Brooke

 Chapter 1

 Chapter 2
 ...
Vì các giá trị
@id được lưu giữ từ tệp ban đầu, nên bạn có thể sẽ
viết các công cụ validate để bảo đảm rằng tất cả các node gốc đều đã được nắm giữ.
Các tùy chọn khác cho việc chuyển đổi thêm bao gồm:
- Cập nhật siêu dữ liệu trong tệp OPF từ lược đồ Dublin Core cũ đến siêu lược đồ
@property, như được định nghĩa trong đặc tả Publications 3.0 (xem phần Tài nguyên).
- Chuyển đổi nội dung
guidebị phản đối của OPF sang tính năng
landmarkstrong END.
- Loại bỏ thông tin trong OPF
spinecho tệp NCX (trừ khi bạn đang tạo ra một tài liệu mang tính tương thích ngược).
Thông thường, không cần thiết sửa đổi nội dung XHTML 1.1 để tạo ra các tài liệu tương thích EPUB 3. Tuy nhiên, ở nơi có sẵn thông tin ngữ nghĩa, chẳng hạn như việc kéo từ một hệ thống quản lý nội dung hoặc kho lưu trữ tài liệu khác, hãy xem xét áp dụng biến tố ngữ nghĩa cho kết quả đầu ra. Đặc tả EPUB 3 có thông tin thêm về biến tố ngữ nghĩa (xem phần Tài nguyên).
Các hướng dẫn phát triển EPUB 3
Chỉ đến khi nào các hệ thống sẵn sàng hỗ trợ đọc EPUB 3, còn bây giờ vẫn còn là quá sớm để đưa ra các hướng dẫn thực hành cụ thể cho định dạng này. Tuy nhiên, EPUB 3 dựa trên việc hoàn thiện nhanh chóng các công nghệ web. Đã có đủ thông tin khuyến cáo về cách sử dụng các công nghệ cơ bản và thời điểm sử dụng các hướng dẫn thực hành tốt nhất để tạo ra cách đánh dấu có khả năng truy cập, ngữ nghĩa, chắc chắn.
Thời điểm tạo ra EPUB 3
Bạn nên sử dụng EPUB 2 hay EPUB 3 để tạo ra sách điện tử? Thật may mắn là tính tương thích ngược đã trở thành một mục tiêu thiết kế của EPUB 3. Bạn sẽ nhận được lợi ích từ những cải tiến ngữ nghĩa và siêu dữ liệu phong phú trong EPUB 3 trong khi vẫn có thể đọc được trên các Trình đọc sách điện tử (eReader) cũ. Trong thực tế, có khả năng là bạn không thể bán những nội dung như vậy trong một số chợ sách điện tử; chúng có thể không chấp nhận EPUB 3 vì các quy định kinh doanh. Tuy nhiên, có thể hy vọng "việc nhận" (sideloading) nội dung như vậy sẽ làm việc với hầu hết các hệ thống đọc EPUB 2 phù hợp. EPUB 3 cũng đã được thiết kế để tiến tới tương thích về mặt hỗ trợ hệ thống đọc—một hệ thống đọc EPUB 3 phải hỗ trợ các tài liệu EPUB 2 hợp lệ.
Nhiều hệ thống đọc đã hỗ trợ một loại "EPUB 2.5", cho phép hiển thị HTML5 (đặc biệt là liên
quan đến các phần tử
video,
audio và
canvas). Bạn nên hy vọng các nền
tảng đọc sách điện tử (eReading) có các công cụ trình duyệt web, chẳng hạn như Apple
iBooks, để trình diễn thành công nhiều phần tử được phép trong các tài liệu nội dung
EPUB 3. Cũng giống như với bất kỳ nội dung web hàng đầu nào, hãy kiểm tra nội dung
trong các trình đọc càng nhiều càng tốt trước khi phát hành.
Responsive eBook design (Thiết kế sách điện tử mang tính đáp ứng)
Mô đun CSS3 Media Query (Truy vấn phương tiện CSS3) là một thành phần mới thú vị của EPUB 3. Media Query cho phép các tác giả quy định một tập hợp các quy tắc và các đặc tính chỉ áp dụng cho một điều kiện đọc sách cụ thể, thường dựa trên kích cỡ của khung nhìn. Bạn cũng có thể sử dụng Media Query để thiết lập tỷ lệ chiều cao và chiều rộng cụ thể, chẳng hạn như hướng thẳng đứng so với hướng nằm ngang.
Những tính năng này vẫn đang sử dụng trên một số trang web để cung cấp những trải nghiệm người dùng được cải thiện trên các thiết bị di động. Tóm lại, những nguyên tắc này được gọi là Responsive Web Design (thiết kế web mang tính đáp ứng). Các kỹ thuật này đã được chứng minh là có hiệu quả trên nền web và chúng cũng thích hợp trong việc thiết kế sách. Các nhà thiết kế sách đã rút ra từ nhiều thập kỷ nghiên cứu và thử nghiệm về cách trình bày hiệu quả thông tin hình ảnh theo nhiều kích cỡ và hướng hiển thị khác nhau. (Xem phần Tài nguyên để biết thêm về Responsive Web Design).
Hầu hết sách điện tử chủ yếu là văn bản. Tuy nhiên, nhiều ấn phẩm yêu cầu bố cục phải phong phú hơn vì các lý do tiếp thị hoặc vì để phù hợp với nội dung. Các sách tập trung vào bố cục đã được xem là những ứng cử viên nghèo nàn về chuyển đổi sách điện tử, nhưng EPUB 3 với việc sử dụng HTML5 và CSS3 cho phép các thiết kế tiên tiến hơn. Mặc dù quyền lực càng lớn, trách nhiệm càng cao. Bạn không thể bỏ mặc những người dùng các thiết bị di động, những người muốn đọc nội dung một cách dễ dàng với các bố cục hấp dẫn. Đây là nơi các kỹ thuật kết hợp về bố cục CSS3 và Responsive eBook Design gặp nhau.
Bố cục tiên tiến, mang tính đáp ứng trong EPUB 3
Những quyển sách có nhiều minh họa, sách dạy nấu ăn, sách giáo khoa và sách thi ca đã rất khó để chuyển đổi sang nội dung mang tính thích ứng được. Trong phần này, hãy xem làm thế nào để cải biên một trang từ cuốn sách thơ ca dành cho trẻ em, trong Hình 3, thành EPUB 3. Từ cải biên đã được sử dụng thay cho chuyển đổi, vì quá trình này có tính nghệ thuật y như tính kỹ thuật
Hình 3. Một trang từ Abroad của Thomas Crane (hình ảnh được lấy từ Kho lưu trữ công cộng trên Internet)
Cách tiếp cận này là nắm giữ nội dung văn bản như XHTML rồi trích ra một số hình ảnh để gợi lên—nhưng không tạo lại—bố cục ban đầu. Do EPUB 3 giả định một bối cảnh xử lý XHTML5/CSS3, nên bạn có thể sử dụng cách đánh dấu ngữ nghĩa tối thiểu thay vì cung cấp nhiều trình duyệt cũ, như bạn thường làm trên trang web mở. Liệt kê 12 cho thấy cách đánh dấu XHTML cho nội dung.
Liệt kê 12. Cách đánh dấu thi ca
<?xml version="1.0"?>   <title>Example of Media Query in EPUB 3</title> <link rel="stylesheet" type="text/css" href="childrens-book-style.css" />

The Swans.

 "Ho! pretty swans, Do you know, in our Zoo' The swans of old England Are just like you?"

 "Don't tell me!" Said a cross old bird; "I know better, The thing's quite absurd.

 Their figures, I'm sure, Are not worth a glance: If you want to see style, You must come to France."

 With a scornful whisk The swan turned tail, Spread its wings to the breeze And was off full-sail.

 "Ho! pretty swan, Do you know, in our Zoo' The swans are not half So conceited as you?"

Đoạn mã trên không chứa hình ảnh nào. Để cho thuận tiện, các hình ảnh sẽ được cung cấp theo CSS. Mặc dù nhiều người ủng hộ phát triển Responsive Web tán thành cách tạo ra phiên bản dành cho di động trước tiên, sau đó mới cải biên để hiển thị trên máy tính hay tablet (máy tính bảng). Ví dụ, người ta giả định rằng khung nhìn mặc định là một màn hình dạng lớn. Liệt kê 13 cho thấy CSS và Hình 4 cho thấy sách điện tử kết quả khi được hiển thị trong iBooks trên iPad của Apple.
Liệt kê 13. CSS cho một bố cục màn hình có kích cỡ máy tính bảng
@namespace epub "http://www.idpf.org/2007/ops"; body { font-family: Georgia, serif; margin: 0; padding: 0; } /* Select the entire
 and apply the background images at various positions relative to the text. */ 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; } /* Use the CSS Selector module to apply rule-based formatting to the poetry content, generating alternating rows of indented text. */ p > span:nth-child(even) { text-indent: 1em; }
Ví dụ này đang sử dụng cú pháp
@namespace từ các mô đun CSS
Namespaces. Các CSS Namespaces cho phép định kiểu các phần tử và các thuộc tính có
các tiền tố là namespace đó. Mặc dù không nhất thiết phải sử dụng các CSS namespaces
trong EPUB 3, nhưng thật thuận tiện để đính kèm các kiểu dáng cho những phần tử đó
với biến tố ngữ nghĩa của EPUB (thuộc tính
@epub:type)
chứ không phải tạo ra các lớp riêng biệt chỉ để định kiểu. Tài liệu HTML
phải sử dụng một phần mở rộng .xhtml phù hợp với hầu hết các trình
duyệt để xử lý đúng các vùng tên CSS.
Hình 4. Trang của cuốn sách Abroad được hiển thị trên một màn hình có kích cỡ máy tính bảng
Với hình ảnh canh lề phải và biên giới trang trí lớn, người ta có thể cho rằng bố cục trong Hình 4 gợi lên trang gốc. Tuy nhiên, việc trình bày này không thích hợp với một thiết bị di động trong chế độ hiển thị thẳng đứng, ở đó chiều rộng sẽ không đủ cho cả hình ảnh lẫn văn bản. Đối với các thiết bị di động, thường có độ rộng khoảng 480 pixel, bạn có thể ghi đè lên một số phần tử, như trong Liệt kê 14. Với CSS trong Liệt kê 14:
- Hình ảnh của những con thiên nga sẽ co lại, trở thành trung tâm và xuất hiện trước văn bản. Hình ảnh trang trí ở phía dưới cùng sẽ co lại để tránh lấn át nội dung của bài thơ.
- Tiêu đề sẽ trở nên nhỏ hơn và được canh ở giữa.
- Bản thân văn bản bài thơ sẽ ở giữa nhiều hơn chứ không phải được canh lệch hẳn sang lề trái.
Liệt kê 14. CSS cho bố cục thẳng đứng của màn hình có kích cỡ điện thoại
@media screen and (max-width:480px) { 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%; } }
Chỉ dẫn ở trên làm theo CSS trước đó, vì vậy nó chỉ cần ghi đè lên các đặc tính có giá trị đã thay đổi theo bố cục mới. Hình 5 cho thấy kết quả, trải rộng trên hai trang.
Hình 5. Trang từ cuốn sách Abroad được hiển thị trên màn hình có kích cỡ điện thoại
Sự trình bày hẹp về chiều rộng hoạt động tốt trong một bố cục thẳng đứng, nhưng một bài thơ ngắn như vậy có thể dễ dàng ăn khớp, hoàn toàn được trình bày trên hầu hết các trang nằm ngang. Bạn có thể thêm một truy vấn phương tiện cuối cùng để cho phép các thiết bị định hướng nằm ngang trình bày các bài thơ theo nhiều cột. Tính năng này là một phần của mô đun Text của CSS và là một phần cốt lõi trong việc hỗ trợ CSS 3 của EPUB. CSS với bố cục hiển thị nằm ngang của màn hình có kích cỡ điện thoại trong Liệt kê 15.
Liệt kê 15. CSS cho bố cục nằm ngang của màn hình có kích cỡ điện thoại
@media screen and (orientation:landscape and max-width:480px) { div[epub|type="chapter"] { background-position: 97% 40%, bottom center; background-size: 20% auto, 50% auto; /* 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; padding: 2em 4em 5em 4em; } }
Hình 6 cho thấy kết quả được hiển thị.
Hình 6. Trang từ cuốn sách Abroad được hiển thị trên một màn hình có kích cỡ điện thoại theo hướng nằm ngang
Đưa MathML vào các ấn phẩm
Trong EPUB 2, các ấn phẩm có thể đưa vào nội dung toán học chỉ bằng cách sử dụng hình ảnh hoặc SVG. Mặc dù toán học SVG có thể tạo ra kết quả đầu ra hấp dẫn, nhưng nó cản trở không cho các trình đọc nhìn thấy và khó viết. Các hình ảnh thì còn tồi tệ hơn vì chúng không cung cấp khả năng truy cập cũng như không thay đổi phông chữ phù hợp và các kích cỡ hiển thị khác nhau.
EPUB 3 có MathML như một kiểu nội dung EPUB nguyên gốc. Có thể cung cấp việc đánh dấu MathML mà không cần bất kỳ sự dự phòng nào khác, ví dụ như một hình ảnh. Các trình đọc của EPUB 3 là cần thiết để ít nhất hỗ trợ MathML hiển thị trong hầu hết các trường hợp.
Mặc dù MathML là một kiểu nội dung cốt lõi, điều cần thiết là bạn khai báo các trang XHTML nào có MathML trong tệp OPF, như trong Liệt kê 16.
Liệt kê 16. Khai báo nội dung MathML trong tệp OPF
<manifest> <item href="mathml-style.css" id="css1" media-type="text/css"/> <item href="mathml.xhtml" properties="mathml" id="page1" media-type="application/xhtml+xml"/> <item href="toc.ncx" id="ncx" media-type="application/x-dtbncx+xml"/> <item id="toc" properties="nav" href="toc.xhtml" media-type="application/xhtml+xml"/> </manifest>
Liệt kê 17 cho thấy một phương trình đơn giản. Mặc dù hiện nay một số
trình duyệt web hỗ trợ MathML trong bối cảnh HTML5 (không cần tạo namespace), nhưng
EPUB 3 vẫn yêu cầu khai báo nội dung MathML trong namespace đúng là
http://www.w3.org/1998/Math/MathML.
Liệt kê 17. MathML trong tài liệu nội dung EPUB 3
<?xml version="1.0"?>   <title>Example of MathML in EPUB 3</title> <link rel="stylesheet" type="text/css" href="mathml-style.css" />   <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>
Hình 7 cho thấy kết quả hiển thị trong iBooks. Bạn có thể cần nhúng một phông chữ gồm có các ký hiệu toán học phù hợp cho tất cả các kiểu phương trình để hiển thị đúng. Xem phần Tài nguyên để biết thông tin về các Fonts của STIX để sử dụng trong các ấn phẩm khoa học.
Hình 7. Các phương trình toán học đơn giản được hiển thị trong EPUB 3
Nhiều hệ thống, cung cấp MathML, có thể sử dụng các thực thể có tên là một phần của
DTD của MathML 1.0, chẳng hạn như
±. Bạn
cần chuyển đổi những thực thể này thành các thực thể số trước khi đưa vào một ấn
phẩm EPUB3. Như các DTD bên ngoài, ngay cả đối với các kiểu nội dung cốt lõi, chúng
không nên được đưa vào kho lưu trữ của EPUB.
Các chủ đề cần nghiên cứu thêm
EPUB 3 cung cấp nhiều tùy chọn cho việc phát triển các ấn phẩm nguyên gốc số, tiên tiến. Bạn có thể khám phá các chủ đề sau.
- Sử dụng
canvascủa HTML5 kết hợp với JavaScript cho các sách tương tác.
- Nếu bạn quan tâm đến Semantic Web, hãy tự mình làm quen với các tùy chọn biến tố ngữ nghĩa trong Structural Semantics Vocabulary của EPUB 3.
- Các vai trò ngữ nghĩa học HTML5 và WAI-ARIA (Accessible Rich Internet Applications Suite - Bộ dụng cụ các ứng dụng Internet phong phú có khả năng truy cập) đưa ra một phương pháp hấp dẫn để làm phong phú thêm nội dung dành cho người dùng phù hợp với các thiết bị hỗ trợ hoặc các thuật toán trong máy.
EPUB 3 vẫn đang được mở rộng. Có thể các tính năng từ các mô đun CSS mới, như CSS Regions (Các vùng CSS) sẽ được tích hợp trong các bản sửa đổi trong tương lai.
Các tải về
Tài nguyên
Học tập
- Xây dựng một cuốn sách số với EPUB (Liza Daly, developerWorks, 07.2011): Tìm hiểu chi tiết về định dạng EPUB.
- Đặc tả EPUB 3: Mô tả tổng quan về phiên bản hiện hành của tiêu chuẩn EPUB.
- Đặc tả được khuyến cáo về các ấn phẩm EPUB 3.0: Tìm hiểu về các yêu cầu phù hợp và ngữ nghĩa học mức ấn phẩm cho EPUB® 3, bao gồm định dạng của Package Document (Tài liệu đóng gói) và các quy tắc về cách tài liệu này và Publication Resources (Tài nguyên xuất bản) khác có liên quan như thế nào để tạo ra một ấn phẩm EPUB phù hợp.
- Bảng từ vựng ngữ nghĩa học cấu trúc EPUB 3: Tìm hiểu thêm về thiết lập các đặc tính liên quan đến mô tả về ngữ nghĩa học cấu trúc của các tác phẩm viết.
- HTML5 dành cho Nhà xuất bản (Sanders Kleinfeld, O'Reilly Media, 2011): Hãy nhận sách EPUB miễn phí này, một cuốn sách chứng tỏ việc sử dụng tương tác dựa trên khung nền ảnh và các tính năng thú vị khác của EPUB 3.
- Responsive Web Design của Ethan Marcotte: Khám phá các kỹ thuật và các nguyên tắc thiết kế CSS, bao gồm các lưới linh động, các hình ảnh linh hoạt và các truy vấn phương tiện truyền thông.
- Bạn mới tìm hiểu XML phải không? Hãy nhận tài nguyên mà bạn cần để tìm hiểu XML.
- Vùng XML trên developerWorks: Tìm hiểu để nâng cao kỹ năng của bạn trong lĩnh vực XML, bao gồm DTD, các lược đồ và XSLT. Xem thư viện kỹ thuật XML với một loạt các bài viết kỹ thuật và các lời khuyên, các hướng dẫn, các tiêu chuẩn và các sách Đỏ (Redbooks) của IBM.
- Chứng chỉ XML của IBM: Tìm hiểu làm thế nào để bạn có thể trở thành một nhà phát triển có chứng chỉ của IBM về XML và các công nghệ liên quan.
- Webcast và các sự kiện kỹ thuật của developerWorks: Theo sát công nghệ trong các phiên làm việc này.
- Các demo theo yêu cầu của developerWorks: Xem các demo trải rộng từ việc cài đặt và thiết lập sản phẩm cho người mới bắt đầu đến các chức năng nâng cao cho các nhà phát triển có kinh nghiệm.
- developerWorks trên Twitter: Tham gia hôm nay để theo dõi các mẫu tin tweet trên developerWorks.
- developerWorks podcasts: Nghe các cuộc phỏng vấn và các cuộc thảo luận thú vị dành cho các nhà phát triển phần mềm.
- Các demo theo yêu cầu của developerWorks: Xem các demo trải rộng từ cài đặt và thiết lập sản phẩm cho người mới bắt đầu đến các chức năng nâng cao cho các nhà phát triển có kinh nghiệm.
Lấy sản phẩm và công nghệ
- EpubCheck: Tải về phiên bản mới nhất của trình xác nhận hợp lệ để làm việc với các tài liệu EPUB 2 và EPUB 3.
nend: Nhận bộ các công cụ XSLT và Python đầy đủ để chuyển đổi các tệp NCX thành các END.
- STIX Fonts: Sử dụng bộ phông chữ đầy đủ dùng cho cộng đồng khoa học và kỹ thuật.
- Các phiên bản đánh giá sản phẩm của IBM: Tải về hoặc khám phá các bản dùng thử trực tuyến trong SOA Sandbox của IBM và nhận các công cụ phát triển ứng dụng thực hành của bạn và các sản phẩm phần mềm trung gian từ DB2®, Lotus®, Rational®, Tivoli® và WebSphere®.
Thảo luận
- Hồ sơ developerWorks: Tạo hồ sơ của bạn ngày hôm nay và thiết lập một danh sách theo dõi.
- Các diễn đàn thảo luận vùng XML: Tham gia vào bất kỳ cuộc thảo luận liên quan đến XML.
- Cộng đồng developerWorks: Kết nối với những người dùng developerWorks khác thông qua các blog, các diễn đàn, các nhóm và các wiki theo hướng nhà phát triển.
Bình luận
-
Vùng dữ liệu trên developerWorks
Khám phá các bài viết xoay quanh lĩnh vực dữ liệu, Quản lý hệ thống thông tin
-
Vùng mã nguồn mở trên developerWorks
Xem các bài viết về HTML, CSS, JavaScript,...
-
Điện toán đám mây
Tìm hiểu về điện toán đám mây

markdown:
## Giới thiệu
EPUB là định dạng XML dùng cho các sách và các ấn phẩm số có khả năng tự tương thích.và được chuẩn hóa bởi Diễn đàn xuất bản số quốc tế (IDPF). Năm 2009, EPUB 2 là định dạng sách điện tử phổ biến được hầu hết các nhà bán lẻ và hệ thống sách điện tử lớn sử dụng.
Các tệp lưu trữ ZIP của EPUB đều được đóng gói theo một cấu trúc rõ ràng. Mỗi thành phần có đặc tả riêng của mình, được hợp nhất dưới nhãn EPUB chung:
**Đặc tả đóng gói**
- Định nghĩa phương pháp đóng gói một tài liệu EPUB.
**Ấn phẩm EPUB**
- Bao gồm thông tin về các nội dung của sách điện tử: thông tin của gói package,
tiêu đề đơn giản, thông tin tác giả và—đối với EPUB
3— còn hỗ trợ thêm các tính năng nâng cao như JavaScript hay
MathML. Thành phần này được gọi là
*Open Container Format file.* **Các tài liệu nội dung của EPUB**
- Thực ra nội dung của ấn phẩm chính là các file XHTML và CSS. Nó cũng bao gồm các tài nguyên nhị phân như hình ảnh, đa phương tiện và các tài liệu XML.
Bài này tìm hiểu một số tính năng của EPUB 3. Bạn sẽ tìm hiểu cách xác nhận hợp lệ các tài liệu EPUB 3, các chỉ dẫn, phân cấp và các tài liệu hướng dẫn phát triển. Một ví dụ sẽ hướng dẫn bạn chuyển một trang sách trẻ em thành EPUB 3. Ngoài ra, bạn sẽ tìm hiểu cách đưa MathML vào các ấn phẩm.
[Tải về](#download) các ví dụ được sử dụng trong bài này.
### Điều kiện tiên quyết
Các đoạn mã và ví dụ mẫu trong bài này đều xem rằng bạn đã biết qua về EPUB 2 nói riêng và các
ấn phẩm dựa trên XML nói chung. Xem phần
[Tài nguyên](#resources) để biết
thêm chi tiết về EPUB 2.
## Những thay đổi trong EPUB 3
EPUB 2 cung cấp tất cả các khả năng định dạng và trình bày của HTML4 và CSS2, là quá đủ cho các ấn phẩm nặng về văn bản. Tuy nhiên, các nhà xuất bản và tác giả đã nhận thấy rằng EPUB 2 không thể xử lý nhiều kiểu nội dung trong một số trường hợp như: sách đa phương tiện, sách có bố cục phức tạp, các ấn phẩm toán học và các tài liệu tương tác. Do đó vào tháng 10 năm 2011, cộng đồng IDPF và sách điện tử đã phát hành bản đặc tả cho EPUB 3.
Những thay đổi của EPUB 3 so với EPUB 2:
- Tài liệu đặc tả schema cho EPUB 3 đã chuyển đổi từ XHTML 1.1 sang phiên bản XHTML của HTML5.
Điều này là quan trọng cần thiết để có thể chứa các phần tử đa phương tiện từ
HTML5 (như
<video>,
<audio>và
<canvas>).
- EPUB 3 đã mở rộng phạm vi cho phép các tài liệu CSS từ một tập hợp con của phiên bản CSS2.1 đến một tập hợp các mô đun hoàn thiện của CSS3 có liên quan đến việc soạn thảo tài liệu.
- MathML đã được thêm vào XHTML5 và SVG như là một loại nội dung quan trọng hàng đầu.
- Ngày nay, việc hỗ trợ nhiều phông chữ nhúng là bắt buộc đối với các hệ thống đọc có khả năng hiển thị CSS. Web Open Font Format là định dạng phông chữ mở trên nền Web đã được chấp nhận thêm vào để sử dụng.
- Hỗ trợ chi tiết các kiểu trình bày hay các bố cục không theo chuẩn phương Tây, chẳng hạn như cách trình bày trang giấy theo chiều dọc hay các kiểu của các nước châu Á khác.
- Hỗ trợ tùy chọn tương tác JavaScript trung gian bằng cách sử dụng một mô hình bảo mật tùy chỉnh.
- Các tài liệu xuất bản đã được mở rộng thêm các thông tin metadata (siêu dữ liệu), bao gồm một số hỗ trợ cho RDFa (Resource Description Framework–in–attributes: Khung công tác mô tả tài nguyên-bằng-các thuộc tính).
- Trung tâm điều hướng mở rộng NCX (Navigational Center eXtended) không tán thành việc tạo mục lục (TOC - table of contents) dự trên XHTML5. Tuy nhiên, NCX vẫn cho phép tương thích ngược.
## Validate (xác nhận hợp lệ) các tài liệu EPUB 3
Vì EPUB 3 dựa trên khả năng tuần tự hóa của XML cho hầu hết các kiểu nội dung, nên nó tuân thủ
việc validate tự động. EpubCheck là một công cụ kinh điển để kiểm tra tính hợp lệ và
sự phù hợp của các tài liệu EPUB. Nó chính là một thư viện Java™ mở
(Berkeley Software Distribution-licensed - được cấp phép bởi hệ thống Phân phối phần
mềm Berkeley). Trong bài này, chúng ta sẽ sử dụng phiên bản dành cho nhà phát triển
để làm việc với các tài liệu EPUB 3. Xem phần
[Tài nguyên](#resources) để
tìm đường link tải phiên bản mới nhất .
Chúng tôi khuyên bạn nên sử dụng phần mở rộng .xhtml cho tất cả các tài liệu nội dung EPUB.
Bởi vì các trình duyệt sẽ không biên dịch nội dung HTML thành
application/xhtml+xml nếu thiếu phần mở rộng đó. Việc xử lý XML là bắt
buộc khi làm việc với nhiều tính năng được trình bày trong bài này, chẳng hạn như
các namespace (vùng tên) CSS.
Thông thường, bạn tương tác với EpubCheck thông qua dòng lệnh sau đây.
$ java -jar epubcheck-3.0b3.jar sample.epub Epubcheck Version 3.0b3 No errors or warnings detected.
Nếu bạn nhận được lỗi trả về
java.lang.NoClassDefFoundError:
com/thaiopensource/validate/SchemaReader, bạn hãy chắc chắn rằng thư mục
lib/ đang nằm trong cùng thư mục với tệp JAR của EpubCheck.
EpubCheck 3 có thể tiến hành validate từng thành phần con riêng lẻ của gói EPUB, như trong
[Liệt kê 1](#list1). Tính năng hữu ích này được sử dụng trong các ví dụ
của bài này, nó:
- Giúp cô lập các vấn đề.
- Giảm đi việc phải đóng gói lại gói EPUB thành ZIP thì mới thực hiện validate được.
- Được tích hợp trong một framework kiểm thử ở mức đơn vị (unit testing famework) dùng cho chuỗi công cụ để xuất ra một kiểu tệp duy nhất.
##### Liệt kê 1. Chạy EpubCheck 3 dựa vào một kiểu tệp duy nhất
$ java -jar ~/src/epubcheck-3.0b3.jar sample-toc.xhtml -mode nav Epubcheck Version 3.0b3 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! No errors or warnings detected.
## Sự điều hướng và hệ thống phân cấp trong các tài liệu EPUB 3
Mặc dù tệp TOC của NCX trong EPUB 2 đã hỗ trợ nhiều cách đánh dấu để điều hướng phân cấp và ánh xạ tới trang tương ứng, nó được bắt nguồn từ Digital Talking Book (Sách nói số - một đặc tả để tạo phiên bản điện tử cho các quyển sách không được in ra) của DAISY (Digital Accessible Information System - Hệ thống thông tin số có thể truy cập được). Định dạng DAISY đã được đặc tả rõ ràng giúp dễ dàng phát triển các trình đọc sách điện tử và hỗ trợ nhiều khả năng tiếp cận. Từ đó, NCX có thể vận hành một cách trơn tru. Tuy nhiên, đặc tả DTD của NCX là khá lớn bao gồm các tính năng không liên quan đến EPUB 2. Sự nhầm lẫn về việc bắt buộc phải có các thành phần nào của NCX trong EPUB đã dẫn đến sự phân mảnh không mong muốn và tạo ra các phần mở rộng độc quyền của một số nhà bán lẻ và các nhà cung cấp hệ thống đọc sách điện tử.
EPUB 3 không sử dụng NCX mà thay thế nó bằng END (EPUB Navigational Document – Tài liệu điều
hướng của EPUB).
[Liệt kê 2](#list2) cho thấy một ví dụ. END sử dụng
XHTML5 chứ không phải là một DTD tùy biến, do đó làm giảm số lượng các định dạng XML
để thực thi và validate. Các thuộc tính EPUB tùy biến được cung cấp thông qua EPUB
namespace (http://www.idpf.org/2007/ops).
##### Liệt kê 2. Một END tối thiểu
  <title>Example</title>

Contents

 Chapter 1

Phần tử
 của HTML5 là bắt buộc (cũng như giá trị
toc của
epub:type).
### Khai báo END
Đặt END vào một ấn phẩm bằng cách khai báo
item trong bảng kê khai
manifest với giá trị
nav cho thuộc tính
properties, như trong
[Liệt kê 3](#list3).
##### Liệt kê 3. Đưa một END vào một OPF (EPUB Package Document - Tài liệu đóng gói EPUB)
<manifest> <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>
Việc đưa vào một tệp END là bắt buộc trong EPUB 3. Bạn cũng có thể thêm vào một tệp NCX để tận
dụng tính tương thích ngược, nhưng các bộ vi xử lý EPUB 3
*sẽ phải* sử dụng
END và bỏ qua NCX.
### Tính trực quan của END
Không giống như NCX, bạn có thể đưa END vào thẳng nội dung của sách. Trong EPUB 2, nếu bạn muốn hiển thị một mục lục tùy biến cho người sử dụng (không phải mục lục có sẵn trong các chương trình eReader – Trình đọc sách điện tử), thì bạn phải tạo ra hai bản sao của cùng một nội dung—một bản theo NCX và một bản tài liệu nội dung HTML. END loại bỏ sự trùng lặp này và cho phép linh hoạt hơn nhiều trong việc trình bày một vài hay tất cả mục lục trong luồng nội dung.
Để thêm END vào luồng nội dung, chỉ cần đặt nó vào thẻ
spine của
OPF, xem
[Liệt kê 4](#list4).
##### Liệt kê 4. Đưa END vào luồng nội dung
<spine> <itemref idref="toc" /> <itemref idref="chapter_001" /> ... </spine>
Trong các tài liệu có hệ phân cấp sâu, chẳng hạn như tài liệu hướng dẫn kỹ thuật, bạn có thể
muốn đưa tất cả các cấp sâu hơn vào mục lục, nhưng chỉ muốn hiển thị các đầu mục ở
cấp đầu tiên hoặc cấp thứ hai cho người dùng. Để làm được điều này, bạn có thể sử
dụng thuộc tính
hidden của HTML5, như trong
[Liệt kê 5](#list5), trên bất kỳ cấp nào mà bạn muốn dấu đi và không
hiển thị cho người dùng.
##### Liệt kê 5. Dấu đi các cấp con khỏi mục lục
...

 Chapter 1

 Chapter 1 subsection

 Chapter 1 subsection 1 ...
Có thể bạn đang thắc mắc là vì sao không thể làm được điều này bằng cách sử dụng thuộc tính
display: none của CSS. Do EPUB được sử dụng trong
nhiều hệ thống đọc, bao gồm cả các trình đọc màn hình không trực quan hoặc các thiết
bị Braille, mà không phải tất cả các trình đọc đều hỗ trợ CSS. Nhưng hầu hết các
trình duyệt web hiện đại lại hỗ trợ thuộc tính
hidden. Có
một cách là thêm một tệp CSS để chứa các thiết lập cho thuộc tính hiển thị của những
phần tử này, như trong
[Liệt kê 6](#list6). Vì tệp END chỉ là một tệp
HTML, nên bạn có thể thêm CSS vào thẻ
head, giống như với
bất kỳ bản định kiểu khác.
##### Liệt kê 6. Thiết lập đặc tính hiển thị
/* Never display elements with the hidden attribute */ *[hidden] { display: none; }
Trên các hệ thống đọc hoặc các trình duyệt không tương thích, việc không thiết lập thuộc tính
hidden sẽ khiến tất cả các phần con được hiển thị,
như trong
[Hình 1](#fig1).
##### Hình 1. Mục lục END không có thuộc tính hidden hay CSS
![ Ảnh chụp màn hình về cách bố trí tệp END không có thuộc tính ảo nào, cho thấy tất cả các phần con](end-shown.jpg)
Trên các trình duyệt có hỗ trợ thuộc tính
hidden hoặc sau khi bạn
cung cấp một đoạn mã đệm CSS, kết quả đầu ra sẽ khác hoàn toàn, như trong
[Hình 2](#fig2).
##### Hình 2. Mục lục END có áp dụng thuộc tính hidden
![ Ảnh chụp màn hình về cách bố trí tệp END có thuộc tính ảo, cho thấy không có các phần con nào](end-hidden.jpg)
Theo mặc định, danh sách theo thứ tự HTML sẽ được đánh số. Tuy nhiên, đặc tả END viết rằng, "
. . . kiểu hiển thị mặc định của các mục danh sách phải tương ứng với
CSS list-style: none." Để trình bày được theo kiểu này, hãy
thêm một thông số vào đoạn mã đệm CSS của EPUB 3, như trong
[Liệt kê
7](#list7).
##### Liệt kê 7. Thiết lập kiểu của các mục danh sách
/* In a declared TOC list, never show list numbering */ nav#toc ol { list-style-type: none; }
### Chuyển đổi từ NCX sang END thông qua XSLT
Mặc dù END của EPUB 3 cung cấp nhiều tùy chọn hơn để bố cục và kiểm soát, nếu bạn đang muốn chuyển từ EPUB 2 sang EPUB 3 thì hãy bắt đầu xem xét chuyển đổi từ các tài liệu NCX hiện có. Vì cả hai tài liệu vào và ra đều là XML, nên đây là một ứng dụng hoàn hảo cho XSLT.
[Liệt kê 8](#list8) cung cấp framework cơ bản để tạo ra tài liệu HTML có chứa mục
lục.
##### Liệt kê 8. Khai báo các namespace (vùng tên) cần thiết cho NCX và END
<?xml version="1.0"?> <xsl:stylesheet version="1.0" exclude-result-prefixes="ncx xsl" xmlns="http://www.w3.org/1999/xhtml" xmlns:ncx="http://www.daisy.org/z3986/2005/ncx/" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="ncx:ncx">   <title><xsl:apply-templates select="/ncx:ncx/ncx:docTitle/ncx:text"/></title>   <xsl:apply-templates/>   </xsl:template>
Lưu ý việc sử dụng namespace
http://www.idpf.org/2007/ops là bắt
buộc, thường được gắn với tiếp đầu ngữ
epub. Thêm vào
namespace này chính là để hỗ trợ ngữ nghĩa của EPUB (ý nghĩa bổ sung cho một mục
đích cụ thể mà một phần tử có trong một tài liệu EPUB). Nếu sử dụng EPUB 3, bạn được
khuyến khích sử dụng các ngữ nghĩa có sẵn trong Structural Semantics Vocabulary
(Bảng từ vựng ngữ nghĩa) để cung cấp bối cảnh cho phần mềm truy cập cũng như việc xử
lý của máy tính. Xem phần
[Tài nguyên](#resources) để biết thông tin về
các giá trị có trong bảng từ vựng đó.
Với nét những thông tin cơ bản sẵn có, hãy bắt đầu xem qua mục lục phân cấp trong NCX và cung
cấp các phần tử XHTML tương ứng. Mặc dù NCX cho phép áp dụng các kiểu khác nhau vào
danh sách trang, nhưng các sách EPUB thường chỉ bao gồm
ncx:navMap. Template được trích dẫn trong
[Liệt kê 9](#list9)
cho thấy làm thế nào để xuất ra một tập hợp các node (nút) từ
ncx:navMap.
##### Liệt kê 9. Xuất ra navMap
...  <xsl:template match="ncx:navMap">  <xsl:copy-of select="@class"/> <xsl:choose> <xsl:when test="ncx:navLabel"> <xsl:apply-templates select="ncx:navLabel" mode="heading"/> </xsl:when> <xsl:otherwise> <xsl:if test="self::ncx:navMap">
Table of Contents
 </xsl:if> </xsl:otherwise> </xsl:choose>
 <xsl:apply-templates select="ncx:navPoint|ncx:navLabel"/>
  </xsl:template> <xsl:template match="ncx:navPoint"> <xsl:text> </xsl:text>
 <xsl:copy-of select="@id|@class"/>   <xsl:apply-templates select="ncx:navLabel"/>   <xsl:if test="ncx:navPoint">
 <xsl:apply-templates select="ncx:navPoint"/>
 </xsl:if>
 </xsl:template>  <xsl:template match="ncx:navLabel|ncx:text"> <xsl:apply-templates/> </xsl:template> ...
[Liệt kê 10](#list10) là ví dụ về một NCX phân cấp.
##### Liệt kê 10. Ví dụ về một NCX có tổ chức phân cấp
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN" "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd"> <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1" xml:lang="en">  <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" />  <docTitle> <text>Middlemarch</text> </docTitle> <navMap> <navPoint id="np1" playOrder="1"> <navLabel> <text>Prelude</text> </navLabel> <content src="prelude.html"/> </navPoint> <navPoint id="np2" playOrder="2"> <navLabel> <text>I: Miss Brooke</text> </navLabel> <content src="book1.html" /> <navPoint id="np3" playOrder="3"> <navLabel> <text>Chapter 1</text> </navLabel> <content src="chapter1.html" /> </navPoint> <navPoint id="np4" playOrder="4"> <navLabel> <text>Chapter 2</text> </navLabel> <content src="chapter2.html" /> </navPoint> ...
Việc chuyển đổi tệp trong
[Liệt kê 10](#list10) khi sử dụng XSLT dẫn đến kết quả
như [Liệt kê 11](#list11) dưới đây. Bạn có thể [tải
về](#download) các tệp ví dụ.
##### Liệt kê 11. Kết quả của việc chuyển đổi từ NCX sang END
<?xml version="1.0"?>   <title>Middlemarch</title>
Table of Contents

 Prelude

 I: Miss Brooke

 Chapter 1

 Chapter 2
 ...
Vì các giá trị
@id được lưu giữ từ tệp ban đầu, nên bạn có thể sẽ
viết các công cụ validate để bảo đảm rằng tất cả các node gốc đều đã được nắm giữ.
Các tùy chọn khác cho việc chuyển đổi thêm bao gồm:
- Cập nhật siêu dữ liệu trong tệp OPF từ lược đồ Dublin Core cũ đến siêu lược đồ
@property, như được định nghĩa trong đặc tả Publications 3.0 (xem phần
[Tài nguyên](#resources)).
- Chuyển đổi nội dung
guidebị phản đối của OPF sang tính năng
landmarkstrong END.
- Loại bỏ thông tin trong OPF
spinecho tệp NCX (trừ khi bạn đang tạo ra một tài liệu mang tính tương thích ngược).
Thông thường, không cần thiết sửa đổi nội dung XHTML 1.1 để tạo ra các tài liệu tương thích
EPUB 3. Tuy nhiên, ở nơi có sẵn thông tin ngữ nghĩa, chẳng hạn như việc kéo từ một
hệ thống quản lý nội dung hoặc kho lưu trữ tài liệu khác, hãy xem xét áp dụng biến
tố ngữ nghĩa cho kết quả đầu ra. Đặc tả EPUB 3 có thông tin thêm về biến tố ngữ
nghĩa (xem phần
[Tài nguyên](#resources)).
## Các hướng dẫn phát triển EPUB 3
Chỉ đến khi nào các hệ thống sẵn sàng hỗ trợ đọc EPUB 3, còn bây giờ vẫn còn là quá sớm để đưa ra các hướng dẫn thực hành cụ thể cho định dạng này. Tuy nhiên, EPUB 3 dựa trên việc hoàn thiện nhanh chóng các công nghệ web. Đã có đủ thông tin khuyến cáo về cách sử dụng các công nghệ cơ bản và thời điểm sử dụng các hướng dẫn thực hành tốt nhất để tạo ra cách đánh dấu có khả năng truy cập, ngữ nghĩa, chắc chắn.
### Thời điểm tạo ra EPUB 3
Bạn nên sử dụng EPUB 2 hay EPUB 3 để tạo ra sách điện tử? Thật may mắn là tính tương thích
ngược đã trở thành một mục tiêu thiết kế của EPUB 3. Bạn sẽ nhận được lợi ích từ
những cải tiến ngữ nghĩa và siêu dữ liệu phong phú trong EPUB 3 trong khi vẫn có thể
đọc được trên các Trình đọc sách điện tử (eReader) cũ. Trong thực tế, có khả năng là
bạn không thể bán những nội dung như vậy trong một số chợ sách điện tử; chúng có thể
không chấp nhận EPUB 3 vì các quy định kinh doanh. Tuy nhiên, có thể hy vọng "việc
nhận" (sideloading) nội dung như vậy sẽ làm việc với hầu hết các hệ thống đọc EPUB 2
phù hợp. EPUB 3 cũng đã được thiết kế để tiến tới tương thích về mặt hỗ trợ hệ thống
đọc—một hệ thống đọc EPUB 3
*phải* hỗ trợ các tài liệu
EPUB 2 hợp lệ.
Nhiều hệ thống đọc đã hỗ trợ một loại "EPUB 2.5", cho phép hiển thị HTML5 (đặc biệt là liên
quan đến các phần tử
video,
audio và
canvas). Bạn nên hy vọng các nền
tảng đọc sách điện tử (eReading) có các công cụ trình duyệt web, chẳng hạn như Apple
iBooks, để trình diễn thành công nhiều phần tử được phép trong các tài liệu nội dung
EPUB 3. Cũng giống như với bất kỳ nội dung web hàng đầu nào, hãy kiểm tra nội dung
trong các trình đọc càng nhiều càng tốt trước khi phát hành.
### Responsive eBook design (Thiết kế sách điện tử mang tính đáp ứng)
Mô đun CSS3 Media Query (Truy vấn phương tiện CSS3) là một thành phần mới thú vị của EPUB 3. Media Query cho phép các tác giả quy định một tập hợp các quy tắc và các đặc tính chỉ áp dụng cho một điều kiện đọc sách cụ thể, thường dựa trên kích cỡ của khung nhìn. Bạn cũng có thể sử dụng Media Query để thiết lập tỷ lệ chiều cao và chiều rộng cụ thể, chẳng hạn như hướng thẳng đứng so với hướng nằm ngang.
Những tính năng này vẫn đang sử dụng trên một số trang web để cung cấp những trải nghiệm người
dùng được cải thiện trên các thiết bị di động. Tóm lại, những nguyên tắc này được
gọi là
*Responsive Web Design (thiết kế web mang tính đáp ứng)*. Các kỹ thuật
này đã được chứng minh là có hiệu quả trên nền web và chúng cũng thích hợp trong
việc thiết kế sách. Các nhà thiết kế sách đã rút ra từ nhiều thập kỷ nghiên cứu và
thử nghiệm về cách trình bày hiệu quả thông tin hình ảnh theo nhiều kích cỡ và hướng
hiển thị khác nhau. (Xem phần [Tài nguyên](#resources) để biết thêm về
Responsive Web Design).
Hầu hết sách điện tử chủ yếu là văn bản. Tuy nhiên, nhiều ấn phẩm yêu cầu bố cục phải phong phú hơn vì các lý do tiếp thị hoặc vì để phù hợp với nội dung. Các sách tập trung vào bố cục đã được xem là những ứng cử viên nghèo nàn về chuyển đổi sách điện tử, nhưng EPUB 3 với việc sử dụng HTML5 và CSS3 cho phép các thiết kế tiên tiến hơn. Mặc dù quyền lực càng lớn, trách nhiệm càng cao. Bạn không thể bỏ mặc những người dùng các thiết bị di động, những người muốn đọc nội dung một cách dễ dàng với các bố cục hấp dẫn. Đây là nơi các kỹ thuật kết hợp về bố cục CSS3 và Responsive eBook Design gặp nhau.
## Bố cục tiên tiến, mang tính đáp ứng trong EPUB 3
Những quyển sách có nhiều minh họa, sách dạy nấu ăn, sách giáo khoa và sách thi ca đã rất khó
để chuyển đổi sang nội dung mang tính thích ứng được. Trong phần này, hãy xem làm
thế nào để cải biên một trang từ cuốn sách thơ ca dành cho trẻ em, trong
[Hình 3](#fig3), thành EPUB 3. Từ *cải biên* đã được sử dụng thay
cho *chuyển đổi,* vì quá trình này có tính nghệ thuật y như tính kỹ thuật
##### Hình 3. Một trang từ
*Abroad* của Thomas Crane (hình ảnh
được lấy từ Kho lưu trữ công cộng trên Internet) ![ Ảnh chụp màn hình từ cuốn sách 'Abroad' để được thích ứng trong EPUB 3](abroad-page.jpg)
Cách tiếp cận này là nắm giữ nội dung văn bản như XHTML rồi trích ra một số hình ảnh để gợi
lên—nhưng không tạo lại—bố cục ban đầu. Do EPUB 3
giả định một bối cảnh xử lý XHTML5/CSS3, nên bạn có thể sử dụng cách đánh dấu ngữ
nghĩa tối thiểu thay vì cung cấp nhiều trình duyệt cũ, như bạn thường làm trên trang
web mở.
[Liệt kê 12](#list12) cho thấy cách đánh dấu XHTML cho nội dung.
##### Liệt kê 12. Cách đánh dấu thi ca
<?xml version="1.0"?>   <title>Example of Media Query in EPUB 3</title> <link rel="stylesheet" type="text/css" href="childrens-book-style.css" />

The Swans.

 "Ho! pretty swans, Do you know, in our Zoo' The swans of old England Are just like you?"

 "Don't tell me!" Said a cross old bird; "I know better, The thing's quite absurd.

 Their figures, I'm sure, Are not worth a glance: If you want to see style, You must come to France."

 With a scornful whisk The swan turned tail, Spread its wings to the breeze And was off full-sail.

 "Ho! pretty swan, Do you know, in our Zoo' The swans are not half So conceited as you?"

Đoạn mã trên không chứa hình ảnh nào. Để cho thuận tiện, các hình ảnh sẽ được cung cấp theo
CSS. Mặc dù nhiều người ủng hộ phát triển Responsive Web tán thành cách tạo ra phiên
bản dành cho di động trước tiên, sau đó mới cải biên để hiển thị trên máy tính hay
tablet (máy tính bảng). Ví dụ, người ta giả định rằng khung nhìn mặc định là một màn
hình dạng lớn.
[Liệt kê 13](#list13) cho thấy CSS và [Hình
4](#fig4) cho thấy sách điện tử kết quả khi được hiển thị trong iBooks trên iPad của
Apple.
##### Liệt kê 13. CSS cho một bố cục màn hình có kích cỡ máy tính bảng
@namespace epub "http://www.idpf.org/2007/ops"; body { font-family: Georgia, serif; margin: 0; padding: 0; } /* Select the entire
 and apply the background images at various positions relative to the text. */ 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; } /* Use the CSS Selector module to apply rule-based formatting to the poetry content, generating alternating rows of indented text. */ p > span:nth-child(even) { text-indent: 1em; }
Ví dụ này đang sử dụng cú pháp
@namespace từ các mô đun CSS
Namespaces. Các CSS Namespaces cho phép định kiểu các phần tử và các thuộc tính có
các tiền tố là namespace đó. Mặc dù không nhất thiết phải sử dụng các CSS namespaces
trong EPUB 3, nhưng thật thuận tiện để đính kèm các kiểu dáng cho những phần tử đó
với biến tố ngữ nghĩa của EPUB (thuộc tính
@epub:type)
chứ không phải tạo ra các lớp riêng biệt chỉ để định kiểu. Tài liệu HTML
*phải* sử dụng một phần mở rộng .xhtml phù hợp với hầu hết các trình
duyệt để xử lý đúng các vùng tên CSS.
##### Hình 4. Trang của cuốn sách
*Abroad* được hiển
thị trên một màn hình có kích cỡ máy tính bảng ![ Ảnh chụp màn hình một trang của cuốn sách 'Abroad' bằng XHTML trong iBooks trên iPad](abroad-ipad.jpg)
Với hình ảnh canh lề phải và biên giới trang trí lớn, người ta có thể cho rằng bố cục trong
[Hình 4](#fig4) gợi lên trang gốc. Tuy nhiên, việc trình bày này không
thích hợp với một thiết bị di động trong chế độ hiển thị thẳng đứng, ở đó chiều rộng
sẽ không đủ cho cả hình ảnh lẫn văn bản. Đối với các thiết bị di động, thường có độ
rộng khoảng 480 pixel, bạn có thể ghi đè lên một số phần tử, như trong [Liệt kê 14](#list14). Với CSS trong [Liệt kê 14](#list14):
- Hình ảnh của những con thiên nga sẽ co lại, trở thành trung tâm và xuất hiện trước văn bản. Hình ảnh trang trí ở phía dưới cùng sẽ co lại để tránh lấn át nội dung của bài thơ.
- Tiêu đề sẽ trở nên nhỏ hơn và được canh ở giữa.
- Bản thân văn bản bài thơ sẽ ở giữa nhiều hơn chứ không phải được canh lệch hẳn sang lề trái.
##### Liệt kê 14. CSS cho bố cục thẳng đứng của màn hình có kích cỡ điện thoại
@media screen and (max-width:480px) { 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%; } }
Chỉ dẫn ở trên làm theo CSS trước đó, vì vậy nó chỉ cần ghi đè lên các đặc tính có
giá trị đã thay đổi theo bố cục mới.
[Hình 5](#fig5) cho thấy kết quả,
trải rộng trên hai trang.
##### Hình 5. Trang từ cuốn sách
*Abroad* được hiển
thị trên màn hình có kích cỡ điện thoại ![ Ảnh chụp màn hình một trang của cuốn sách 'Abroad' bằng XHTML trong iBooks trên Apple iPhone](abroad-iphone.jpg)
Sự trình bày hẹp về chiều rộng hoạt động tốt trong một bố cục thẳng đứng, nhưng một bài thơ
ngắn như vậy có thể dễ dàng ăn khớp, hoàn toàn được trình bày trên hầu hết các trang
nằm ngang. Bạn có thể thêm một truy vấn phương tiện cuối cùng để cho phép các thiết
bị định hướng nằm ngang trình bày các bài thơ theo nhiều cột. Tính năng này là một
phần của mô đun Text của CSS và là một phần cốt lõi trong việc hỗ trợ CSS 3 của
EPUB. CSS với bố cục hiển thị nằm ngang của màn hình có kích cỡ điện thoại trong
[Liệt kê 15](#list15).
##### Liệt kê 15. CSS cho bố cục nằm ngang của màn hình có kích cỡ điện thoại
@media screen and (orientation:landscape and max-width:480px) { div[epub|type="chapter"] { background-position: 97% 40%, bottom center; background-size: 20% auto, 50% auto; /* 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; padding: 2em 4em 5em 4em; } }
[Hình 6](#fig6) cho thấy kết quả được hiển thị.
##### Hình 6. Trang từ cuốn sách
*Abroad* được hiển
thị trên một màn hình có kích cỡ điện thoại theo hướng nằm ngang ![ Ảnh chụp màn hình một trang của cuốn sách 'Abroad' trong XHTML trên Mobile Safari theo hướng thẳng đứng](abroad-iphone-landscape.jpg)
## Đưa MathML vào các ấn phẩm
Trong EPUB 2, các ấn phẩm có thể đưa vào nội dung toán học chỉ bằng cách sử dụng hình ảnh hoặc SVG. Mặc dù toán học SVG có thể tạo ra kết quả đầu ra hấp dẫn, nhưng nó cản trở không cho các trình đọc nhìn thấy và khó viết. Các hình ảnh thì còn tồi tệ hơn vì chúng không cung cấp khả năng truy cập cũng như không thay đổi phông chữ phù hợp và các kích cỡ hiển thị khác nhau.
EPUB 3 có MathML như một kiểu nội dung EPUB nguyên gốc. Có thể cung cấp việc đánh dấu MathML mà không cần bất kỳ sự dự phòng nào khác, ví dụ như một hình ảnh. Các trình đọc của EPUB 3 là cần thiết để ít nhất hỗ trợ MathML hiển thị trong hầu hết các trường hợp.
Mặc dù MathML là một kiểu nội dung cốt lõi, điều cần thiết là bạn khai báo các trang
XHTML nào có MathML trong tệp OPF, như trong
[Liệt kê 16](#list16).
##### Liệt kê 16. Khai báo nội dung MathML trong tệp OPF
<manifest> <item href="mathml-style.css" id="css1" media-type="text/css"/> <item href="mathml.xhtml"
properties="mathml"id="page1" media-type="application/xhtml+xml"/> <item href="toc.ncx" id="ncx" media-type="application/x-dtbncx+xml"/> <item id="toc" properties="nav" href="toc.xhtml" media-type="application/xhtml+xml"/> </manifest> [Liệt kê 17](#list17) cho thấy một phương trình đơn giản. Mặc dù hiện nay một số
trình duyệt web hỗ trợ MathML trong bối cảnh HTML5 (không cần tạo namespace), nhưng
EPUB 3 vẫn yêu cầu khai báo nội dung MathML trong namespace đúng là
http://www.w3.org/1998/Math/MathML.
##### Liệt kê 17. MathML trong tài liệu nội dung EPUB 3
<?xml version="1.0"?>   <title>Example of MathML in EPUB 3</title> <link rel="stylesheet" type="text/css" href="mathml-style.css" />   <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>
[Hình 7](#fig7) cho thấy kết quả hiển thị trong iBooks. Bạn có thể cần
nhúng một phông chữ gồm có các ký hiệu toán học phù hợp cho tất cả các kiểu phương
trình để hiển thị đúng. Xem phần [Tài nguyên](#resources) để biết thông
tin về các Fonts của STIX để sử dụng trong các ấn phẩm khoa học.
##### Hình 7. Các phương trình toán học đơn giản được hiển thị trong EPUB 3
![ Ảnh chụp màn hình một phương trình trong một cuốn sách EPUB 3](mathml.jpg)
Nhiều hệ thống, cung cấp MathML, có thể sử dụng các thực thể có tên là một phần của
DTD của MathML 1.0, chẳng hạn như
±. Bạn
cần chuyển đổi những thực thể này thành các thực thể số trước khi đưa vào một ấn
phẩm EPUB3. Như các DTD bên ngoài, ngay cả đối với các kiểu nội dung cốt lõi, chúng
không nên được đưa vào kho lưu trữ của EPUB.
## Các chủ đề cần nghiên cứu thêm
EPUB 3 cung cấp nhiều tùy chọn cho việc phát triển các ấn phẩm nguyên gốc số, tiên tiến. Bạn có thể khám phá các chủ đề sau.
- Sử dụng
canvascủa HTML5 kết hợp với JavaScript cho các sách tương tác.
- Nếu bạn quan tâm đến Semantic Web, hãy tự mình làm quen với các tùy chọn biến tố ngữ nghĩa trong Structural Semantics Vocabulary của EPUB 3.
- Các vai trò ngữ nghĩa học HTML5 và WAI-ARIA (Accessible Rich Internet Applications Suite - Bộ dụng cụ các ứng dụng Internet phong phú có khả năng truy cập) đưa ra một phương pháp hấp dẫn để làm phong phú thêm nội dung dành cho người dùng phù hợp với các thiết bị hỗ trợ hoặc các thuật toán trong máy.
EPUB 3 vẫn đang được mở rộng. Có thể các tính năng từ các mô đun CSS mới, như CSS Regions (Các vùng CSS) sẽ được tích hợp trong các bản sửa đổi trong tương lai.
## Các tải về
|Mô tả||Tên||Kích thước|
|XSLT and sample files for NCX transformation|[childrens-book-epub.zip](http://public.dhe.ibm.com/software/dw/xml/x-richlayoutepub/childrens-book-epub.zip) [mathml-epub.zip](http://public.dhe.ibm.com/software/dw/xml/x-richlayoutepub/mathml-epub.zip)
## Tài nguyên
### Học tập
[Xây dựng một cuốn sách số với EPUB](http://www.ibm.com/developerworks/xml/tutorials/x-epubtut/index.html?S_TACT=105AGY75)(Liza Daly, developerWorks, 07.2011): Tìm hiểu chi tiết về định dạng EPUB. [Đặc tả EPUB 3](http://idpf.org/epub/30): Mô tả tổng quan về phiên bản hiện hành của tiêu chuẩn EPUB. [Đặc tả được khuyến cáo về các ấn phẩm EPUB 3.0](http://idpf.org/epub/30/spec/epub30-publications.html): Tìm hiểu về các yêu cầu phù hợp và ngữ nghĩa học mức ấn phẩm cho EPUB® 3, bao gồm định dạng của Package Document (Tài liệu đóng gói) và các quy tắc về cách tài liệu này và Publication Resources (Tài nguyên xuất bản) khác có liên quan như thế nào để tạo ra một ấn phẩm EPUB phù hợp. [Bảng từ vựng ngữ nghĩa học cấu trúc EPUB 3](http://idpf.org/epub/vocab/structure/): Tìm hiểu thêm về thiết lập các đặc tính liên quan đến mô tả về ngữ nghĩa học cấu trúc của các tác phẩm viết. [HTML5 dành cho Nhà xuất bản](http://shop.oreilly.com/product/0636920022473.do)(Sanders Kleinfeld, O'Reilly Media, 2011): Hãy nhận sách EPUB miễn phí này, một cuốn sách chứng tỏ việc sử dụng tương tác dựa trên khung nền ảnh và các tính năng thú vị khác của EPUB 3. [Responsive Web Design](http://www.abookapart.com/products/responsive-web-design)của Ethan Marcotte: Khám phá các kỹ thuật và các nguyên tắc thiết kế CSS, bao gồm các lưới linh động, các hình ảnh linh hoạt và các truy vấn phương tiện truyền thông. [Bạn mới tìm hiểu XML phải không?](http://www.ibm.com/developerworks/xml/newto/?S_TACT=105AGY75)Hãy nhận tài nguyên mà bạn cần để tìm hiểu XML. [Vùng XML trên developerWorks](https://www.ibm.com/developerworks/xml/?S_TACT=105AGY75): Tìm hiểu để nâng cao kỹ năng của bạn trong lĩnh vực XML, bao gồm DTD, các lược đồ và XSLT. Xem [thư viện kỹ thuật XML](http://www.ibm.com/developerworks/views/xml/libraryview.jsp?S_TACT=105AGY75)với một loạt các bài viết kỹ thuật và các lời khuyên, các hướng dẫn, các tiêu chuẩn và các sách Đỏ (Redbooks) của IBM. [Chứng chỉ XML của IBM](http://www-03.ibm.com/certify/certs/01001503.shtml): Tìm hiểu làm thế nào để bạn có thể trở thành một nhà phát triển có chứng chỉ của IBM về XML và các công nghệ liên quan. [Webcast và các sự kiện kỹ thuật của developerWorks](http://www.ibm.com/developerworks/briefings/?S_TACT=105AGY75): Theo sát công nghệ trong các phiên làm việc này. [Các demo theo yêu cầu của developerWorks](http://www.ibm.com/developerworks/demos/?S_TACT=105AGY75): Xem các demo trải rộng từ việc cài đặt và thiết lập sản phẩm cho người mới bắt đầu đến các chức năng nâng cao cho các nhà phát triển có kinh nghiệm. [developerWorks trên Twitter](http://twitter.com/#!/developerworks/): Tham gia hôm nay để theo dõi các mẫu tin tweet trên developerWorks. [developerWorks podcasts](https://www.ibm.com/developerworks/mydeveloperworks/groups/service/html/communityview?communityUuid=70786d1c-a2d4-4de8-a807-fccfa600bc77): Nghe các cuộc phỏng vấn và các cuộc thảo luận thú vị dành cho các nhà phát triển phần mềm. [Các demo theo yêu cầu của developerWorks](http://www.ibm.com/developerworks/demos/?S_TACT=105AGY75): Xem các demo trải rộng từ cài đặt và thiết lập sản phẩm cho người mới bắt đầu đến các chức năng nâng cao cho các nhà phát triển có kinh nghiệm.
### Lấy sản phẩm và công nghệ
[EpubCheck](http://code.google.com/p/epubcheck/): Tải về phiên bản mới nhất của trình xác nhận hợp lệ để làm việc với các tài liệu EPUB 2 và EPUB 3. [: Nhận bộ các công cụ XSLT và Python đầy đủ để chuyển đổi các tệp NCX thành các END.](https://github.com/safarijv/epub3-tools/tree/master/transformers/nend)
nend
[STIX Fonts](http://www.stixfonts.org/): Sử dụng bộ phông chữ đầy đủ dùng cho cộng đồng khoa học và kỹ thuật. [Các phiên bản đánh giá sản phẩm của IBM](http://www.ibm.com/developerworks/downloads/?S_TACT=105AGY75): Tải về hoặc [khám phá các bản dùng thử trực tuyến trong SOA Sandbox của IBM](http://www.ibm.com/developerworks/downloads/soasandbox/?S_TACT=105AGY75)và nhận các công cụ phát triển ứng dụng thực hành của bạn và các sản phẩm phần mềm trung gian từ DB2®, Lotus®, Rational®, Tivoli® và WebSphere®.
### Thảo luận
[Hồ sơ developerWorks](https://www.ibm.com/developerworks/mydeveloperworks/profiles/home.do?lang=en&S_TACT=105AGY75): Tạo hồ sơ của bạn ngày hôm nay và [thiết lập một danh sách theo dõi](https://www.ibm.com/developerworks/mydeveloperworks/homepage/help/doc/en/homepage_watchlistuse.html?S_TACT=105AGY75). [Các diễn đàn thảo luận vùng XML](http://www.ibm.com/developerworks/forums/dw_xforums.jspa?S_TACT=105AGY75): Tham gia vào bất kỳ cuộc thảo luận liên quan đến XML. [Cộng đồng developerWorks](https://www.ibm.com/developerworks/community?S_TACT=105AGY75): Kết nối với những người dùng developerWorks khác thông qua các blog, các diễn đàn, các nhóm và các wiki theo hướng nhà phát triển.
## Bình luận
[Vùng dữ liệu trên developerWorks](http://www.ibm.com/developerworks/vn/views/data/libraryview.jsp)
Khám phá các bài viết xoay quanh lĩnh vực dữ liệu, Quản lý hệ thống thông tin
[Vùng mã nguồn mở trên developerWorks](http://www.ibm.com/developerworks/vn/views/opensource/libraryview.jsp)
Xem các bài viết về HTML, CSS, JavaScript,...
[Điện toán đám mây](http://www.ibm.com/developerworks/vn/views/cloud/libraryview.jsp)
Tìm hiểu về điện toán đám mây

Content-Language: en-US

Kp-eeAlive: timeout=10, max=72


text:
talawas – Lời tạm biệt
02/11/2010 | 4:39 sáng | 53 phản hồi
Chuyên mục: 9 năm talawas, Báo chí - Truyền thông
Chín năm qua, talawas đã góp phần khiêm tốn của mình vào sự hình thành và phát triển một công luận độc lập, một ý thức tự do tư tưởng, một tập quán sinh hoạt tinh thần đa nguyên cho người Việt trong và ngoài nước.
Hoàn cảnh đặc thù của những tờ báo và diễn đàn Internet tiếng Việt điều hành tại hải ngoại như talawas luôn đặt những người chủ trương trước câu hỏi: “Làm thế nào để tồn tại?” Câu hỏi ấy đương nhiên đi liền với câu hỏi về ý nghĩa sự tồn tại của mình. Hơn ai hết, chúng tôi mong đến ngày talawas không còn cần thiết nữa. Ngày ấy, nền báo chí tự do của Việt Nam sẽ do những nhà báo chuyên nghiệp, sống với nghề báo và sống bằng nghề báo, đảm nhiệm.
Ngày ấy tuy còn chưa đến, chính quyền Việt Nam hiện thời vẫn tiếp tục áp dụng chính sách kiểm duyệt báo chí và trấn áp tự do ngôn luận như một trong những công cụ then chốt để duy trì quyền lực toàn trị trong chế độ hậu cộng sản, nhưng quang cảnh báo chí và truyền thông Việt Nam trong những năm gần đây đã có những thay đổi quan trọng.
Bất chấp tham vọng cũng như các cơ chế kiểm soát và chỉ đạo tư tưởng của chính quyền, báo chí chính thống tại Việt Nam, đặc biệt là các tờ báo mạng, đã ngày càng tự mở rộng giới hạn cho phép. Nhiều bài, nhiều tác giả dăm năm trước chỉ có thể xuất hiện trên báo chí hải ngoại, nay có thể công khai hiện diện trên những tờ báo trong nước có đông đảo độc giả. Đáng kể hơn nữa là sự phát triển mạnh mẽ của cộng đồng blogger Việt Nam mà chủ lực là những tác giả, học giả, những nhà báo và nhà hoạt động văn hóa, chính trị có tên tuổi trong công luận. Trong một thời gian ngắn, cộng đồng này đã chứng tỏ sức mạnh của mình và trở thành một quyền lực ngày càng độc lập với guồng máy tuyên truyền chính thống, có khả năng phản ứng nhanh nhạy và hiệu quả trước những sự kiện thời sự nóng bỏng. Và đặc biệt là sự ra đời đầy ấn tượng của một số trang mạng độc lập do các trí thức trong nước chủ trì, mà tiêu biểu là trang Bauxite Việt Nam. Như thế, không gian phản biện của những người quan tâm đến các vấn đề của Việt Nam đã được mở rộng hơn rất nhiều so với thời điểm mà talawas bước vào hoạt động và một số năm sau đó.
Xu thế này là khó có thể đảo ngược, song đường tiến tới một nền báo chí tự do cho Việt Nam còn rất dài.
Hệ thống chính trị Việt Nam hiện thời, với những thành tích đàn áp và triệt tiêu mọi ý kiến bất đồng trong quá khứ và ngay cả trong những ngày này, chắc chắn không thay đổi qua đêm. Kinh nghiệm của giai đoạn “Trăm hoa đua nở” đầu những năm 50, của giai đoạn “Đổi mới” cuối những năm 80, cho thấy khoảng không gian tự do ngôn luận vừa giành được đó có thể bị rút lại bất kì lúc nào, bịt miệng những tiếng nói độc lập là điều kiện sống còn của chế độ độc tài tư tưởng. Song ngay cả trong trường hợp chế độ ấy tan rã thì hậu quả và di tích của nó cũng đặt những người làm báo trước những nhiệm vụ khổng lồ.
Chúng tôi cho rằng bối cảnh hiện tại này đòi hỏi một mô hình hoạt động khác, dựa trên những nền tảng khác, mà talawas – xuất phát từ điều kiện và nhu cầu của những năm qua – không còn phù hợp.
Nói lời chia tay sau 9 năm tồn tại, chúng tôi thiết tha hi vọng vào sự ra đời của những mô hình báo chí và truyền thông mới, thực hiện bởi những người được trang bị những khả năng và phương tiện mà chúng tôi đã không thể có, với cùng một nhiệt thành phấn đấu cho một nền báo chí tự do cho Việt Nam.
Chúng tôi chân thành cảm ơn sự cộng tác bền bỉ, chí tình của hàng trăm tác giả, dịch giả suốt 9 năm qua cũng như tình cảm, sự gắn bó và sự hỗ trợ tài chính của các độc giả và thân hữu. Chúng tôi đặc biệt tri ân những đóng góp tận tụy thầm lặng của các chuyên viên kĩ thuật đã giúp talawas đứng vững sau nhiều đợt tấn công của tin tặc.
Quý vị và các bạn là những người làm nên talawas. Toàn bộ kho lưu trữ bài vở của Diễn đàn talawas 2001-2008, talawas blog 2009-2010, talawas chủ nhật và tạp chí talawas, được bảo quản và duy trì trên mạng, là tài sản chung của cộng đồng mạng chúng ta.
Chào tạm biệt.
Ban biên tập talawas 2001-2010
Bùi Duy Dzy, Cao Việt Dũng, Cổ Ngư, Dietmar Erdmann, Đào Tuấn, Đinh Bá Anh, Đỗ Kh., Hà Vũ Trọng, Hòa An, Hoài Phi, Hoàng Hưng, Hương Trà, La Thành, Lê An, Lê Trọng Phương, Lý Đợi, Mai Chi, Ngô Hải, Nguyễn Khánh Hưng, Nguyễn Phú Thịnh, Patrick Raszelenberg, Phạm Thị Hoài, Tiểu Hằng Ngôn, Trịnh Hữu Tuệ, Trương Hồng Quang, Vy Huyền
Phản hồi
53 phản hồi (bài “talawas – Lời tạm biệt”)« Trang trước 1 2 3 4
Cảm ơn tất cả! Tạm biệt và mong ngày gặp lại!
Dục Biệt
Nhung Dục (Trung Đường) có một bài tứ tuyệt
“Biệt Hồ Thượng Đình”, hai câu sau được Bùi Giáng khen là ý tình kín đáo, tả một tâm trạng xa cách :
“Hoàng Oanh trú cửu hồn tương thức
Dục biệt tần đề tứ ngũ thanh”
nhà thơ dịch là :
Ở mãi oanh vàng quen biết lắm
Gần đi hót vội bốn năm thanh.
tôi xin ghi lại tặng nữ trang chủ talawas,
bà Phạm Thị Hoài.
Chỉ còn vài phút thôi là talawas chính thức đóng cửa.
Xin được gửi lời tri ân tới tất cả các tác giả, dịch giả và độc giả của talawas trong 9 năm qua.
Với tất cả những người tình của talawas: Cảm tạ thâm tình và chân tình của các anh. Chín năm kháng chiến can trường, ăn cơm tập thể nằm giường cá nhân. Chào các anh, em tala đi lấy chồng.
“Adieu Mon Pays – ( Enrico Macias ) – Khánh Ly”
Không biết những dòng chữ này còn kịp để xuất hiện trên mạng talawas như môt lời tạ từ hay không. Còn kịp thì hay, không dịp cũng được. Gởi lời nay, tôi chỉ muốn nói lời cảm ơn đến tất cả mọi người đã lao tâm, nhọc sức xây dựng, duy trì và phát triển talawas trong suốt 9 năm qua.
Dù chưa một lần cộng tác bài trên talawas, và cũng chỉ vài lần viết phản hồi, nhưng tôi là độc giả thường xuyên của talawas. Mỗi ngày một lần, có khi, mỗi ngày hai lần, vào một thời điểm cố định trong ngày, tôi đều phải vào đọc talawas và đã trở thành thói quen từ hơn bốn năm nay. Nhưng bắt đầu từ ngày mai, tôi phải thay đổi thói quen này rồi. Buồn thật, nhưng biết làm sao hơn được.
Xin nói lời chân thành, cảm ơn Ban chủ nhiệm, Ban biên tập, các tác giả, các dịch giả, những độc giả viết phản hồi và những người đã thầm lặng đóng góp để talawas tồn tại bền vững và mang lại nhiều điều hay, lẽ đẹp trong suốt 9 năm qua. Kính chúc mọi người nhiều an lành.
Dear Talawas,
Thank you! You’re gone now but I am still here to wait for you to come back ASAP.
Please say: YES! I’M COMING.
Đốt Lò Hương Cũ.
Mượn thơ của Thâm Tâm để chia tay Talawas
“Ta tiễn người không đưa qua sông
Sao thấy tiếng sóng ở trong lòng
Nắng chiều không xám, không vàng vọt
Sao đầy hòng hôn trong mắt trong”.
Và hát một khúc dân ca nước ngoài (?)
“Chỉ còn đêm nay
Chúng ta sẽ chia tay
Đường đêm
Phố vắng
Sánh bước vai kề vai
Và rồi mai đây
Cất cánh xa nơi đây
Dù có quên nhau
Đừng nên quên
Talawas này!
Cám ơn Talawas một lần nữa.
Vĩ Thanh
tiễn chị Hoài
Thế sự mang mang tạm gác ngoài
Đường văn mở lại đón chân ai
Ta hồ ! dấu “thốn tâm thiên cổ”(1)
Còn lại đâu đây một Thị Hoài !
Phùng Tường Vân
3/11/2010
____________
(1)”Ta hồ ! Văn Chương chi sự thốn tâm thiên cổ”
(Hỡi ơi, câu chuyện văn chương, một tấc lòng mà lưu dấu đến ngàn năm)
Chín năm, một quãng đường dài,
Bóng người đi khuất, dấu hài còn nguyên…
Cảm ơn talawas.

markdown:
[talawas – Lời tạm biệt](http://www.talawas.org/?p=26665)
02/11/2010 | 4:39 sáng |
[53 phản hồi](http://www.talawas.org/?p=26665#comments) **Chuyên mục:** [9 năm talawas](http://www.talawas.org/?cat=1912), [Báo chí - Truyền thông](http://www.talawas.org/?cat=14)
Chín năm qua, talawas đã góp phần khiêm tốn của mình vào sự hình thành và phát triển một công luận độc lập, một ý thức tự do tư tưởng, một tập quán sinh hoạt tinh thần đa nguyên cho người Việt trong và ngoài nước.
Hoàn cảnh đặc thù của những tờ báo và diễn đàn Internet tiếng Việt điều hành tại hải ngoại như talawas luôn đặt những người chủ trương trước câu hỏi: “Làm thế nào để tồn tại?” Câu hỏi ấy đương nhiên đi liền với câu hỏi về ý nghĩa sự tồn tại của mình. Hơn ai hết, chúng tôi mong đến ngày talawas không còn cần thiết nữa. Ngày ấy, nền báo chí tự do của Việt Nam sẽ do những nhà báo chuyên nghiệp, sống với nghề báo và sống bằng nghề báo, đảm nhiệm.
Ngày ấy tuy còn chưa đến, chính quyền Việt Nam hiện thời vẫn tiếp tục áp dụng chính sách kiểm duyệt báo chí và trấn áp tự do ngôn luận như một trong những công cụ then chốt để duy trì quyền lực toàn trị trong chế độ hậu cộng sản, nhưng quang cảnh báo chí và truyền thông Việt Nam trong những năm gần đây đã có những thay đổi quan trọng.
Bất chấp tham vọng cũng như các cơ chế kiểm soát và chỉ đạo tư tưởng của chính quyền, báo chí chính thống tại Việt Nam, đặc biệt là các tờ báo mạng, đã ngày càng tự mở rộng giới hạn cho phép. Nhiều bài, nhiều tác giả dăm năm trước chỉ có thể xuất hiện trên báo chí hải ngoại, nay có thể công khai hiện diện trên những tờ báo trong nước có đông đảo độc giả. Đáng kể hơn nữa là sự phát triển mạnh mẽ của cộng đồng blogger Việt Nam mà chủ lực là những tác giả, học giả, những nhà báo và nhà hoạt động văn hóa, chính trị có tên tuổi trong công luận. Trong một thời gian ngắn, cộng đồng này đã chứng tỏ sức mạnh của mình và trở thành một quyền lực ngày càng độc lập với guồng máy tuyên truyền chính thống, có khả năng phản ứng nhanh nhạy và hiệu quả trước những sự kiện thời sự nóng bỏng. Và đặc biệt là sự ra đời đầy ấn tượng của một số trang mạng độc lập do các trí thức trong nước chủ trì, mà tiêu biểu là trang
[Bauxite Việt Nam](http://boxitvn.wordpress.com/). Như thế, không gian phản biện của những người quan tâm đến các vấn đề của Việt Nam đã được mở rộng hơn rất nhiều so với thời điểm mà talawas bước vào hoạt động và một số năm sau đó.
Xu thế này là khó có thể đảo ngược, song đường tiến tới một nền báo chí tự do cho Việt Nam còn rất dài.
Hệ thống chính trị Việt Nam hiện thời, với những thành tích đàn áp và triệt tiêu mọi ý kiến bất đồng trong quá khứ và ngay cả trong những ngày này, chắc chắn không thay đổi qua đêm. Kinh nghiệm của giai đoạn “Trăm hoa đua nở” đầu những năm 50, của giai đoạn “Đổi mới” cuối những năm 80, cho thấy khoảng không gian tự do ngôn luận vừa giành được đó có thể bị rút lại bất kì lúc nào, bịt miệng những tiếng nói độc lập là điều kiện sống còn của chế độ độc tài tư tưởng. Song ngay cả trong trường hợp chế độ ấy tan rã thì hậu quả và di tích của nó cũng đặt những người làm báo trước những nhiệm vụ khổng lồ.
Chúng tôi cho rằng bối cảnh hiện tại này đòi hỏi một mô hình hoạt động khác, dựa trên những nền tảng khác, mà talawas – xuất phát từ điều kiện và nhu cầu của những năm qua – không còn phù hợp.
Nói lời chia tay sau 9 năm tồn tại, chúng tôi thiết tha hi vọng vào sự ra đời của những mô hình báo chí và truyền thông mới, thực hiện bởi những người được trang bị những khả năng và phương tiện mà chúng tôi đã không thể có, với cùng một nhiệt thành phấn đấu cho một nền báo chí tự do cho Việt Nam.
Chúng tôi chân thành cảm ơn sự cộng tác bền bỉ, chí tình của hàng trăm tác giả, dịch giả suốt 9 năm qua cũng như tình cảm, sự gắn bó và sự hỗ trợ tài chính của các độc giả và thân hữu. Chúng tôi đặc biệt tri ân những đóng góp tận tụy thầm lặng của các chuyên viên kĩ thuật đã giúp talawas đứng vững sau nhiều đợt tấn công của tin tặc.
Quý vị và các bạn là những người làm nên talawas. Toàn bộ kho lưu trữ bài vở của
[Diễn đàn talawas 2001-2008](http://www.talawas.org/talaDB/talaDBFront.php), [talawas blog 2009-2010](http://www.talawas.org/), [talawas chủ nhật](http://www.talachu.org/) và [tạp chí talawas](http://www.tapchitalawas.org/index.php), được bảo quản và duy trì trên mạng, là tài sản chung của cộng đồng mạng chúng ta.
Chào tạm biệt.
**Ban biên tập talawas 2001-2010**
Bùi Duy Dzy, Cao Việt Dũng, Cổ Ngư, Dietmar Erdmann, Đào Tuấn, Đinh Bá Anh, Đỗ Kh., Hà Vũ Trọng, Hòa An, Hoài Phi, Hoàng Hưng, Hương Trà, La Thành, Lê An, Lê Trọng Phương, Lý Đợi, Mai Chi, Ngô Hải, Nguyễn Khánh Hưng, Nguyễn Phú Thịnh, Patrick Raszelenberg, Phạm Thị Hoài, Tiểu Hằng Ngôn, Trịnh Hữu Tuệ, Trương Hồng Quang, Vy Huyền
### Phản hồi
53 phản hồi (bài “talawas – Lời tạm biệt”)
[« Trang trước](/?p=26665&cpage=3#comments) [1](/?p=26665&cpage=1#comments) [2](/?p=26665&cpage=2#comments) [3](/?p=26665&cpage=3#comments)4
Cảm ơn tất cả! Tạm biệt và mong ngày gặp lại!
Dục Biệt
Nhung Dục (Trung Đường) có một bài tứ tuyệt
“Biệt Hồ Thượng Đình”, hai câu sau được Bùi Giáng khen là ý tình kín đáo, tả một tâm trạng xa cách :
“Hoàng Oanh trú cửu hồn tương thức
Dục biệt tần đề tứ ngũ thanh”
nhà thơ dịch là :
Ở mãi oanh vàng quen biết lắm
Gần đi hót vội bốn năm thanh.
tôi xin ghi lại tặng nữ trang chủ
talawas,
bà Phạm Thị Hoài.
Chỉ còn vài phút thôi là talawas chính thức đóng cửa.
Xin được gửi lời tri ân tới tất cả các tác giả, dịch giả và độc giả của talawas trong 9 năm qua.
Với tất cả những người tình của talawas: Cảm tạ thâm tình và chân tình của các anh.
Chín năm kháng chiến can trường, ăn cơm tập thể nằm giường cá nhân. Chào các anh, em tala đi lấy chồng.
“Adieu Mon Pays – ( Enrico Macias ) – Khánh Ly”
Không biết những dòng chữ này còn kịp để xuất hiện trên mạng talawas như môt lời tạ từ hay không. Còn kịp thì hay, không dịp cũng được. Gởi lời nay, tôi chỉ muốn nói lời cảm ơn đến tất cả mọi người đã lao tâm, nhọc sức xây dựng, duy trì và phát triển talawas trong suốt 9 năm qua.
Dù chưa một lần cộng tác bài trên talawas, và cũng chỉ vài lần viết phản hồi, nhưng tôi là độc giả thường xuyên của talawas. Mỗi ngày một lần, có khi, mỗi ngày hai lần, vào một thời điểm cố định trong ngày, tôi đều phải vào đọc talawas và đã trở thành thói quen từ hơn bốn năm nay. Nhưng bắt đầu từ ngày mai, tôi phải thay đổi thói quen này rồi. Buồn thật, nhưng biết làm sao hơn được.
Xin nói lời chân thành, cảm ơn Ban chủ nhiệm, Ban biên tập, các tác giả, các dịch giả, những độc giả viết phản hồi và những người đã thầm lặng đóng góp để talawas tồn tại bền vững và mang lại nhiều điều hay, lẽ đẹp trong suốt 9 năm qua. Kính chúc mọi người nhiều an lành.
Dear Talawas,
Thank you! You’re gone now but I am still here to wait for you to come back ASAP.
Please say: YES! I’M COMING.
Đốt Lò Hương Cũ.
Mượn thơ của Thâm Tâm để chia tay Talawas
“Ta tiễn người không đưa qua sông
Sao thấy tiếng sóng ở trong lòng
Nắng chiều không xám, không vàng vọt
Sao đầy hòng hôn trong mắt trong”.
Và hát một khúc dân ca nước ngoài (?)
“Chỉ còn đêm nay
Chúng ta sẽ chia tay
Đường đêm
Phố vắng
Sánh bước vai kề vai
Và rồi mai đây
Cất cánh xa nơi đây
Dù có quên nhau
Đừng nên quên
Talawas này!
Cám ơn Talawas một lần nữa.
Vĩ Thanh tiễn chị Hoài
Thế sự mang mang tạm gác ngoài
Đường văn mở lại đón chân ai
Ta hồ ! dấu “thốn tâm thiên cổ”(1)
Còn lại đâu đây một Thị Hoài !
Phùng Tường Vân
3/11/2010
____________
(1)”Ta hồ ! Văn Chương chi sự thốn tâm thiên cổ”
(Hỡi ơi, câu chuyện văn chương, một tấc lòng mà lưu dấu đến ngàn năm)
Chín năm, một quãng đường dài,
Bóng người đi khuất, dấu hài còn nguyên…
Cảm ơn talawas.

WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Truncated: length

Content-Type: text/html; charset=UTF-8

Connection: close

Server: Apache


text:
©
www.talawas.org
|
về trang chính
tìm
(dùng Unicode hoặc không dấu)
tác giả:
A
B
C
D
Đ
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Ý
Z
Điểm nóng
Chính trị Việt Nam
Loạt bài:
Phong trào cánh tả và vấn đề Việt Nam
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2.10.2006
Nguyễn Hữu Liêm
Của máu xương và hy vọng
Many dreams not to find, neither deserve,
And yet are steep’d in favours; so am I.
(William Shakespeare:
Cymbeline
)
SAN JOSE, 2006. Sáng nay, một ngày cuối tháng Chín, vào trang web của
Calitoday
, đọc bài “Chuyện dài kháng chiến” của
Dân Sinh News
do Vũ Văn Lộc chủ trương, tôi lại liên tưởng đến chuyện hơn hai mươi năm trước. Bài của Dân Sinh kể lại chuyện ba người bạn trẻ Việt Nam tên Thọ, Tùng và Quang, năm 1983, gặp nhau ở trại tỵ nạn Sikiw Thái Lan. Thọ đi định cư ở Mỹ, còn Tùng và Quang vào chiến khu tham gia kháng chiến phục quốc. Bây giờ Thọ đang ở San Jose, trở thành Peter, còn Quang thì mất tích, Tùng thì lưu lạc làm dân di cư ở lậu bên Cam Bốt. Câu chuyện trong bài báo này, qua lời Thọ kể, thì rất ngắn gọn, nhưng rõ ràng và mang nhiều chi tiết về một số thanh niên, nhiệt tình tham gia phong trào kháng chiến thuở ấy, cái lúc mà cả cộng đồng hải ngoại ai cũng chỉ muốn đứng lên “phục quốc.” Tôi lạnh mình nhớ lại khoảng thời gian này, vì chính tôi cũng đã nằm ở trong vùng nước xoáy đó.
Tôi mong là các nhân vật từng tham gia vào phong trào kháng chiến phục quốc những năm này hãy để dành thời gian mà viết lại những gì đã thực sự xẩy ra. Tôi muốn nhắn với anh Vũ Văn Lộc, người mà tôi cho là một nhân vật đáng kính trọng của cộng đồng Việt Nam ở vùng Bắc California, hãy kêu gọi một dự án viết lại những trang sử, một loại lịch sử qua chuyện kể,
an oral history
, nói ra từ miệng của những người đã tham dự phong trào kháng chiến phục quốc thuở ấy - mà hơn hai mươi năm qua, nay họ đã có thời gian chín muồi, thanh thản để nhìn lại những đau thương, bi đát, nhục nhằn lẫn vinh dự và thống thiết của nguyên cả một thế hệ thanh niên hải ngoại nhức nhối nhiệt tình muốn làm gì cho Việt Nam.
Tôi nói “nguyên cả một thế hệ thanh niên hải ngoại” như thế không phải là nói quá. Giai đoạn của thập niên 1980-89, không những chỉ có các cựu binh lính miền Nam, hay là các nhóm hữu khuynh muốn “kháng chiến” – mà cả phần đông các giới trí thức thiên tả cũng muốn dấy động một phong trào “cứu nước”. Tôi có được nhiều dịp cùng tham dự hay biết đến phong trào này, từ hữu sang tả, từ lúc tôi tham dự các buổi họp mặt ở Oklahoma có Hoàng Cơ Minh tham dự, đến các buổi gặp gỡ riêng ở California với Trương Như Tảng từ Pháp sang, hay tiếp xúc với Bùi Tín, hoặc Vương Văn Đông ở Pháp, Thái Quang Trung từ Singapore, và các sinh viên Việt Nam trong nhóm Tia Sáng ở Tiệp Khắc và (Đông) Đức.
Mùa hè năm 1983, có một tổ chức chính trị người Việt ở Đông Nam Á họp mặt ở California, trong đó có nhiều nhân vật tả phái uy tín. Tôi được yêu cầu soạn thảo bản tuyên ngôn và cương lĩnh chính trị cho tổ chức này. Đây không phải là lần đầu tôi làm chuyện lý thuyết “thầy dùi”. Tôi đưa ra chủ thuyết “Kinh tế chuyển hóa chính trị” để mở đường cho một khả thể cứu nước mà mọi người đang nao nức mong chờ. Tôi quan niệm rằng cuộc cách mạng kế tiếp cho dân tộc sẽ phải do những người cộng sản Việt Nam chủ động; họ phải tự ý thức được những sai lầm đang đi qua và thay đổi chính mình, chọn hướng đi mới. Tôi nhấn mạnh rằng về phía người Việt hải ngoại, chúng ta hãy kêu gọi Mỹ và thế giới bỏ cấm vận Việt Nam, bang giao bình thường để tạo cơ hội chuyển hóa kinh tế và dân trí cho một tiến trình giải hóa tình trạng lạc hậu của con người và cơ chế chính trị cộng sản. Việt Nam như là một góc bóng tối của nhân loại và lịch sử. Hãy mở cửa và đem ánh sáng vào. Đó là con đường khả thi nhất. Mọi nỗ lực “kháng chiến” bằng vũ lực đều là vô lý, chỉ là ảo vọng và vô trách nhiệm.
Tuy nhiên, khi bản thảo tuyên ngôn và cương lĩnh của tôi được đưa đến tay các lãnh tụ của tổ chức thì bị phản bác mạnh mẽ - vì lập trường như thế là “thiên tả,” là “thân cộng,” là “ngây thơ.” Nên nhớ rằng, chuyện này xẩy ra vào những năm 1983-84. Ngay cả các anh chàng trí thức tả phái nhất hồi ấy cũng muốn cách mạng vũ lực để cứu Việt Nam vì tình thế đất nước quá đen tối. Trong ngày hội họp đầu tiên của tổ chức này, tôi nhất quyết chống đối con đường vũ trang kháng chiến. Qua đến ngày thứ hai, tôi bị trục xuất ra khỏi phòng họp. Khi chia tay, có hai anh trong hàng ngũ lãnh đạo chạy ra xe bắt tay, có anh phát khóc lên. Tôi một mình đi về, buồn vô hạn. May mà chuyện này xẩy ra ở Mỹ; nếu ở trong rừng Thái Lan hay Cam Bốt thì tôi đã bị xử bắn, như một vài anh em đã bị sau này. Có lúc tôi muốn thay đổi lập trường để đi theo cơn sóng của tinh thần cực đoan của thời thế - nhưng có một cái gì đó giữ tôi lại. Con đường kháng chiến bạo lực là vô vọng và vô trách nhiệm - nếu không nói là ngu xuẩn. Tôi nhất quyết giữ lập trường “kinh tế chuyển hóa chính trị”. Sau đó, tôi chia tay với các “chí hữu cứu nước”, về ghi danh đi học luật. Thời gian sẽ chứng minh là tôi sẽ đúng, tôi tự tin như vậy.
Hai năm sau, trong khi đang học luật, trong căn phòng nội trú đại học chật hẹp, tôi đón một phái đoàn các vị lãnh đạo chính trị từ Đông Nam Á đến thăm. Họ chính thức yêu cầu tôi bỏ việc học luật, về Đông Nam Á đảm trách vai trò uỷ viên chính trị trung ương cho một đảng chính trị đã thành lập. Có anh bảo tôi câu này tôi còn nhớ rõ, “Trời ơi, giờ này mà anh còn đi học làm gì. Đất nước đang vùng lên, chuyển mình, cơ hội đã đến”. Lần nữa tôi từ chối. Lập trường của tôi rất rõ: Hãy để cho người cộng sản Việt Nam tỉnh thức và thay đổi chính mình. Không ai khác hơn sẽ làm cuộc cách mạng dân chủ cho dân tộc Việt Nam.
Năm 1989, khi đang làm phó biện lý ở Santa Cruz, theo lời đề nghị của Nguyễn Tâm, tôi bỏ về mở văn phòng luật sư riêng. Một ngày nọ, có hai nhân vật chính trị đến thăm và mời tôi làm luật sư cố vấn đi Paris để dự hội nghị với ngoại trưởng Nguyễn Cơ Thạch. Lần nữa, tôi viết một bài luận thuyết cho tổ chức mới này. Tôi đề nghị tên gọi cho tổ chức là “Phong trào Dân chủ và Phú cường cho Việt Nam”. Tôi lặp lại quan điểm “Kinh tế chuyển hóa chính trị” và đưa thêm một luận điểm khác, “Đi tìm một đồng thuận mới cho dân tộc”. Lần này thì tổ chức này đồng ý gần như hoàn toàn với quan điểm của tôi. Và bài diễn văn tôi soạn cho trưởng phái đoàn tổ chức đọc khi họp với Nguyễn Cơ Thạch ở Paris được giữ gần như y nguyên. Nhưng khi đến Paris họp với phái đoàn chính phủ Việt Nam, tôi mới vỡ lẽ rằng mình đúng là ngây thơ, làm trò cười cho thiên hạ. Ngoại trưởng Thạch và đại sứ Bình ở Pháp đón chúng tôi chỉ như một buổi gặp gỡ những người khách Việt kiều xã giao. Có thế thôi. Vậy mà phía chúng tôi lại làm to lên như là một hội nghị “cao cấp” của chính phủ cộng sản Việt Nam và đại diện người Việt hải ngoại để đi tìm một “đồng thuận mới cho dân tộc”. Tôi tự cười vào lỗ mũi mình. Suốt cả buổi gặp mặt, tôi không nói được một lời. Nhưng cái gì nó cũng xẩy ra không như mình nghĩ. Dư luận hải ngoại làm ầm ĩ lên về cuộc gặp này. Một số các vị trong “Phong trào” cũng đi đây đó, họp báo tuyên bố như thể họ sắp lên nắm chính quyền vậy. Có người còn cho tôi hay rằng ngoại trưởng Thạch sau đó bị mất chức trong Bộ Chính trị cũng vì sự cố này. Tôi nghĩ lại mà thấy chuyện như của trẻ con. Đúng là, nói theo Shakespeare, “một cơn bão trong tách trà”. Nhưng ôi thôi, có người lại chết chìm trong những thứ bão tố nhỏ nhoi loại này. Sau đó, khi về lại Mỹ thì tôi bị de dọa ám sát. Văn phòng luật sư của tôi phải dời đi nơi khác vì bị dọa đặt bom. Tất cả chỉ vì tôi chủ trương “đồng thuận với cộng sản”.
Thời gian trôi qua. Trong vòng mười năm, tất cả các tổ chức “phục quốc” và “cứu nước” của thập niên 80 đều tan rã. Họ chia ra thành nhiều phe phái, đánh phá, kiện tụng, chỉ trích, lên án lẫn nhau, với một mức độ hận thù còn hơn đối với chế độ cộng sản mà họ muốn chống lại. Một số anh em về “chiến khu” thì hầu hết đều bỏ cuộc, dang dở cuộc sống, bất mãn. Một số không nhỏ hy sinh trong các trận đánh hay bị thủ tiêu bởi đồng đội của mình. Một số khác bây giờ về Việt Nam làm ăn, sinh sống, thề không bao giờ dính dáng đến chính trị. Cơn sốt thanh niên yêu nước đã mất đi nhiệt độ tinh thần của thời tính. Nói như Gurdjieff, “Hãy cẩn thận. Cái tổ chức mà mình bỏ cả cuộc đời niên thiếu để xây dựng và củng cố thì khi đến tuổi về chiều mình sẽ bỏ hết năng lực tâm trí để huỷ bỏ nó”. Con người, tóm lại, hoàn toàn bất lực trước lịch sử - vì hắn chỉ là một con số không. Những gì hắn làm được cuối cùng đều trở nên trò cười cho chính mình và cho thiên hạ.
*
Cách đây năm, bảy năm, khoảng 1998-99, tôi không nhớ chính xác, có lần tôi đang ăn trưa với người bạn ở một tiệm ăn Việt trên đường Berryessa, San Jose, thì chuyện xưa lại trở về. Số là tôi và anh bạn đều kêu cơm sườn heo. Nhưng khi cơm đem ra, tôi thấy dĩa cơm của tôi có hai miếng thịt, trong khi dĩa của người bạn thì chỉ có một. Tôi nhắn với người hầu bàn cám ơn người nấu cơm trong bếp. Khi ăn xong, có người đàn ông khoảng trên 50 ra chào tôi. “Chào luật sư Liêm. Chắc là anh không biết tôi, nhưng tôi biết rõ về anh. Tôi là Q., mới ở tù về từ Việt Nam vì tội âm mưu đặt bom tượng Hồ Chí Minh ở Sài Gòn. Mười mấy năm trước, tôi ở trong tổ định ‘làm thịt’ anh đấy. Nhưng chúng tôi nghĩ lại thì anh không phải là cộng sản, mà chỉ là thiên tả ôn hòa thôi. Nếu không thì anh đã bị bắn rồi. Nay tôi mời anh một miếng thịt để hòa giải chuyện xưa. Hồi đó ai cũng cực đoan cả. Anh thông cảm”. Tôi cười to và cám ơn anh về miếng thịt - nhất là anh đã quyết định “không thịt” tôi. Tôi đồng ý. Hồi đó hình như là ai cũng cực đoan theo kiểu vũ lực bạo hành như thế cả.
© 2006 talawas

Content-Type: text/html; charset=utf-8


text:
Vũ Tuấn Hưng
Bài viết được thích nhất
Steve Wozniak: Điện toán đám mây là cơn ác mộng
Gửi ngày: 8/8/2012. Có tất cả 2 bình luận và 26 bầu chọn.
Samsung đăng kí bằng sáng chế “Tích hợp nước hoa vào điện thoại”
Gửi ngày: 11/8/2012. Có tất cả 0 bình luận và 16 bầu chọn.
PlayBook 4G bắt đầu bán ra tại Canada vào ngày 9/8
Gửi ngày: 6/8/2012. Có tất cả 0 bình luận và 12 bầu chọn.
Dell, Lenovo, Samsung sẽ sản xuất thiết bị chạy Windows RT
Gửi ngày: 15/8/2012. Có tất cả 0 bình luận và 11 bầu chọn.
Google Translate đã cho phép dịch trực tiếp từ camera
Gửi ngày: 9/8/2012. Có tất cả 0 bình luận và 10 bầu chọn.

markdown:
## Vũ Tuấn Hưng
## Bài viết được thích nhất
[Steve Wozniak: Điện toán đám mây là cơn ác mộng](/article/37336)
Gửi ngày: 8/8/2012. Có tất cả
*2*bình luận và *26*bầu chọn. [Samsung đăng kí bằng sáng chế “Tích hợp nước hoa vào điện thoại”](/article/37469)
Gửi ngày: 11/8/2012. Có tất cả
*0*bình luận và *16*bầu chọn. [PlayBook 4G bắt đầu bán ra tại Canada vào ngày 9/8](/article/37259)
Gửi ngày: 6/8/2012. Có tất cả
*0*bình luận và *12*bầu chọn. [Dell, Lenovo, Samsung sẽ sản xuất thiết bị chạy Windows RT](/article/37606)
Gửi ngày: 15/8/2012. Có tất cả
*0*bình luận và *11*bầu chọn. [Google Translate đã cho phép dịch trực tiếp từ camera](/article/37492)
Gửi ngày: 9/8/2012. Có tất cả
*0*bình luận và *10*bầu chọn.

Vary: Accept-Encoding

X-Drupal-Cache: MISS

Cache-Control: no-cache

X-Micro-Cache: MISS

Accept-Ranges: bytes

Via: 1.1 varnish


text:
Trụ sở: Tầng 6, Bitexco Nam Long - 63A Võ Văn Tần, P.6, Q.3, TP.Hồ Chí Minh
Điện thoại: (08) 7309 8888 | Fax: (08) 393 018 00 | Email: lienhe@timviecnhanh.com
Văn phòng đại diện: Tầng 12A, Tòa nhà Center Building, số 1 Nguyễn Huy Tưởng, Thanh Xuân, Hà Nội (Góc đường Ngụy Như Kon Tum giao đường Vũ Trọng Phụng).
Điện thoại: (04) 7309 8888 | Email: hanoi@timviecnhanh.com
Điện thoại hỗ trợ tại Đà Nẵng: (0511) 7309 888

markdown:
**Trụ sở: **Tầng 6, Bitexco Nam Long - 63A Võ Văn Tần, P.6, Q.3, TP.Hồ Chí Minh
**Điện thoại: **(08) 7309 8888 | **Fax: **(08) 393 018 00 | **Email: **lienhe@timviecnhanh.com
**Văn phòng đại diện: ** Tầng 12A, Tòa nhà Center Building, số 1 Nguyễn Huy Tưởng, Thanh Xuân, Hà Nội (Góc đường Ngụy Như Kon Tum giao đường Vũ Trọng Phụng).
**Điện thoại: **(04) 7309 8888 | **Email: **hanoi@timviecnhanh.com
**Điện thoại hỗ trợ tại Đà Nẵng**: (0511) 7309 888

Server: nginx

Set-Cookie: SvID=w12|VMcl5|VMcl5; path=/

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache