处理 OpenOffice.org 基于 XML 的文档格式

Open UI5 源代码解析之871:NavContainer.js NavContainer.js是SAP OpenUI5框架中实现页面导航功能的核心组件,位于src/sap.m/src/sap/m目录下。作为导航控制器,它管理页面间的转场动画、历史堆栈和焦点控制,支持前进/后退/返回顶层等导航操作。该文件通过状态机设计处理并发导航请求,包含to()、back()等方法实现页面跳转,并维护导航历史栈。它还提供完善的无障碍支持,包括ARIA属性和焦点管理,以及多种转场动画效果和占位符机制优化加载体验。作为基础架构组件,NavContainer为UI5应用提供了稳定可靠的导航功 阅读详情

日常办公套件,力所不能及

  有时您会处于这样一种境地,即所使用的办公套件具有 500,000 种特性 却无一符合自己的需要。无论办公套件中加入了多少特性,我们总会发现一些重复的工作令人头痛不已,如果这些乏味的工作能够自动完成的话,那么将省下许多麻烦。

  比如说,OpenOffice.org 能生成对索引的引用。敲击几次键盘便可以生成数千条引用。但是当您想要删除它们时,情况又是如何呢?答案是您只能一条一条地删除它们。这样一来,如果想要更改编入索引的关键字,那么您会发现这是一个痛苦的过程。

   您自己可能还会想到一些其他的例子。根据所使用的办公套件,您也许可以使用 StarOffice Basic 或 Microsoft® Visual Basic® for Applications (VBA) 采用编程的方法解决一些问题。但如果您对编程一窍不通,或者您知道如何编程但是却发现这样做更加费时费力,那又该如何是好呢?

  得益于日 趋流行的 XML 文档格式,您也许不用编程便可以迅速解决问题,当然这要取决于问题的类型。使用一些已有的 XML 知识,比如通用 XML 扩展(如名称空间)和基于 XML 的通用文件格式(如可扩展超文本标记语言 [XHTML] 和可缩放矢量图形[SVG]),您可以在短时间内对文档进行大量的修改,而这在办公套件中却不是那么容易实现的。在这一方 面,OpenOffice.org 中的 ODF 就特别方便好用,因此在本文的示例中我将主要使用 OpenOffice 格式。

  OpenDocument Format

   ODF 的好处就是极具简单性。这种格式在 OpenOffice.org 中使用,它由一个简单的 Java™ Archive File (JAR) 文件构成,这个 JAR 文件是一个压缩 (.zip) 文件,其中包含一个清单。这个压缩文件中包含一系列 XML 文件,分别对文档的各个不同部分进行了说明。

  看看一个 OpenOffice.org 文档的例子。使用 OpenOffice.org(请参阅 参考资料 获得下载信息)创建一个新文本文档。键入 Hello world!,然后保存并关闭文档。确保文件保存为开放文档文本 (ODT) 格式(使用 .odt 扩展名)。

  同样,OpenOffice.org 文本文档基本都是压缩文件。因此要取出某个文件,大多数人都会采用如下这个最简单的方法:

  复制一个文档副本(以使原始文件不被损害)。

  使用 .zip 扩展名重命名该副本。

  使用喜好的压缩工具(比如说 unzip、WinZip 或 Microsoft Windows® Explorer)解压这个压缩文件。

  解压压缩文件时,文件中应该大致包含如下内容:

  Configurations2 (directory)

  META-INF (directory)

  Thumbnails (directory)

  content.xml

  meta.xml

  mimetype

  settings.xml

  styles.xml

  这些目录中并没有包含任何可能需要编辑的内容。事实上,目前惟一令我困扰的就是 表 1 中所描述的文件。

  表 1. ODF 文本文档文件

FileDescription
content.xml包含所有的文档文本以及索引标记、样式信息的链接等等。该文件是文档的主体。
meta.xml包含文件元数据,比如说作者和文档标题。
styles.xml定 义文本的格式,比如字体的更改、段落方向、页面样式等等。如果您对 Web 设计比较熟悉,那么您就知道 styles.xml 功能等同于 CSS 样式表。ODF 会尽可能地保持样式与内容分离,因此 content.xml 文件中不会混入任何此类信息的说明。最多是含有一些从内容到样式的链接。
Thumbnails/thumbnail.png提供文档第一个页面的缩略图。

  掌握 XML

  正如一些设计相当良好的 XML 格式,文档文件并不是特别难于理解。XML 标记所使用的名字往往不言自明,因此我们可以大致猜出它们的意思。(当然,如果您不乐于猜测,那么可以阅读 ODF 文档。请参阅 参考资料 获得更多信息。)表 2 提供了一些示例。

  表 2. XML 标记

TagDescription
<office:document-content>根标记。注意,所有的 XML 名称空间(包括 office)都定义在这个标记中。
<office:font-face-decls>包含文档中所使用的字体。
<office:automatic-styles>包含最基本的样式。styles.xml 文件对这些样式作出了详细说明。
<office:body>包含文档的主体。
<text:p>对应于 HTML 中的 <p> 标记,出现在整个段落的两侧。
<text:span>对应于 HTML 中的 <span> 标记,允许我们为段落了某些特定的部分指定样式。
<text:alphabetical-index-mark>、

  <text:alphabetical-index-mark-start> 和

  <text:alphabetical-index-mark-end>

标识索引条目。

  简单的更改

  如果尚未作好准备工作,请先解压压缩文件中的 content.xml 文件并在喜好的文本编辑器中打开。然后就可以开始尝试这个简单的实验了,它会让您找到编辑的感觉。在文档接近结束的地方,您会发现如下这行代码:

<text:p text:style-name="Standard">Hello world!</text:p>

  将它改为如下内容:

<text:p text:style-name="Standard">Goodbye cruel world!</text:p>

  接着保存修改的文件。保存好之后,使用新副本更新压缩文件并将其扩展名重命名为 ODT。现在使用 OpenOffice.org 重新打开该文件。您会发现文件中除了有一处文本经过修改之外,其它地方都是与原文件一样的。

  如果一切运行无误,则可以直接跳到 下一节。然而,如果文档无法正确打开,那么您需要检查如下三个地方:

  1、确保没有破坏 XML 文件。

  如果您误删了一个结束标记,键入的标记名不正确或者多打了一个小于号 (<),则有可能遇到这种问题。这也许是编辑过程中最常见的问题,我们应当要保证原文件的安全可靠。

  2、确保是将 XML 文件作为纯文本保存的(即 8-bit Unicode Transformation Format [UTF-8] 格式)。

   如果使用的是简单文本编辑器,那么是不应该出现问题的。但是,如果您选择使用 OpenOffice.org(或者其他的富文本编辑器,比如说 Microsoft Office WordPad、Microsoft Office Word 或 WordPerfect),请确保所保存的文档格式没有保留其格式。如果确实如此,那么可以使用 Save as type > Text document 项来保存 XML 文件。

  3、确保没有修改压缩。

  我不知道最新版的 OpenOffice.org 中是否依然存在此问题,但是有时我以不同于原压缩文件的压缩等级重新压缩文件时会遇到此问题。这时,OpenOffice.org 就会不太确定如何解释该文件。如果此问题依然存在,可以通过更新已有压缩文件的方法(而不是创建一个新的压缩文件)来避免此问题。

  移除索引标记

  现在看看我之前提到的问题:如何移除多余的索引标记?清单 1 是一个示例 content.xml 文件,其中含有多处索引标记。

  清单 1. 含有索引标记的 Content.xml

<text:p text:style-name="P3">A lot of people would think that
you&apos;re out of your<text:alphabetical-index-mark
text:string-value="gourd" text:key1="mind" text:key2="noggin"/>
mind if you suggest such a thing. Some would say that the ubiquitous
<text:alphabetical-index-mark-start text:id="IMark100896128"/>Microsoft
<text:alphabetical-index-mark-end text:id="IMark100896128"/>
<text:alphabetical-index-mark-start text:id="IMark101662028"/>Office
<text:alphabetical-index-mark-end text:id="IMark101662028"/> is one of
the greatest examples of &quot;feature creep&quot; of any program,
with competitors like Corel and Open<text:alphabetical-index-mark-start
text:id="IMark101661388"/> Office<text:alphabetical-index-mark-end
text:id="IMark101661388"/>.org containing a comparable number of features.

   注意,此处有两种不同类型的索引标记。当 OpenOffice.org 把文档中的某个单词指定为标记时,会将 <text:alphabetical-index-mark-start> 和 <text:alphabetical-index-mark-end> 标记放在其两侧。指定给这两个标记的 text:id 属性是相同的,这样便可以识别它们是相互匹配的。

  如果索引中的单词没有出现在文本中,则会使用另外一种标记。如果多个关键字都与一个特 定的位置相关,那么也会使用这种标记。在本例中,gourd 就是以这种方式输入的。我们可以看到它包含在 <text:alphabetical-index-mark> 标记中间,并没有使用 -start 或 -end。

  这种方式使得移除索引的方法极其简单。要解决此问题,只需在搜索替换操作中使用一些通配符。许多工具都可以完成该操作,但我认为使用 OpenOffice.org 的正则表达式引擎是惟一合适的方法:

  在 OpenOffice.org 中打开 content.xml。

  打开 Find & Replace 对话框并打开 More Options 选项。

  选中 regular expressions 框。

  在搜索框中输入 <text:alphabetical-index-mark(-(start|end))? [^>]*/>。Replace with 输入框不填。

  单击 Replace all。

  以原文本格式保存并关闭文档。

  大功告成!ODT 文件中的这个文件完成替换后,我们会发现所有索引引用都从文档中移除了。这种方法允许我们使用 OpenOffice.org 的工具创建索引,而不会产生重复的标记或者包含无用的标记。

   值得花时间琢磨一下上面所使用的这个搜索替换功能。<text:alphabetical-index-mark(-(start|end))? [^>]*/> 是一个模式,它有效地表示了任何 text:alphabetical-index-mark、text:alphabetical-index-mark-start 或 text:alphabetical-index-mark-end tag 和它们的所有内容。也可以更简单的写为 <text:alphabetical-index-mark [^>]*/>,但是这样有可能会把其他一些类似命名的标记包括进来,如果有的话。

  注意,这一方法并不是万不一失的。比如 说,如果某个索引标记的文本中包含有大于号 (>),那么这个功能会认为标记已经结束,而不会移除整个标记。此类潜在的问题的存在使我们有理由作好备份。如果发生这种问题,可以逐个执行搜索替 换功能,这仍然是移除标记的最快捷的方法。除此之外,还可以编写一个更复杂正则表达式来解决这一问题。

  翻转电子表格数据

  此处是另一个常见任务的例子。我们需要将一行电子表格数据换个格式。比如说,我们要将如下内容:

1  2  3  4  5  6  7  8  9  10

  转换为如下内容:

1
2
3
4
5
6
7
8
9
10

  如果您编辑的是 XML,一个简单的搜索替代功能便可以完成数百个操作。与之前的操作一样,先解压文件,并打开 content.xml 文件。其中包含的内容应该如 清单 2 所示(为了提高可读性,我稍微修改了一下格式):

  清单 2. 电子表格中的 Content.xml

<office:body>
  <office:spreadsheet>
  <table:table table:name="Sheet1" table:style-name="ta1" table:print="false">
     <table:table-column table:style-name="co1"
   table:number-columns-repeated="10"
   table:default-cell-style-name="Default"/>
      <table:table-row table:style-name="ro1">
        <table:table-cell office:value-type="float" office:value="1">
         <text:p>1</text:p>
        </table:table-cell>
        <table:table-cell office:value-type="float" office:value="2">
         <text:p>2</text:p>
        </table:table-cell>
        <table:table-cell office:value-type="float" office:value="3">
          <text:p>3</text:p>
        </table:table-cell>

   翻转数据最简单的方法就是先结束每一行然后再描述下个单元。因此,在文本编辑器中搜索 </table:table-cell> 并替换为 </table:table-cell></table:table-row><table:table- row>。这样便会在每个单元后结束一行并开始一个新行。

  结束语

  本文介绍了几个示例直接编辑 ODF 文档。简单的文本编辑能提供一些简单的特性,而这些特性往往是公办套件所没有的。除此之外,掌握了通过编程语言操纵 XML 的知识,我们几乎可以无所不能,从自动大批量修改到创建新文档,不一而足。甚至还可以使用已有的文件作为模板并使用简单的 shell 脚本和工具生成含有 ODF 文本文件、电子表格等格式的报表。只有想不到,没有做不到!享受编辑的过程吧!

30、Ubuntu系统中替代Windows程序的实用工具 本文介绍了Ubuntu系统中可替代Windows程序的多款实用工具,涵盖办公、浏览、多媒体播放、光盘刻录及图像处理等方面。详细讲解了OpenOffice.org系列软件、Evolution、Firefox、Rhythmbox、Totem、Brasero和The GIMP等功能特点与使用方法,并提供了软件对比、使用建议和操作技巧,帮助用户高效适应Linux环境,提升工作与生活效率。 阅读详情

相关推荐

30、Ubuntu系统中替代Windows程序的实用软件推荐

本文介绍了在Ubuntu系统中可替代Windows常用程序的多款实用软件,涵盖文字处理、电子表格、演示文稿、数据库、邮件管理、网络浏览、音频视频播放、光盘刻录及图像编辑等场景。推荐软件包括OpenOffice系列、Evolution、Firefox、Rhythmbox、Totem、Brasero和The GIMP等,功能全面且操作便捷,帮助用户顺利从Windows迁移至Ubuntu环境,满足办公与日常使用需求。

k6l7m8n9的博客 111

Office Open XML 文件格式简介

Microsoft Office的早期版本中,由Microsoft Office Excel, Microsoft Office PowerPoint和Microsoft Office Word创建的文件以独有的,单一文件格式进行保存,它们称之为二进制文件。Microsoft Office System 2007的发布为Microsoft Office Excel 2007, Microsoft Office PowerPoint 2007和Microsoft Office Word 2007引入了一个新的文件格式:Office Open XML格式。 Office Open XML格式是基于XML和ZIP归档技术创建的。和早期Microsoft Office版本类似,2007的文档保存在一个单一的文件或者容器中,所以管理这些文档的过程仍然是简单的。但是,与早期文件不同的是Office Open XML格式的文件能够被打开显示器中的组件,使得您能够访问此文件的结构。

操作 Office Open XML 格式文档

Microsoft Office的早期版本中,由Microsoft Office Excel, Microsoft Office PowerPoint和Microsoft Office Word创建的文件以独有的,单一文件格式进行保存,它们称之为二进制文件。Microsoft Office System 2007的发布为Microsoft Office Excel 2007, Microsoft Office PowerPoint 2007和Microsoft Office Word 2007引入了一个新的文件格式:Office Open XML格式。 Office Open XML格式是基于XML和ZIP归档技术创建的。和早期Microsoft Office版本类似,2007的文档保存在一个单一的文件或者容器中,所以管理这些文档的过程仍然是简单的。但是,与早期文件不同的是Office Open XML格式的文件能够被打开显示器中的组件,使得您能够访问此文件的结构。

如何操作 Office Open XML 格式文档(转)

摘要: Office Open XML格式文件代替了早期的二进制Office系统文件。本文档向您介绍了包含在一个格式化文档中的组件以及展示这些文件功能的一些场景 。 Frank Rice,微软公司 适用于: Microsoft Office Excel 2007, Microsoft Office PowerPoint 2007, Microsoft Office Word 2007 下...

weixin_33856370的博客 1007

OpenOffice.org中的XML应用

上一篇重点介绍了OpenOffice.org的技术体系结构。它的分层架构、UNO组件模型、基于IDL的API和SDK等等都是使OpenOffice.org获得广泛应用和好评的技术优势所在。 OpenOffice.org中的另一大特点是完全公开并充分记录的、可扩展和标准化的XML文件格式。该文件格式可以持久保存数据,用户不虞担心无法访问年代久远的文件,或者需要为此付出高昂的代价。基于该文件

flyonok的专栏 1896

OpenOffice_org系列讲座(三)

OpenOffice.org中的XML应用上一篇重点介绍了OpenOffice.org的技术体系结构。它的分层架构、UNO组件模型、基于IDL的API和SDK等等都是使OpenOffice.org获得广泛应用和好评的技术优势所在。OpenOffice.org中的另一大特点是完全公开并充分记录的、可扩展和标准化的XML文件格式。该文件格式可以持久保存数据,用户不虞担心无法访问

maoyg的专栏 995

OpenOffice xml文件格式协议参考资料

微软ppt在2007版本之前采用的是二进制格式,在2007版本之后openoffice协议 协议参考资料如下: http://c-rex.net/projects/samples/ooxml/e1/index.html http://officeopenxml.com/drwSp-text-lstPr.php...

Keep Moving~ 2243

openoffice 2.01

OpenOffice.org 是一套跨平台的办公室软体套件,能在Windows、Linux、MacOS X (X11)、和 Solaris等作业系统上执行。它与各个主要的办公室软体套件相容。OpenOffice.org是自由软体,任何人都可以免费下载、使用、及散布它。下列是OpenOffice.org 的主要元件: Writer (文书) Impress (简报) Calc (试算表)

雪里风火 1175

文档格式批量转换(doc,txt,pdf等)

此页由Linux Wiki用户Chenxing于2008年3月11日 (星期二) 10:45的最后更改。 出自Linux Wiki在Linux中常常涉及到多种文档格式,如doc、txt、html、rtf等等。为了方便文件传递,就可能需要在各种格式之间进行转换。OpenOffice.Org可以方便的打开多各文档格式并按需进行转换,但要一次处理大量文件或要编写脚本进行转换时,仅用OpenOf...

dianhuanzi3763的博客 463

Linux doc格式转化,文档格式批量转换(doc,txt,pdf等)

在Linux中常常涉及到多种文档格式,如doc、txt、html、rtf等等。为了方便文件传递,就可能需要在各种格式之间进行转换。可以方便的打开多各文档格式并按需进行转换,但要一次处理大量文件或要编写进行转换时,仅用OpenOffice就难以胜任了。利用OpenOffice.Org的UNO接口实现了命令行文档格式转换功能,支持所有OpenOffice支持的文件格式,为文档的批量转换提供了可能。目录...

weixin_36410277的博客 979

OpenOffice.org 2.4.0 Final

OpenOffice原是Sun公司的一套商业级Office软件: StarOffice,经过Sun公开程序码之后,正式命名为 OpenOffice发展计划,并由许许多多热心于自由软件的人士共同来维持.让大家能在MSOffice之外,还能有免费的Office可以使用. OpenOffice是个整合性的软件,里面包含了许许多多的工具,其功能绝对不比微软的MS Office差,不但可以有Word一样的字...

party 103

文档格式标准之争,为何如此激烈?

<!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } -->       电子文档原本各式各样,其存储的标准格式,必然很复杂。人们对于文档格式的私有标准,深恶痛绝,但是,又无可奈何。微软的Office,尤其是它的Word字处

袁萌专栏 2573

【工具】通用文档转换器 推荐 Markdown 转为 Word 或者 Pdf格式 可以批量或者通过代码调用

如果您需要将文件从一种标记格式转换为另一种标记格式,Pandoc 就是您的瑞士军刀。(← = 从 转换;↔︎ = 从 和 转换为)比如 Markdown 转为 Word 或者 Pdf格式。↔︎ Jupyter 笔记本 (

我是Superman丶的博客 776

java openoffic linux_怎样使用Java读取OpenOffice文档

由于项目的需要,我们需要在Java程序读取OpenOffice文档,并对数据进行处理。本文介绍了如何使用ODF Toolkit去读取OpenOffice SpreadSheet的内容。1. OpenOffice Spreedsheet 文档假设我们需要读取如下图所示的OpenOffice Spreedsheet 文档: 上面的文档也包含在本文的源代码中。OpenOffice文档其实是以XML格式存...

weixin_34315803的博客 449

java实现在线预览功能——openoffice(支持xlx,xlxs,txt,word,ppt等格式)

功能说明: 利用openoffice插件将上传在服务器端的各种文件转换成pdf实现在线预览功能。 支持格式: xlx,xlxs,txt,word,ppt等格式都可以。 实现步骤: 一、安装openoffice插件,启动服务。 安装步骤可参考: https://blog.csdn.net/Howinfun/article/details/80759008 说明: 服务器端安装openoffice插件...

CEVERY的博客 7619

ECMA-376(Office Open XML)标准文件阅读记录(一)

Office Open XML (Open XML) 是一种国际认可的文件格式标准,Office 软件套件实施这种标准来保存和交换信息。Open XML 标准的主要目标之一是可与编写该标准时已存在的 Microsoft Office 文档集完全兼容。Open XMLOffice 软件实施者提供一个支持各种功能的标准。这些功能包括互操作性、存档保护、扩展性、与现有 Microsoft Office 文档的兼容性,等等。Open XML 可提供广泛支持。

weixin_36114953的博客 689
上一篇: 开发者最容易犯的13个JavaScript错误
下一篇: The Oracle PL/SQL LEVEL Keyword
decaizhang
博客等级 码龄15年 6粉丝 5原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值