Tài liệu tham chiếu Java API

Phần 2: Sử dụng JavaTOC doclet để sinh cấu trúc tham chiếu Eclipse Javadoc API

Bài viết này (là phần 2 của loạt bài viết) mô tả các cách tiếp cận khác nhau để tạo ra tài liệu tham chiếu giao diện lập trình ứng dụng (API) Java dễ sử dụng và có thể tìm kiếm được.

Mariana Alupului, Phát triển Thông tin, Rational software, IBM

Mariana Alupului là thư ký kĩ thuật cao cấp (chuyên viết các tài liệu liên quan tới giao diện lập trình ứng dụng (API)) cho nhóm IBM Software, Rational Software. Ngoài việc làm tài liệu và lãnh đạo các dự án làm tài liệu API cho Java, VB, C++ trong môi trường lập trình phần mềm, cô còn là thành viên của đội tập đoàn IBM (IBM Corporation team), đội này phát triển cấu trúc kiểu thông tin Darwin (Darwin Information Typing Architecture - DITA) dựa trên XML để chuyên viết tài liệu tham chiếu thích hợp với ngôn ngữ cho các thư viện API. Mariana trợ giúp để tạo ra các quy tắc chung về kiểu tham chiếu API và là thành viên của liên hiệp hội đồng hỗ trợ ID và hội đồng thư ký kĩ thuật ID. Cô là thành viên của của hội truyền thông mang tính kĩ thuật và đã có báo cáo tại kỳ họp “Beyond the Bleeding Edge” (vượt trên các mũi nhọn công nghệ) vào năm 2005



17 07 2009

Ôn tập nhanh

Trong phần 1 của loạt bài này, Tài liệu tham chiếu Java API được tổ chức trong trợ giúp Eclipse như thế nào, tôi đã giới thiệu một cách tiếp cận khác để tạo ra tài liệu tham chiếu giao diện lập trình ứng dụng (API) Java dễ sử dụng và có thể tìm kiếm được.

Bài viết này thảo luận về công cụ JavaTOC doclet, cách sử dụng và mở rộng nó. Cách tiếp cận này sử dụng giải pháp chuẩn Javadoc và sử dụng JavaTOC doclet mà tôi đã phát triển để tạo ra hệ trợ giúp trình bổ sung Eclipse. Công cụ JavaTOC doclet sinh ra các tệp định hướng mục lục XML cần thiết cho hệ trợ giúp Eclipse, tài liệu tham chiếu Sun Javadoc API ở định dạng HTML. Để hiểu được cách tiếp cận này, tôi đã đưa vào một ví dụ minh họa có sử dụng Sun Javadoc và công cụ JavaTOC doclet (sử dụng giao diện dòng lệnh - Command Prompt).


Cấu trúc tham chiếu Eclipse Javadoc API được tạo ra với JavaTOC doclet

Các ràng buộc thiết kế

Để trở thành một thư ký kỹ thuật (người phát triển thông tin Java API) có kỹ năng cao, bạn phải đạt được trình độ hiểu biết thông thạo về ngôn ngữ Java, các công cụ sinh tài liệu tham chiếu Java API và các kỹ năng.

Bạn có thể chạy JavaTOC doclet và Javadoc để sinh ra tài liệu tham chiếu Java API, định hướng mục lục và cấu trúc trình bổ sung. Hoặc bạn có thể chỉ chạy JavaTOC doclet để tạo ra định hướng mục lục từ các tài liệu có sẵn mà lập trình viên đã tạo ra và chuyển cho bạn.

Luồng công việc

Với mỗi trình bổ sung mà bạn muốn đóng góp cho hệ trợ giúp Eclipse (phần tham chiếu Java API), thì nói chung cần xử lý theo luồng sau:

  • Chạy JavaTOC doclet để tạo ra tất cả các tệp trình bổ sung cần thiết cho hệ trợ giúp Eclipse (plugin.xml, primary.plugin.toc.xml, META-INF/MANIFEST.MF, build.properties, và plugin.properties).
    Tệp plugin.xml, mở rộng điểm mở rộng org.eclipse.help.toc, cần phải chỉ ra:
    1. Một tệp mục lục XML, nếu bạn chỉ có một ít các gói Java.
    2. Nhiều tệp mục lục XML, khi bạn có nhiều gói Java.
  • Chạy Javadoc (Sun Microsystems) trên các tệp mã nguồn Java của bạn để tạo ra các tệp HTML cho tài liệu tham chiếu Java API.
  • Kiểm tra tài liệu tham chiếu Java API đã được tạo ra.

Ant là hệ thống xây dựng Java mà ngày nay dường như tất cả mọi người đều đang sử dụng. Nếu bạn chưa từng làm việc với Ant thì hãy xem ở trang thông tin Jakarta, hoặc "Open Source Java: Ant" (Java mã nguồn mở: Ant).

Cách yêu thích của tôi để chạy công cụ JavaTOC doclet là thông qua hệ thống xây dựng Ant, nhưng trong bài viết này tôi sẽ chỉ cho các bạn cách sử dụng JavaTOC doclet từ giao diện dòng lệnh (Command Prompt).

Xây dựng các tệp đầu ra mục lục XML với dòng lệnh

Các ngôn ngữ lập trình máy tính hỗ trợ việc tạo tài liệu mã nguồn bằng cách cung cấp các ký hiệu đặc biệt để đánh dấu bắt đầu và kết thúc của các đoạn mô tả mã nguồn. Các ký hiệu và mô tả này được coi chung là các chú giải. Ngôn ngữ lập trình Java hỗ trợ ba loại chú giải: nhiều dòng, dòng đơn và doc.

Bộ công cụ JavaTOC Doclet phiên bản 1.0.0 cung cấp giao diện dòng lệnh như là một sự lựa chọn cho những người dùng ít hiểu biết về Ant để họ có thể sử dụng bộ công cụ một cách dễ dàng.

  1. Hãy chắc chắn rằng Javadoc đã được cài đặt trên đường dẫn của bạn. (...\jdk1.5.0_06\bin\javadoc.exe)
    • GHI CHÚ: thông thường Javadoc sẽ có một đường dẫn có dạng C:\Program Files\Java\jdk1.5.0_06\bin.
  2. Tải về tệp JavaToc Doclet ZIP và giải nén tệp đó vào thư mục bạn chọn (ví dụ, C:\doclet\ trên Windows). Một thư mục JavaTOC với các thư mục con bin\, demo\ và doc\ sẽ được tạo ra.
    • Thư mục bin chứa các lớp Java bạn cần để chạy phần mở rộng doc như là các thư viện jar. (DocletTOC.jar)
    • Thư mục doc chứa tài liệu hướng dẫn JavaTOC và (ví dụ) tài liệu API trình bổ sung org.dita.dost.doc ở định dạng HTML.
    • Thư mục tài nguyên src chứa các tệp nguồn Java mà bạn có thể sử dụng cho ví dụ ở đây.
      (bạn có thể tài về các tệp nguồn trực tiếp từ trang SOURCEFORGE: DITA-OT1.3_src.zip )
  3. Sử dụng tùy chọn @packages để đặt các gói có tên kiểu đủ tiêu chuẩn vào một tệp độc lập.
  4. Chạy lệnh sau từ thư mục c:\doclet> javadoc @tocdoclet @options @packages (Từ ví dụ 1 đến ví dụ 3)
Ví dụ 1. tocdoclet
-doclet com.ibm.malup.doclet.config.TOCDoclet
-docletpath C:\doclet\bin\TOCNavDoclet.jar
Ví dụ 2. các tùy chọn
-sourcepath src
-d com.ibm.doc_plugin_name
-overview src/overview-summary.html
-doctitle 'Navigation label'
-version 'plugin_version' -pluginid plugin_id
-provider 'plugin_provider_name' 
-anchor 'plugin_name'
Ví dụ 3. các gói
com.ibm.package1
com.ibm.package2
...
com.ibm.packageN
Ví dụ 4. removefiles
source\..\..\package1\fileA.java,source\..\..\package2\fileB.java, , ,
source\..\..\packageN\fileN.java
  1. Bằng cách dùng trình soạn thảo NotePad để mở, bạn có thể sửa các tệp này.
    • JavaTOC doclet gán các giá trị tên trình bổ sung, id, phiên bản và tên nhà cung cấp cho dự án trình bổ sung Eclipse của bạn, thể hiện trong ví dụ 2.
      Điểm mở rộng từ trình bổ sung org.eclipse.help.toc nhận biết đây là một trình bổ sung cho hệ thống trợ giúp.
      Tệp doclet.toc.xml được tham chiếu đến như là mục lục cho trình bổ sung này; tệp này sẽ cung cấp dữ liệu cho thông tin có thứ bậc ở khung bên trái của cửa sổ trợ giúp Eclipse.
    • Tệp packages có nội dung giống như được thể hiện trong ví dụ 3.
  2. Chạy lệnh: javadoc @tocdoclet @options @packages @removefiles — xóa tất cả các lớp mà bạn không muốn để hiển thị ra (ví dụ 4).
Bảng các tham số đề xuất được cung cấp bởi JavaTOC doclet:
Tham sốMô tả
-d <destination directory>Chỉ ra thư mục đích cho tài liệu được tạo ra. Theo ngầm định, đây là thư mục hiện tại (thư mục được chỉ định bằng đường dẫn ".").
-doclet <class>Tạo ra đầu ra thông qua doclet thay thế.
Để chạy doclet, bạn sẽ cần phải chỉ ra lớp doclet trên dòng lệnh Javadoc, sử dụng tùy chọn: -doclet <class>
-sourcepath <pathlist>Chỉ ra chỗ tìm các tệp nguồn.
Theo ngầm định thì src là thư mục hiện tại.
-docletpath <path>Chỉ ra chỗ tìm các tệp lớp doclet
-doctitle <html-code> eclipse titleBao gồm tiêu đề cho trình bổ sung Eclipse.
Điều này được phản ánh trong tệp manifest.mf:
Plugin.name = Building MDA RXE
-overview <file>Chỉ ra chỗ tìm tài liệu tổng quan (tệp HTML).
eclipse title
—version <plug-in_version>Chỉ ra các chi tiết id phiên bản trình bổ sung.
eclipse title
—provider <plug-in_provider>Chỉ ra các chi tiết tên nhà cung cấp trình bổ sung.
-anchorViệc liên kết được chỉ ra bằng cách sử dụng tham chiếu tới mục lục đủ tiêu chuẩn, ví dụ như là
<toc link_to="../the_other_plugin_id/path/to/toc.xml#anchor_id"/>eclipse title
-notree

Phần đóng góp org.eclipse.help.toc chỉ ra một hoặc một số các tệp XML kết hợp, các tệp này chứa cấu trúc của trợ giúp của bạn và tích hợp của nó với trợ giúp được đóng góp bởi các trình bổ sung khác.

Nếu bạn định tạo tài liệu cho một dự án đầy đủ thì chỉ ra là sẽ tạo nhiều tệp mục lục XML.
GHI CHÚ: Nếu quên tham số cờ này thì sẽ chỉ tạo ra một tệp mục lục XML
  1. Doclet tạo ra các tệp XML đầu ra cho trình bổ sung, và một số tệp hữu ích tại c:\doclet\com.ibm.doc_plugin_name, giờ đây là thư mục trình bổ sung của bạn:
    • plugin.xml
    • plugin.properties
    • .project
    • META-INF\MANIFEST.MF
    • com.ibm.packageN.toc.xml — các tệp XML mục lục để xây dựng cây định hướng trong trình duyệt trợ giúp
    • buildJavaDoc.xml — tệp ANT để chạy công cụ JavaDoc từ môi trường Ant.
    • buildJavaDoc.bat — tệp BAT để chạy công cụ JavaDoc.
  2. Chạy JavaDoc từ giao diện dòng lệnh (buildJavaDoc.bat) để tạo tệp HTML cho tài liệu API.

Sử dụng JavaTOC doclet để tạo một tệp mục lục XML

Đến giờ thì chúng ta vừa nói về doclet, hãy tiếp tục với ví dụ thực sự, sử dụng JavaTOC doclet với các tệp nguồn DITA-OT 1.3 (DITA-OT1.3_src.zip) làm ví dụ của chúng ta.

Tệp mục lục định nghĩa các điểm mục nhập khóa thành các tệp nội dung HTML bằng cách định nghĩa các chủ đề đã được dán nhãn được ánh xạ tới các tệp HTML, và hoạt động giống như mục lục của một tập các nội dung HTML. Đôi khi các tệp mục lục này được đề cập đến như là các tệp định hướng bởi vì chúng mô tả cách định hướng nội dung HTML. Một trình bổ sung có thể có một hoặc nhiều tệp mục lục.

Chạy ví dụ org.dita.dost

Chạy tệp bat: C:\doclet\JavaTOC>TOCDoclet_dost.bat (Từ ví dụ 5 tới ví dụ 8)

Ví dụ 5. TOCDoclet_dost.bat
javadoc 
@config @options @packages
Ví dụ 6. config
-doclet 
com.ibm.malup.doclet.config.TOCDoclet -docletpath C:\doclet\bin\TOCNavDoclet.jar
Ví dụ 7. các tùy chọn
-sourcepath demo/src
-d demo/output/org.dita.dost.doc
-overview demo/src/overview-summary.html
-doctitle 'Building DITA output'
-pluginid org.dita.dost.docIf we 
-provider XYZ
-version 1.0.1
Ví dụ 8. các gói
org.dita.dost.index
org.dita.dost.invoker
org.dita.dost.log
org.dita.dost.module
org.dita.dost.pipeline
org.dita.dost.platform
org.dita.dost.reader
org.dita.dost.util
org.dita.dost.writer
org.dita.dost.exception

hoặc là từ giao diện dòng lệnh, thư mục C:\doclet\JavaTOC>:

javadoc -doclet com.ibm.malup.doclet.config.TOCDoclet -docletpath C:\doclet\JavaTOC\bin\TOCNavDoclet.jar -sourcepath demo/src -d demo/output/org.dita.dost.doc -doctitle 'Building DITA output' -pluginid org.dita.dost.doc -provider XYZ -version 1.0.1 -overview demo/src/overview-summary.html org.dita.dost.index org.dita.dost.invoker org.dita.dost.log org.dita.dost.module org.dita.dost.pipeline org.dita.dost.platform org.dita.dost.reader org.dita.dost.util org.dita.dost.writer org.dita.dost.exception

Thư mục đích cho các tệp đầu ra

  • Doclet tạo ra các tệp XML đầu ra cho trình bổ sung và một số tệp hữu dụng tại C:\doclet\JavaTOC\output\org.dita.dost.doc, giờ đây là thư mục trình bổ sung của bạn (ví dụ 9):
    • plugin.xml
    • plugin.properties
    • .project
    • META-INF\MANIFEST.MF
    • org.dita.dost.doc_toc.xml— tệp XML mục lục để xây dựng cây định hướng trong trình duyệt trợ giúp.
    • buildJavaDoc.xml — tệp ANT để chạy công cụ JavaDoc từ môi trường Ant.
    • buildJavaDoc.bat — tệp BAT để chạy công cụ JavaDoc.
Ví dụ 9. plug-in.xml
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>


<!-- ========================================================== -->
<!-- Trình bổ sung này định nghĩa một trợ giúp trực tuyến    -->
<!--  đóng góp cho IBM Rational Software Modeler.           -->
<!--  Các tài liệu được cấp phép - Quyền sở hữu của IBM      -->
<!-- (c) Bản quyền công ty IBM. Giữ bản quyền.         -->
<!-- ========================================================== -->

<plugin
    name = "%Plugin.name"
    id = "org.dita.dost.doc"
    version = "7.0.1.0"
    provider-name = "%Plugin.providerName">

  <extension point="org.eclipse.help.toc">
    <toc file="org.dita.dost.doc_toc.xml" primary="true"/>
  </extension>

</plugin>

Các giá trị tên của trình bổ sung, id, phiên bản và tên nhà cung cấp được sinh ra một cách tự động từ các thuộc tính -d, -doctitle, —version và —provider (ví dụ 10).

Ví dụ 10. plugin.properties
# NLS_MESSAGEFORMAT_VAR
# ==============================================================================
# Trợ giúp trực tuyến - Chỉ dẫn dịch: phần sẽ được dịch
# =============================================================================
Plugin.name = Building DITA output
Plugin.providerName = IBM

Các tệp bảng kê trình bổ sung mở rộng các xâu ký tự của chúng bằng cách thay thế xâu với một khóa (ví dụ %pluginName) và tạo ra một mục nhập trong tệp plugin.properties có dạng: pluginName = "Online Help Sample Plugin" (trình bổ sung minh họa trợ giúp trực tuyến (ví dụ 11)

Ví dụ 11. META-INF\MANIFEST.MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Doc Plug-in
Bundle-SymbolicName: -pluginid; singleton:=true 
Bundle-Version: 1.0.0
Bundle-Activator: -pluginid.DocPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime
Eclipse-AutoStart: true

Điểm mở rộng của trình bổ sung org.eclipse.help.toc nhận biết đây là một trình bổ sung cho hệ trợ giúp. Tệp doclet.toc.xml được tham chiếu đến như là mục lục cho trình bổ sung này; tệp này sẽ cung cấp dữ liệu cho thông tin có tính thứ bậc ở khung bên trái của cửa sổ trợ giúp Eclipse.
Một tệp đơn giản có nội dung giống như được hiển thị trong ví dụ 12.

Ví dụ 12. org.dita.dost.doc_toc.xml
<?xml version="1.0" encoding="UTF-8"?>

<?NLS TYPE="org.eclipse.help.toc"?>

<toc label="Building DITA output">
   <topic label="Overview" href="overview-summary.html">
  <topic label="org.dita.dost.index Package" href="../index/package-summary.html">
    <topic label="IndexTerm" href="../index/IndexTerm.html"/>
    <topic label="IndexTermCollection" href="../index/IndexTermCollection.html"/>
    <topic label="IndexTermTarget" href="../index/IndexTermTarget.html"/>
    <topic label="TopicrefElement" href="../index/TopicrefElement.html"/>
  </topic>
  <topic label="org.dita.dost.invoker Package" href="../invoker/package-summary.html">
    <topic label="AntInvoker" href="../invoker/AntInvoker.html"/>
    <topic label="CommandLineInvoker" href="../invoker/CommandLineInvoker.html"/>
    <topic label="JavaInvoker" href="../invoker/JavaInvoker.html"/>
  </topic>
  <topic label="org.dita.dost.log Package" href="../log/package-summary.html">
    <topic label="DITAOTBuildLogger" href="../log/DITAOTBuildLogger.html"/>
    <topic label="DITAOTEchoTask" href="../log/DITAOTEchoTask.html"/>
    <topic label="DITAOTFailTask" href="../log/DITAOTFailTask.html"/>
    <topic label="DITAOTFileLogger" href="../log/DITAOTFileLogger.html"/>
    <topic label="DITAOTJavaLogger" href="../log/DITAOTJavaLogger.html"/>
    <topic label="LogConfigTask" href="../log/LogConfigTask.html"/>
    <topic label="MessageBean" href="../log/MessageBean.html"/>
    <topic label="MessageUtils" href="../log/MessageUtils.html"/>
  </topic>
  <topic label="org.dita.dost.module Package" href="../module/package-summary.html">
    <topic label="Content" href="../module/Content.html"/>
    <topic label="AbstractPipelineModule" href="../module/AbstractPipelineModule.html"/>
    <topic label="ContentImpl" href="../module/ContentImpl.html"/>
    <topic label="DebugAndFilterModule" href="../module/DebugAndFilterModule.html"/>
    <topic label="GenMapAndTopicListModule" href="../module/MapAndTopicListModule.html"/>
    <topic label="IndexTermExtractModule" href="../module/IndexTermExtractModule.html"/>
    <topic label="ModuleFactory" href="../module/ModuleFactory.html"/>
    <topic label="MoveIndexModule" href="../module/MoveIndexModule.html"/>
    <topic label="MoveLinksModule" href="../module/MoveLinksModule.html"/>
  </topic>
  <topic label="org.dita.dost.pipeline Package" href="../pipeline/package-summary.html">
    <topic label="AbstractPipelineInput" href="../pipeline/AbstractPipelineInput.html"/>
    <topic label="AbstractPipelineOutput" href="../pipeline/AbstractPipelineOutput.html"/>
    <topic label="AbstractFacade" href="../pipeline/AbstractFacade.html"/>
    <topic label="PipelineFacade" href="../pipeline/PipelineFacade.html"/>
    <topic label="PipelineHashIO" href="../pipeline/PipelineHashIO.html"/>
  </topic>
  <topic label="org.dita.dost.platform Package" href="../platform/package-summary.html">
    <topic label="IAction" href="../platform/IAction.html"/>
    <topic label="DescParser" href="../platform/DescParser.html"/>
    <topic label="Features" href="../platform/Features.html"/>
    <topic label="FileGenerator" href="../platform/FileGenerator.html"/>
    <topic label="ImportAction" href="../platform/ImportAction.html"/>
    <topic label="InsertAction" href="../platform/InsertAction.html"/>
    <topic label="Integrator" href="../platform/Integrator.html"/>
    <topic label="IntegratorTask" href="../platform/IntegratorTask.html"/>
  </topic>
  <topic label="org.dita.dost.reader Package" href="../reader/package-summary.html">
    <topic label="AbstractReader" href="../reader/AbstractReader.html"/>
    <topic label="AbstractXMLReader" href="../reader/AbstractXMLReader.html"/>
    <topic label="DitamapIndexTermReader" href="../reader/DitamapIndexTermReader.html"/>
    <topic label="DitaValReader" href="../reader/DitaValReader.html"/>
    <topic label="GenListModuleReader" href="../reader/GenListModuleReader.html"/>
    <topic label="IndexTermReader" href="../reader/IndexTermReader.html"/>
    <topic label="ListReader" href="../reader/ListReader.html"/>
    <topic label="MapIndexReader" href="../reader/MapIndexReader.html"/>
  </topic>
  <topic label="org.dita.dost.util Package" href="../util/package-summary.html">
    <topic label="CatalogParser" href="../util/CatalogParser.html"/>
    <topic label="CatalogUtils" href="../util/CatalogUtils.html"/>
    <topic label="Constants" href="../util/Constants.html"/>
    <topic label="DITAOTCopy" href="../util/DITAOTCopy.html"/>
    <topic label="FileUtils" href="../util/FileUtils.html"/>
    <topic label="IsAbsolute" href="../util/IsAbsolute.html"/>
    <topic label="StringUtils" href="../util/StringUtils.html"/>
  </topic>
  <topic label="org.dita.dost.writer Package" href="../writer/package-summary.html">
    <topic label="AbstractWriter" href="../writer/AbstractWriter.html"/>
    <topic label="AbstractXMLWriter" href="../writer/AbstractXMLWriter.html"/>
    <topic label="CHMIndexWriter" href="../writer/CHMIndexWriter.html"/>
    <topic label="DitaIndexWriter" href="../writer/DitaIndexWriter.html"/>
    <topic label="DitaLinksWriter" href="../writer/DitaLinksWriter.html"/>
    <topic label="DitaWriter" href="../writer/DitaWriter.html"/>
    <topic label="JavaHelpIndexWriter" href="../writer/JavaHelpIndexWriter.html"/>
    <topic label="PropertiesWriter" href="../writer/PropertiesWriter.html"/>
  </topic>
  </topic>
  </toc>

Bây giờ thì chúng ta đã có tất cả các tệp trình bổ sung, các tệp này đã được đưa vào cho hệ trợ giúp Eclipse. Bạn có cấu trúc của tài liệu tham chiếu Java API, tài liệu này giúp định hướng trong trình bổ sung trợ giúp Eclipse thông qua mục lục (TOC) được viết như là một tài liệu XML. Nhu cầu duyệt được và tìm kiếm được được thỏa mãn với cách tiếp cận thông tin có cấu trúc này, sử dụng XML.


Tài liệu được cung cấp với một danh mục có thể rút gọn lại được ở bên trái và tài liệu HTML ở bên phải

Chạy JavaDoc để tạo tệp HTML

Chạy JavaDoc từ giao diện dòng lệnh từ thư mục C:\doclet\JavaTOC\demo\output\org.dita.dost.doc (buildJavaDoc.bat) để tạo ra các tệp HTML cho tài liệu tham chiếu API.

C:\doclet\JavaTOC\demo\output\org.dita.dost.doc>javadoc -sourcepath src -d doc -doctitle "Building DITA output" -overview src\overview.html org.dita.dost.index org.dita.dost.invoker org.dita.dost.log org.dita.dost.module org.dita.dost.pipeline org.dita.dost.platform org.dita.dost.reader org.dita.dost.util org.dita.dost.writer org.dita.dost.exception


Sử dụng JavaTOC doclet để tạo ra nhiều tệp mục lục XML

Một tệp Java API đơn điển hình có thể chứa từ bảy tệp gói trở lên. Với JavaTOC doclet, bạn chỉ duy trì một tệp (package.txt), và phần còn lại sẽ được tạo ra. Bạn có thể giảm đáng kể thời gian phát triển và có thể tập trung vào việc làm tài liệu API bởi vì JavaTOC tạo ra 100% mã trợ giúp trình bổ sung cho bạn.

Chạy cùng ví dụ org.dita.dost

Chạy JavaTOC doclet giao diện dòng lệnh từ C:\doclet\ directory.C:\doclet\JavaTOC>javadoc @tocdoclet options.org.dita.dost @packages (Ví dụ 13)

Ví dụ 13. options.org.dita.dost
-sourcepath demo/src
-d demo/output2/org.dita.dost.doc
-overview src/overview-summary.html
-provider XYZ -doctitle 'Building DITA output'
-notree

trong đó tôi giới thiệu tham số -notree:

Tham sốMô tả
-notreeChỉ ra là tạo nhiều tệp mục lục XML
GHI CHÚ: Nếu thiếu tham số này thì sẽ chỉ tạo ra một tệp mục lục XML.

hoặc

C:\doclet\JavaTOC>javadoc -doclet com.ibm.malup.doclet.config.TOCDoclet -docletpath C:\doclet\JavaTOC\bin\TOCNavDoclet.jar -sourcepath demo/src -d demo/output/org.dita.dost.doc -doctitle 'Building DITA output' -pluginid org.dita.dost.doc -provider XYZ -version 1.0.1 -overview demo/src/overview-summary.html -notree org.dita.dost.index org.dita.dost.invoker org.dita.dost.log org.dita.dost.module org.dita.dost.pipeline org.dita.dost.platform org.dita.dost.reader org.dita.dost.util org.dita.dost.writer

Thư mục đích cho các tệp đầu ra (org.dita.dost.doc)

  • Doclet tạo ra các tệp XML đầu ra cho trình bổ sung và một số các tệp hữu ích tại C:\doclet\JavaTOC\demo\output\org.dita.dost.doc. Đây là thư mục trình bổ sung mới của bạn:
    • plugin.xml
    • plugin.properties
    • META-INF\MANIFEST.MF
    • doclet.toc.xml
      org.dita.dost.index.toc.xml,
      org.dita.dost.invoker.toc.xml,
      org.dita.dost.log.toc.xml,
      org.dita.dost.module.toc.xml,
      org.dita.dost.pipeline.toc.xml,
      org.dita.dost.platform.toc.xml,
      org.dita.dost.reader.toc.xml,
      org.dita.dost.util.toc.xml,
      org.dita.dost.writer.toc.xml — các tệp XML mục lục để xây dựng cây định hướng trong trình duyệt trợ giúp
    • buildJavaDoc.xml — tệp ANT để chạy công cụ JavaDoc từ môi trường Ant.
    • buildJavaDoc.bat — tệp BAT để chạy công cụ JavaDoc.

Tệp org.dita.dost.index.toc.xml chỉ là một mục lục khác, và cần có định dạng giống hệt như bất cứ tệp toc.xml nào khác (ví dụ 14).

Ví dụ 14. plug-in.xml
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="1.0"?>

 <plugin
    name = "%Plugin.name"
    id = "org.dita.dost.user.doc"
    version = "7.0.1.0"
    provider-name = "%Plugin.providerName">

  <extension point="org.eclipse.help.toc">

   <toc file="doclet.toc.xml" primary="true"/>

    <toc file="org.dita.dost.exception.toc.xml"/>
    <toc file="org.dita.dost.index.toc.xml"/>
    <toc file="org.dita.dost.invoker.toc.xml"/>
    <toc file="org.dita.dost.log.toc.xml"/>
    <toc file="org.dita.dost.module.toc.xml"/>
    <toc file="org.dita.dost.pipeline.toc.xml"/>
    <toc file="org.dita.dost.platform.toc.xml"/>
    <toc file="org.dita.dost.reader.toc.xml"/>
    <toc file="org.dita.dost.util.toc.xml"/>
    <toc file="org.dita.dost.writer.toc.xml"/>


  </extension>

</plugin>

trong đó "doclet.toc.xml" là tệp chính. Điều quan trọng ở đây là định nghĩa mục lục này là mục lục chính (ví dụ 15).

Ví dụ 15. doclet.toc.xml
 <?xml version="1.0" encoding="UTF-8"?>
 <?NLS TYPE="org.eclipse.help.toc"?>

<toc label="Building DITA output">
   <topic label="Overview" href="doc\overview-summary.html">
        <link toc="org.dita.dost.exception.toc.xml"/>
        <link toc="org.dita.dost.index.toc.xml"/>
        <link toc="org.dita.dost.invoker.toc.xml"/>
        <link toc="org.dita.dost.log.toc.xml"/>
        <link toc="org.dita.dost.module.toc.xml"/>
        <link toc="org.dita.dost.pipeline.toc.xml"/>
        <link toc="org.dita.dost.platform.toc.xml"/>
        <link toc="org.dita.dost.reader.toc.xml"/>
        <link toc="org.dita.dost.util.toc.xml"/>
        <link toc="org.dita.dost.writer.toc.xml"/>
 </topic>
</toc>

Khi xem tài liệu thì sẽ không có sự khác biệt nào giữa việc sử dụng phương pháp này và việc chỉ đơn giản đưa thêm vào các phần tử chủ đề một cách trực tiếp (ví dụ 16).

Ví dụ 16. org.dita.dost.index.toc.xml
 <?xml version="1.0" encoding="UTF-8"?>
 <?NLS TYPE="org.eclipse.help.toc"?>

<toc label="org.dita.dost.index Package" link_to="../doclet.toc.xml#java.packages">
  <topic label="org.dita.dost.index Package" href="~/index/package-overview.html">
           <anchor id="org.dita.dost.index.packages"/>
    <topic label="IndexTerm" href="doc/org/dita/dost/index/IndexTerm.html"/>
    topic label="IndexTermCollection" href="~/index/IndexTermCollection.html"/>
    <topic label="IndexTermTarget" href="doc/org/dita/dost/index/IndexTermTarget.html"/>
    <topic label="TopicrefElement" href="doc/org/dita/dost/index/TopicrefElement.html"/>
  </topic>
</toc>

Sau khi sửa hoặc thêm tài liệu API mới vào tệp mã nguồn, bạn nên tạo ra tài liệu để khẳng định chắc chắn và kiểm tra rằng kết quả thu được là những gì bạn đã mong đợi.

Bây giờ lấy trình bổ sung của bạn và thả nó vào thư mục các trình bổ sung của nền, khởi chạy Eclipse và chọn Help -> Help Contents.

Chạy JavaDoc để tạo ra tệp HTML

Để tạo ra tài liệu tham chiếu Java API (định dạng HTML) cho ví dụ của chúng ta (org.dita.dost):

  • Chạy tiện ích javadoc trên mã Java bằng cách thực hiện lệnh đó, hoặc
  • Chạy tệp bat buildJavaDoc.bat (ví dụ 17).
Ví dụ 17. buildJavaDoc.bat
javadoc 
-sourcepath src -d doc -doctitle "DITA XML" -overview src\overview.html
org.dita.dost.index org.dita.dost.invoker org.dita.dost.log
org.dita.dost.module org.dita.dost.pipeline org.dita.dost.platform
org.dita.dost.reader org.dita.dost.util org.dita.dost.writer
org.dita.dost.exception

Đóng gói trình bổ sung

Mỗi phần tử chủ đề được biểu diễn trong tài liệu cuối cùng bằng một mục trong danh sách định hướng. Các chủ đề này có thể được lồng vào nhau (chúng có thể chứa nhiều chủ đề hơn) và mỗi chủ đề trỏ đến một tệp HTML. Một khi bạn đã làm việc này thì tất cả những gì bạn cần phải làm là đóng gói mọi thứ theo cấu trúc được thể hiện ở hình 1 (chú ý rằng tên thư mục trình bổ sung tương ứng với các thuộc tính id và phiên bản của trình bổ sung đã được định nghĩa trong plugin.xml).

Hình 1. Thư mục trình bổ sung
Thư mục trình bổ sung

Để tiện lợi và giảm kích thước tệp, Eclipse cho phép bạn giữ tất cả các tài liệu thực sự của mình (các tệp HTML) trong một tệp ZIP được gọi là doc.zip, do vậy bạn có thể sử dụng cấu trúc thư mục được hiển thị trong hình 2.

Hình 2. Cấu trúc thư mục của doc.zip
Cấu trúc thư mục của doc.zip

Xem tài liệu của bạn

Cách dễ nhất để kiểm tra trình bổ sung của bạn là đơn giản chỉ việc thả toàn bộ thư mục (như trên) vào thư mục các trình bổ sung của một nền Eclipse đã được cài đặt, và sau đó khởi chạy Eclipse và chọn Help > Help Contents. Bạn sẽ thu được một cửa sổ trợ giúp với trình bổ sung của bạn đã được thêm vào (giống như trong hình 3).

Hình 3. Help — Eclipse SDK
Eclipse SDK Help

Ghi chú

"Sự đơn giản là linh hồn của tính hiệu quả". — Austin Freeman

Thói quen viết lời bình tốt rất quan trọng đối với chất lượng của đoạn mã được viết ra, cũng như là chất lượng của sản phẩm cuối cùng sẽ sử dụng đoạn mã đó.

Thông tin được cung cấp trong tài liệu này là các quan sát và kĩ thuật của tôi, với danh nghĩa là một thư ký kỹ thuật, nó chưa từng được thực hiện bất cứ sự kiểm tra chính thức của IBM nào và được cung cấp "như hiện có", không có bảo đảm ở bất kì dạng nào, cả rõ ràng và hàm ý.
Công cụ JavaTOC doclet là một phát kiến mở của tác giả Mariana Alupului. Phát kiến này là một phần của các tài sản trí tuệ của IBM và được công bố tại www.ip.com.
Việc sử dụng thông tin ở đây hoặc việc thực thi bất cứ kĩ thuật nào được mô tả trong tài liệu này là trách nhiệm của người đọc và phụ thuộc vào khả năng của người đọc để đánh giá và tích hợp chúng vào môi trường hoạt động của mình.


Kết luận

Nguồn tham chiếu Java API được sở hữu bởi các lập trình viên và chúng được chỉnh sửa bởi cả các lập trình viên và các thư ký kĩ thuật.

JavaTOC Doclet được trình bày trong tài liệu này có thể được sử dụng để tạo tài liệu trợ giúp tham chiếu Java API dựa trên HTML và một lượng nhỏ các thành phần tài liệu bổ sung. Thông qua việc sử dụng doclet này có thể dễ dàng tạo ra tài liệu nền Eclipse, tài liệu này sau đó có thể được sử dụng để tạo ra định dạng đầu ra XML và HTML cho các hệ thống trợ giúp Eclipse có sẵn. Chúng ta đã xem cách sử dụng JavaTOC doclet để xây dựng tài liệu nền Eclipse. Giải pháp mã nguồn mở này có thể đơn giản hóa việc xây dựng tài liệu của bạn, cho phép bạn làm chỉ làm việc với doclet, trình bổ sung và tài liệu tham chiếu sẽ được tạo ra cho bạn. Theo thời gian sẽ có ngày càng nhiều các bổ sung.

Trong các bài viết tiếp theo của loạt bài về lĩnh vực developerWorks XML, Tài liệu Java API được tổ chức trong đặc tả DITA API như thế nào, Tôi sẽ mô tả quá trình sử dụng công cụ DITAdoclet cho hệ trợ giúp trình bổ sung Eclipse để sinh tự động tài liệu Java API có thể tìm kiếm được (định hướng mục lục). Chúng tôi cũng sẽ xem xét sâu hơn công nghệ Java API, và một số cải tiến của IBM nhằm nâng cao giá trị, bao gồm đặc tả Java DITA API và cách sử dụng nó.


Tải về

Mô tảTênKích thước
Java Toc fileJavaTOC.zip108KB

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

  • Đặc tả DITA API (javaapiref0.8.zip ) có thể được sử dụng hoặc xem xét như là một ví dụ về cách mở rộng đặc tả tham chiếu API chung.

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Rational, Nguồn mở
ArticleID=413513
ArticleTitle=Tài liệu tham chiếu Java API
publish-date=07172009