XML 编程思想:开放的办公文件格式

2016-02-19 16:51 3 1 收藏

下面这个XML 编程思想:开放的办公文件格式教程由图老师小编精心推荐选出,过程简单易学超容易上手,喜欢就要赶紧get起来哦!

【 tulaoshi.com - Web开发 】

  OpenOffice.org 是一种成熟的、开放源码的前台办公应用程序套件,它的优点是一种基于开放 XML DTD 的已保存文件格式。这使得在处理 OpenOffice.org 产生的工作时,向用户和开发人员提供了极大的灵活性和能力。在本文中,Uche Ogbuji 介绍了 OpenOffice 文件格式并说明了其优点。

  当标记支持者尝试向大众证明象 XML 这样的技术突破的价值时,他们几乎总是提供专用的、二进制文件格式的示例 而最常用的示例是已保存的字处理器文件。对 XML 文件格式前身的讨论通常会包括用逗号分隔的文件格式,这些格式极频繁地用于电子表格和数据库的导入和导出。由 前台办公(或只是 办公)工具 字处理器、电子表格、表示软件、联系人管理器等 产生的已保存文件保存了大量表示用户知识的数据。您的笔记、备忘录、提议、分析、计划和组织化工具都是知识管理的主要内容。当您升级或迁移任何此类软件时,一个主要问题就是新方案是否要导入旧文件。当执行备份时通常会从这些办公文件入手。

  供应商知道这一点并理解其中的微妙之处:使他们的专用文件格式足够重要,这样您不得不忠诚地使用他们的软件,但同时又使他们的工具足够灵活,可以接受由竞争对手的软件产生的文件格式。但是标记支持者(尤其是 XML 支持者)指出您根本不必屈从于这种貌似仁慈的囚禁。有人提出主张,您为什么不 100% 地控制此类重要的数据?又有人提出,为什么不可以用任何文本查看器轻松地打开文件,以理解内容呢?于是提出了 XML 作为解决方案。XML 不但是纯文本的,而且提供了一个工具箱,使不同 XML 格式之间能够相互转换。有了它,真是透明性和互操作性的福音。

  正如人们所预料的,越来越多的办公工具提供了 XML 输出。最近,Microsoft 在其办公套件的最新版本里,对 XML 集成和导出能力进行了较大改进。OpenOffice.org 项目从 StarOffice 派生出完整的、开放源码的办公套件,该项目将 XML 用作其核心文件格式,而不是作为单独的导出选项。OpenOffice 包括字处理器、电子表格、演示工具和图形/图表化工具。该工具已经问世很长时间(它大约出现在 1994 年),并具有您认为任何此类办公套件应具有的优点和特性。

  OpenOffice.org 的铁杆支持者(OpenOffice.org 网站的志愿参与者和用户)都同意将 OpenOffice 文件格式做得尽可能开放和通用,他们都希望在众多的办公文件格式之间能够有更大的互操作性和灵活性。除了这个目标之外,他们还将文件格式贡献给结构化信息标准促进组织(Organization for the Advancement of Structured Information Standards,OASIS)的一个新技术委员会(TC)。我是该委员会的创始成员,我认为 OpenOffice 格式可以成为有价值的社区资源,用来将我们在工作和联系中使用的人类可读文档与可增加这些文档总体价值的各种元数据管理连接起来。在本文中,我将介绍 OpenOffice 文件格式。

  XML 和办公软件交汇了,这是一个有趣的时刻。有许多关于最新的 Microsoft XDocs 技术的讨论,以及关于它会不会跟 XForms(OpenOffice 格式)和其它此类项目形成竞争或相辅相成的讨论。我不会在本文中论及任何相关主题 部分原因是篇幅不够,还有部分原因是 XDocs 的详细信息才刚披露。此外,在本文后面的部分中,我将使用名称OpenOffice而不是使用完整的正式名称OpenOffice.org。

  整体格式

  我启动了 OpenOffice 1.0.1 for Linux(我很高兴发现它是随 Red Hat 8.0 一起提供的),然后创建了一个文档,如 图 1所示。

  图 1. OpenOffice 字处理器会话

  如您所见,编辑界面很象任何其它 WYSIWYG(所见即所得)字处理器屏幕(OpenOffice 用户界面不在本文讨论范围之内)。我将文件保存为 document.sxw。由于所有文件都是以 OpenOffice 本机格式保存的,所以这实际上是一个包括一组 XML 和其它支持文件的 ZIP 文件 一种称为 OpenOffice 包格式的捆绑包。关于使归档文件约定标准化以打包多个相关的 XML 文档及其支持文件的想法,是一种流行的和惯用的思想:XML 专家 Rick Jelliffe 开发了一种基于 ZIP 的 XML 应用程序归档(XML Application Archive,XAR)格式;还有直接因特网消息封装(Direct Internet Message Encapsulation,DIME),它是一个因特网草案(Internet Draft),但要复杂得多,并且主要是针对消息传递和 Web 服务而不是通用的归档文件。OpenOffice 使用它自己的格式,接下来我将研究这种格式。请参阅 参考资料以获取关于这些格式的更多信息。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

  document.sxw的 ZIP 内容如下:

$ unzip -v document.sxwArchive: document.sxwLength  Method  Size Ratio  Date  Time  CRC-32  Name-------- ------ ------- -----  ----  ----  ------  ----2946 Defl:N   965 67% 12-13-02 04:03 44fee85c content.xml4638 Defl:N   1199 74% 12-13-02 04:03 791e906a styles.xml1120 Stored   1120  0% 12-13-02 04:03 a921529c meta.xml6183 Defl:N   1362 78% 12-13-02 04:03 c8586553 settings.xml752 Defl:N   254 66% 12-13-02 04:03 11144701 META-INF/manifest.xml--------     ------- ---              -------15639       4900 69%              5 files

  第一站是 META-INF/manifest.xml,它在某种程度上担任包中所有其它文件的中央目录。 清单 1是来自我样本文档的清单文件。

  清单 1:图 1 中所示的已保存样本文档的清单

  

?xml version="1.0" encoding="UTF-8"?!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN""Manifest.dtd"manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest"manifest:file-entry manifest:media-type="application/vnd.sun.xml.writer"manifest:full-path="/"/manifest:file-entry manifest:media-type="" manifest:full-path="Pictures/"/manifest:file-entry manifest:media-type="text/xml" manifest:full-path="content.xml"/manifest:file-entry manifest:media-type="text/xml" manifest:full-path="styles.xml"/manifest:file-entry manifest:media-type="text/xml" manifest:full-path="meta.xml"/manifest:file-entry manifest:media-type="text/xml" manifest:full-path="settings.xml"//manifest:manifest

  所有 OpenOffice 格式都使用 DTD,我认为这样很好,因为拥有一个模式,有助于强制格式的互操作性,并且选择 DTD 还确保了对 XML 工具的最广泛支持。警告:要用通用的 XML 工具处理这些文件,您要么必须使用编目(catalog)以解析公用标识,将被指定为系统标识的 Manifest.dtd 文件复制到相同目录中,要么仅使用不读取外部 DTD 子集的工具。OpenOffice 为所需的 DTD 和实体维护一个内部编目。可以在 OpenOffice 安装的共享目录中找到 OpenOffice DTD。例如,在我的 Red Hat 8.0 安装中,它们位于 /usr/lib/openoffice/share/dtd/ 中,而清单 DTD 在 /usr/lib/openoffice/share/dtd/officedocument/1_0/ 中。您也可以在线从 OpenOffice 网站(请参阅 参考资料)下载或访问这些 DTD。清单文件使用公共的 OpenOffice 名称空间,并通常包括一个向每个文件提供因特网媒体类型(IMT)和相关 URL 的项元素列表。用于子文件夹的 media-type 属性是空的(例如我示例中的 Pictures 文件夹),但通常会在这些子文件夹中包含任何嵌入图形的图形源文件。

  meta.xml包括一系列具有文档元数据的元素(如创建和最后编辑日期、已经花费在编辑该文档上的总时间、字数、页数、表数和图数等元素)。您可以将 styles.xml看作 XML 格式中的级联样式表(CSS)和 XSL 格式化对象(XSL-Formatting Objects,XSL-FO)之间的交叉点。它定义了各种样式,这些样式可用于文档的字体、间距、修饰、间隔、制表符停止位等方面编辑会话。它命名了所有样式,因此您可以在其它文件中引用它们。 settings.xml记录用户对 OpenOffice 用户界面的用户首选项。这些涉及到用来编辑文档的应用程序的细节,而不是文档本身的任何细节。这个领域还需要完成一些工作以确保互操作性。总之,如果在多个应用程序(都使用 OpenOffice 格式)中编辑同一文档,不能期望每个应用程序都维护同样类型的设置 但即使如此,又如何防止它们发生冲突呢?

  处理内容

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

  文档的核心(实际内容)在 content.xml中。遗憾的是,在文本编辑器中,乍看上去这个文件中的元素有点过于混乱,但是您可以用多种常见的 XML 工具(包括 XSLT)抽取出字符数据,允许使用空样式表(请参阅 清单 2)。

  清单 2:空 XSLT 样式表

  

xsl:stylesheetxmlns:xsl="http://www.w3.org/1999/XSL/Transform"version="1.0"xsl:output method="text"//xsl:stylesheet

来源:https://www.tulaoshi.com/n/20160219/1613323.html

延伸阅读
标签: Web开发
知名 XML 专家 Elliotte Rusty Harold 的著作 Effective XML为 XML 技术用户提供了最佳实践。该书中关于 XML 设计问题的多数讨论 Uche Ogbuji 也曾经关注过,在本文中,他以该书为线索,进一步探讨了 XML 设计和最佳实践。请在本文的 讨论论坛上与作者和其他读者分享您对本文的看法。 我的同事 Elliotte Rusty Harold 是一位知名的 XML...
标签: Web开发
前几篇文章中,Uche Ogbuji 讨论了 WordNet 2.0,普林斯顿大学的这个项目的目标是建立英文单词及其词法关系的数据库。他说明了如何从单词数据库中提取 XML 序列。本文继续探讨这个话题,通过示例代码说明如何通过 Web 协议来提供这些 WordNet/XML 文档,以及如何使用 XSLT 访问它们。 XML 是 Web 上的 SGML,各种 XML 项目基本上都以这...
标签: Web开发
用于商业的 XML 格式很混乱,而通用商业语言(Universal Business Language,UBL)就志在统一这个混乱的领域。最近,UBL 背后的小组首次发布了该产品,供公开评审。本文中,Uche Ogbuji 首次对 UBL 作了深入探讨。 正如我在 上一篇专栏文章中提到的那样,通用商业语言(UBL)OASIS 技术委员会在 2001 年 10 月 17 日宣告成立。UBL 是用...
标签: 电脑入门
动画文件,这种文件格式是由Apple计算机公司开发,被Apple Macintosh和Microsoft Windows平台所支持,支持25位颜色,最大图像分辨率是64000*64000,支持压缩,用于保存音频和运动视频信息。
标签: Web开发
Uche Ogbuji 就 XML 语义透明性和 XML 知识管理方面讨论了近来所发生的事情,这其中包括 ebXML 和 RosettaNet 中的一些新的开发。 Thinking XML 专栏的前两部分讲述了语义透明性 -- 可以共享那些不受约束的 XML 尖括号和引用标记中含义。由于本文的标题直接涉及到关于 XML 近来所发生的一些事情,所以在本文中(以后还会随时有其它的)...

经验教程

69

收藏

73
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部