新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> XML与各种文件格式的相互转换及相关工具。 word to xml, xml to word, html to xml, xml to pdf,
    csv to xml, rtf to xml, text to xml, xml to text, xls to xml, xml to xls
    FOP
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 WORD to XML, HTML to XML 』 → [转帖]技巧: 将 Word 文档转换成 Simple Docbook XML 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 21271 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [转帖]技巧: 将 Word 文档转换成 Simple Docbook XML 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     admin 帅哥哟,离线,有人找我吗?
      
      
      
      威望:9
      头衔:W3China站长
      等级:计算机硕士学位(管理员)
      文章:5255
      积分:18406
      门派:W3CHINA.ORG
      注册:2003/10/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给admin发送一个短消息 把admin加入好友 查看admin的个人资料 搜索admin在『 WORD to XML, HTML to XML 』的所有贴子 点击这里发送电邮给admin  访问admin的主页 引用回复这个贴子 回复这个贴子 查看admin的博客楼主
    发贴心情 [转帖]技巧: 将 Word 文档转换成 Simple Docbook XML

    http://www-900.ibm.com/developerWorks/cn/xml/tips/x-tipword/index.shtml

      

    使用 XML 作为中介物,使用最快的方法将 Word 文档转换成适合于计算机的 XML
    [URL=http://www-900.ibm.com/developerWorks/cn/xml/tips/x-tipword/index.shtml#author1]Khor Soon Hin[/URL]([URL=mailto:khorsh@sg.ibm.com]khorsh@sg.ibm.com[/URL])
    IT 专家顾问,IBM
    2002 年 3 月

    在前面的技巧文章中,Khor Soon Hin 向您演示了如何将 RTF(Rich Text Format)文件转换成 Simple DocBook(sdocbook)XML,以及如何将带图形的 RTF 文件转换成 sdocbook。现在,一些好奇的读者询问,对于 Word 文档,是否也能这样做 — 或者,甚至以 HTML 格式显示这些 sdocbook XML。这些问题将是本篇技巧文章所讨论的重点。
    现在,究竟为什么有人想要将 Word 文档转换成 sdocbook XML 文件呢?因为这对于入门者十分有用,一旦我们做了这种转换,就可以编写一个程序来抽取这些 sdocbook XML 文件的所有标题,然后自动生成一个带有一些链接的 Web 页面,这些链接可以装入每个单独的 sdocbook XML 文件。听起来很有趣?请继续读下去。

    内幕
    Microsoft Word 以一种专用格式存储其文档。它通过“组件对象模型(COM)”对象(请参阅侧栏 [URL=http://www-900.ibm.com/developerWorks/cn/xml/tips/x-tipword/index.shtml#microsoft_com_objects]Microsoft COM 对象[/URL])显示其某些特性。在这些特性之中,我们主要来看一下以 Word 的专用格式读取文档的这种特性。该特性能使 MajiX(一种用于 Word 到 XML 转换的开放源码工具)读取 Word 文档。(别忘了,在将文档转换成另一种格式之前,您要能读取它。)

    Microsoft COM 对象
    最初, Microsoft COM 被称为“对象链接与嵌入(Object Linking and Embedding (OLE))”。它构成所有 ActiveX 技术的基础。它是一种开发组件对象的规范,这些组件对象可以使用 Windows 操作系统的专有特性进行互操作。您将在[URL=http://www-900.ibm.com/developerWorks/cn/xml/tips/x-tipword/index.shtml#resources]参考资料[/URL]中找到有关 Java-COM 集成的优秀文章。
    然而,要从 Java 访问 COM 对象,首先必须使用 Microsoft 的 Java 虚拟机 (JVM) JView。现在,我们越发不喜欢被单一供应商所束缚,不是吗?您不必再烦恼了。有了 JAva-COM Bridge (JACOB),这种依赖性已成为过去。JACOB 允许任何 JVM 访问 COM 对象,从而使 Java 应用程序能够利用 COM 对象。使这一操作成为可能的关键技术就是 Java 本机接口 (JNI) — 请参阅侧栏 [URL=http://www-900.ibm.com/developerWorks/cn/xml/tips/x-tipword/index.shtml#java_native_interface]Java 本机接口[/URL]。

    MajiX 是一种利用 JACOB 功能来访问 Microsoft Word COM 对象的 Java 应用程序。这些对象允许 MajiX 读取 Word 文档的格式。只有这样做,MajiX 才能施展它的魔力(不是有意要表示双关):将 Word 文档转换成 sdocbook XML。

    加速
    首先,需要下载和安装 MajiX — 我使用的版本是 1.2.2(请参阅“参考资料”)。您也可以通过阅读我以前的技巧文章来熟悉 MajiX。

    Java 本机接口
    Java 本机接口 (JNI) 是一种使 Java 程序能够调用以非 Java 语言编写的库的接口。在这种特殊情况下,JACOB 利用 JNI 来调用以非 Java 语言编写的 COM 对象。
    非常重要的先决条件
    为了读取 Word 文档,MajiX 需要一些 Microsoft Word COM 对象。只有安装了 Word 97 或 Microsoft Office 2000,才有这些 COM 对象。如果您没有安装它们,请先进行安装。

    还需要告诉 MajiX 您是否已经安装了 Microsoft Word。在 <MajiX install path>\bin 目录下,有一个 majix.conf 文件。用您喜欢的文本编辑器打开该文件,查找 msword。会发现有这样一项:


    <entry key="majix.enable.msword" value="1"/>

    确保 value1。保存该文件,并退出文本编辑器。

    从 JACOB 主页上(请参阅[URL=http://www-900.ibm.com/developerWorks/cn/xml/tips/x-tipword/index.shtml#resources]参考资料[/URL]),进入 Download 部分。要使用 MajiX,无须下载其源代码,所以只要下载二进制文件即可。有一点非常重要:下载 JACOB 版本 1.6。因为我无法在版本 1.7 下使用 MajiX 1.2.2。如果您正在使用 JACOB 版本 1.7,您将得到下面的错误消息:


    com.jacob.com.ComFailException: Can't get object clsid from progid
            at com.jacob.com.Dispatch.createInstance(Native Method)
            at com.jacob.com.Dispatch.<init>(Dispatch.java)
            at com.jacob.activeX.ActiveXComponent.<init>(ActiveXComponent.java)
            at ScriptTest.main(ScriptTest.java:14)

    因此,再次重申,确保您正在使用版本 1.6。

    将下载文件解压缩到您指定的目录来安装 JACOB。在此之后,我们将称该目录为 <JACOB install path>。在 <JACOB install path> 中,有两个重要文件 — jacob.dll 和 jacob.jar。后者是一组 Java 类,它通过 jacob.dll 来访问 COM 对象的接口。jacob.dll 是 Java 应用程序和 COM 对象之间的桥梁。

    要使 Windows 能够找到 jacob.dll,需要将包含 jacob.dll 的目录放入 PATH 环境变量。打开一个 DOS 命令窗口,然后键入以下命令:


    set PATH = <JACOB install path>;%PATH%

    要使 Java 应用程序能够找到 jacob.jar,需要将 jacob.jar 放入您的 CLASSPATH。在同一个 DOS 命令窗口下,键入以下命令:


    set CLASSPATH = <JACOB install path>\jacob.jar;%CLASSPATH%

    在该 DOS 命令窗口中,通过转至 <MajiX install path>\bin 目录和执行 majix 来启动 MajiX。(有关其它启动 MajiX 的方法,请参阅我以前的技巧文章。)每次运行 MajiX 来转换 Word 文档时,都必须重复这些步骤来设置 PATHCLASSPATH。要想对 PATHCLASSPATH 设置一次而对以后的操作都起作用,这取决于您具体的操作系统 — Windows 98、NT、CE 等 — 所以您需要参考适当的参考手册。

    丢失的下拉菜单
    当您下载了 MajiX 并发现下拉菜单丢失时,下面是应该采取的一些步骤:
    在 <install path>/majix/bin 下,列出 *.tdef 文件的目录。您至少应该有 sdocbook.tdef、docbook.tdef 和 default.tdef 这些文件。
    单击 Tools
    双击 Edit the configuration file
    双击 Templates
    单击 New
    选择您在步骤 1 中找到的 sdocbook.tdef。
    单击 Validate
    单击 Close
    再次单击 Close
    在主面板上,单击 Quit
    重新启动 MajiX。

    准备、设置、转换…
    现在,我们准备将第一个 Word 文档转换成 sdocbook。在 Input RTF File 中,键入要转换成 sdocbook 的 Word 文档的完整路径,或单击 Find Document。如果单击 Find Document,那么需要将所有 Files of type 更改为 Word files (.doc)

    一旦已经选择了 Input RTF File,将自动用相同的文件路径和名称填充 Output RTF File,但扩展名将更改为 .xml

    Conversion templates 更改为 sdocbook

    注: 那些从网站上下载了 MajiX 并发现该下拉菜单丢失的用户发送给我许多反馈信息。如果您是这些用户之一,则请参阅侧栏[URL=http://www-900.ibm.com/developerWorks/cn/xml/tips/x-tipword/index.shtml#missing_menu]“丢失的下拉菜单”[/URL]。)

    单击 Convert,MajiX 将 Word 文档转换成 sdocbook XML 文件。

    但是,如果您得到下列错误 —


    Can't find jacob.dll in path
    java.lang.UnsatisfiedLinkError: no library jacob (jacob.dll) in java.library.path
            at java.lang.Throwable.<init>(Throwable.java:96)
            at java.lang.Error.<init>(Error.java:52)
            at java.lang.LinkageError.<init>(LinkageError.java:45)
            at java.lang.UnsatisfiedLinkError.<init>(UnsatisfiedLinkError.java:44)
            at java.lang.ClassLoader.loadLibrary(ClassLoader.java(Compiled Code))
            at java.lang.Runtime.loadLibrary0(Runtime.java:473)
            at java.lang.System.loadLibrary(System.java:771)
            at com.jacob.com.Dispatch.<clinit>(Dispatch.java)
            at com.tetrasix.majix.xml.Converter.Convert(Converter.java:62)
            at com.tetrasix.majix.uis.ConverterThread.run(ConverterThread.java:62)

    — 它意味着至 jacob.dll 的路径不正确。请记住,设置 PATH 变量以指向 jacob.dll 所在的路径。

    结束语
    我们刚才已经研究了如何使用 MajiX 将 Word 文档直接转换成 sdocbook XML。一旦将一组 Word 文档转换成了 sdocbook XML 文件,并将它们存储在一个目录中后,您就可以容易地编写程序来解析所有这些 sdocbook XML 文件以及查找 <title> 标记和生成包含至所有这些 sdocbook XML 文件链接的 Web 页面。要将 sdocbook XML 文件实时显示为 HTML,XSLT 处理器(如 Xalan)通过使用 sdocbook 样式表将 sdocbook XML 文件重新格式化成 HTML。这已在我以前的技巧文章中详细描述过了(请参阅[URL=http://www-900.ibm.com/developerWorks/cn/xml/tips/x-tipword/index.shtml#resources]参考资料[/URL])。

    参考资料

    从 [URL=http://tetrasys.dhs.org/]TetraSix 站点[/URL]下载 MajiX。
    从 [URL=http://danadler.com/jacob/]Dan Adler 的站点[/URL]下载 JACOB。
    请查阅 [URL=http://www.bigatti.it/projects/jacobfaq/]JACOB FAQ[/URL]。
    这里有一篇关于 Java-COM 集成的极好[URL=http://www.codeguru.com/java/tij/tij0195.shtml]教程[/URL]。
    在 [URL=http://www.oasis-open.org/docbook/xml/simple/]Simple DocBook[/URL] 上的“结构化信息标准促进组织(OASIS)”页面上查找有关 Simple DocBook 的更多信息
    从 OASIS 下载 [URL=http://www.oasis-open.org/docbook/xml/simple/4.1.2.5/index.shtml]Simple DocBook DTD[/URL]。
    在 Apache XML Project 查找 [URL=http://xml.apache.org/xalan-j/index.html]Xalan XSLT 处理器[/URL]。
    DITA 提供了作为技术文档框架的 DocBook 的替代方法。请阅读它,并从 developerWorks 上的 [URL=http://www-106.ibm.com/developerworks/xml/library/x-dita1/index.html]DITA 简介[/URL]一文及其相关项下载 DTD。
    IBM [URL=http://www-900.ibm.com/developerworks/cn/cgi-bin/click.cgi?url=http://www-3.ibm.com/software/webservers/appserv/&origin=x]WebSphere Application Server[/URL] 支持 XML 和 Java 开发。

    关于作者
    Soon Hin 认为计算机知识类似于巫术。他认为,它们落入别有用心的人手中都会带来破坏。可以通过 [URL=mailto:khorsh@sg.ibm.com]khorsh@sg.ibm.com[/URL] 与 Khor Soon Hin 联系。


       收藏   分享  
    顶(1)
      




    ----------------------------------------------

    -----------------------------------------------

    第十二章第一节《用ROR创建面向资源的服务》
    第十二章第二节《用Restlet创建面向资源的服务》
    第三章《REST式服务有什么不同》
    InfoQ SOA首席编辑胡键评《RESTful Web Services中文版》
    [InfoQ文章]解答有关REST的十点疑惑

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/2/24 0:03:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 WORD to XML, HTML to XML 』的所有贴子 点击这里发送电邮给Google AdSense  访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/20 8:40:41

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    46.875ms