IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  XML  >

XML问题专栏

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

David Mertz 博士 (mertz@gnosis.cx), 数据处理专家., Gnosis Software, Inc

2002 年 6 月 01 日

欢迎光临 XML 问题 专栏。在本专栏中,我们的David Mertz 博士将和您讨论那些您在使用XML时可能遇到的的方方面面的问题。

XML 问题 #39: 充分利用 gnosis.xml.objectify New!

本文介绍如何经过简单的包装定制 gnosis.xml.objectify,从而执行特定的活动,如通过 XPath 访问子对象、自动将对象重新序列化为 XML、改变访问节点的语法等。

XML 问题 #38: OASIS 的选举标志语言(EML)

本文介绍 EML 的结构和目标,分析目前在欧洲得到广泛应用的这个标准,将如何对美国未来的数据标准产生深远的影响。

XML 问题 #37: 使用 Dublin Core Metadata Initiative 描述 XML 内容

本文说明了如何将 DCMI 提供的一组元数据指令重用于(通过名称空间)范围更广的 XML 词汇表,比如 RSS 的变体。

XML 问题 #36: 投票系统的实用 XML 数据设计和操作

本文介绍了构造格式子集的一些设计原则,考察了如何通过编程让特定的应用程序与 XML 文档等价,以及为什么只有标准是不够的。

XML 问题 #35: GUI 和 XML 配置数据,第 2 部分

本文继续关于如何在 GUI 界面配置中使用 XML 的话题,考察了 Mozilla 基于 XML 的用户界面语言(XUL)。

XML 问题 #34: GUI 和 XML 配置数据

本文考察了 XML 在 Mac OS X 的 Aqua GUI 和 K Desktop Environment (KDE) 中的应用。

XML 问题 #33: XML 用于字处理程序

本文分析指出所有字处理程序的开发人员都认识到了采用 XML 作为文档格式的优势。

XML 问题 #32: XOM Java XML API

本文考察了 Elliotte Rusty Harold 的 XOM,其最主要的一点是严格保持内存中对象的不变性,从而使 XOM 实例总是能序列化为正确的 XML。

XML 问题 #31: 研究 SXML 和 SSAX

本文讨论了 Scheme(一个高效的纯函数性的解析器)的 SSAX 库、SXML 树库(类似于 DOM)以及相关的专门用于处理这些库的工具 SXLT 和 SXPath。

XML 问题 #30: TEI ——文本编码规范

本文介绍了Text Encoding Initiative (TEI,文本编码规范)。

XML 问题 #29: RXP 解析器

本文介绍了 RXP,将它与 expat 解析器进行了对比,并简要讨论了 pyRXP 和 LT XML。

XML 问题 #28: 使用 ElementTree,以 Python 语言处理 XML

本文将 ElementTree 和其它几种致力于以对象树方式处理 XML 实例的库,作了个比照。

XML 问题 #27: 使用 RELAX NG 反击,第 3 部分

本文探讨使用RELAX NG 与 RELAX NG XML这两种语法格式并在这两者之间进行相互转换的工具。

XML 问题 #26: 使用 RELAX NG 反击,第 2 部分

本文通过解决一些附加的语义问题,并探讨一些使用 RELAX NG 的工具。

XML 问题 #25: 使用 RELAX NG 反击,第 1 部分

本文讨论 RELAX NG 的常规语义,并简要阐述数据类型。

XML 问题 #24: reStructuredText

本文展示了现有的工具是如何将 reStructuredText 转换成几种 XML 语言变体(docutils、DocBook 和 OpenOffice)以及其它有用的格式的(如 LaTeX、HTML 和 PDF)。

XML 问题 #23: YAML 对 XML 的改进

本文中,David 向您介绍了 YAML,这是一种人们可以轻松阅读的数据序列化格式,并且它非常适合对动态编程语言中使用的数据类型进行编码。与 XML 不同的是,YAML 使用了清晰且结构极其紧凑的指示符,这主要依赖嵌套元素的缩排。更重要的是,对于许多任务来说,YAML 出众的语法非常适合介于 YAML 和“自然的”数据结构之间的语义。

XML 问题 #22: XML 编辑器综述

在前一篇 XML 编辑器 专栏文章中,我们讨论的是基于 Java 和 MacOS 的应用程序。本文接着研究了基于 Windows 的XML 编辑器,包括有 Altova 的 XMLSpy、Wattle Software 的 XMLwriter、NetBryx Technologies 的 EditML Pro 和 Corel 的 XMetal 。

XML 问题 #21: XML 编辑器综述

在这个关于 XML编辑器的两部分系列文章中, David研究了自从他上次研究过的工具类别后,一年半以来商业工具的进展。本文是本系列的第 1 部分,研究了针对 JavaMacOS的工具。

XML 问题 #20: 将 OOP 数据压缩到 XML 规则中

迄今为止存在的大多数 XML API 已经在编程级别中强制实行了良好的格式,但几乎没有几个 API 能保证有效性。这在整个 XML 处理领域中是个严重的缺陷。本文讨论了作者的 gnosis.xml.validity 库,该库对旨在用于 XML 序列化的 Python 对象强制有效性。

XML 问题 #19: XML 和压缩的进一步探讨

在本专栏以前的文章中,David 研究过一些能够用来可逆地重新构造 XML 文档以改进压缩的技术。然而,对于大型 XML 文档和嵌入式处理,在压缩过程之前重新构造整个源文件似乎不太实际。在本文中,David 研究了重新构造技术在多大程度上适合块级别处理 。

XML 问题 #18:REXML 库

对于 XML 处理,至少可以采取两种态度。一种是采用可以从许多编程语言调用的标准 API。第二种是修改 XML 处理库以适应正用于开发 XML 应用程序的编程语言的特定功能。 在本专栏的前几篇文章中,David 研究了使用他自己的 Python xml_pickle 和 xml_objectify 库以及 Haskell HaXml 库的第二种方法的多个版本。相当新、但发展很快的 Ruby 编程语言的常用库也采用第二种方法。 这里,David 介绍了 Ruby Electric XML(REXML),这种库采用 Ruby 的长处,并围绕它们构建 XML 处理。REXML 具有类似于 SAX 的流样式和 DOM 的树样式的 API,但没有直接将它本身限制于这两种 API。

XML 问题 #17:PYX 简介

XML 是一种十分简单的格式。它使用普通 Unicode 文本而不是二进制编码,并且其所有结构都是由看起来可预见的标记声明的。尽管如此,XML 语法中的规则还是很多,以致于需要一个仔细调试过的解析器来处理 XML 文档 — 而且每个解析器都有其独特的编程风格。一个替代方法是使 XML 更为简单。开放源码 PYX 格式是一种表示 XML 文档的纯面向行的格式,它使得能够以普通文本工具(诸如 grep、sed、awk、wc 和 UNIX 通用的工具集)更容易地处理 XML 文档。

XML 问题 #16: 进一步了解Python中的XML工具:4Suite

Python 模块的 4Suite 集被认为是对于 XML 工具的“内行的选择”。由于其范围和复杂性,4Suite 工具给程序员同时带来了强大的功能和陡峭的学习曲线。但是对于扩展 Python 的最近版本所提供的 XML 基本能力,4Suite 提供了有用的选项。本文中,David 研究了 4Suite 最引人注目的方面,并向您展示了它如何将有用的能力添加到 Python/XML 工具集。

XML 问题 #15: 将 XML-RPC 作为对象模型

确实,XML-RPC 有其自身的缺点,但这个函数调用协议也非常适合多种任务。在本文中,专栏作家 David Mertz 将 XML-RPC 作为建立对象数据模型的方法进行研究,并且响应读者的反馈,将 XML-RPC 作为序列化对象的方法与他早期专栏文章中讨论的 xml_pickle 模块进行了比较。代码样本详细说明了这个比较。

XML 问题 #14: 超越 DOM、SAX 和 XSLT 的限制

在处理 XML 数据时,可以考虑采用 Haskell 来替代 DOM、SAX 或 XSLT。本文介绍了库 HaXml,它将 XML 文档的表示创建成功能语言 Haskell 中原始的递归数据结构。在对这些“数据化”的 XML 文档进行操作时,HaXml 采用了一套强大的高阶函数。 HaXml 的许多技术比如 DOM、SAX 或 XSLT 等常见技术中找到的更为灵巧、简练和强大。

XML 问题 #13:XML 和压缩

本 XML 问题专栏探索了几种压缩 XML 文档的方法。XML 中的特殊结构允许它对最原始的压缩技术进行某些改进。专栏作者 David Mertz 阐明了利用它们的几种方法,以及包含演示这些技术的样本代码。

XML 问题 #12:使用 Python 模块 xml2sql 和 dtd2sql

前面有一篇专栏研究了从 SQL 查询生成 XML 文档。现在,David Mertz 说明将 XML 文档和 DTD 反向转换成 RDBMS 存储格式也同样可能,但它有自己的约束和复杂性集合。Python 公众域利用了这里所讨论的 xml2sql 和 dtd2sql 生成 SQL 语句,以一种一致和可逆的方式创建和填充数据库。这里使用了 7 个代码示例演示了这些技术。

XML 问题 #11:重温 xml_pickle 和 xml_objectify

自从作者 David Mertz 首次介绍了他对 XML 文档进行高级 Python 处理所使用的方便的实用程序以来,不断有用户和读者提出一些非常有益的改进和建议。本专栏介绍了一些对其模块套件的更改,以及有关模块的高级使用和定制方面的技巧。代码样本演示了 py_obj._XML 的属性、作为对象和列表处理的节点属性、py_obj 神奇的属性行为等等。

XML 问题 #10: 对 XML 文档进行索引

随着 XML 文档存储格式越来越普遍,特别对于面向散文文档,在 XML 文档集合中定位内容这一任务变得越发艰巨了。本专栏扩展了 David 在其“可爱的 Python #15”专栏中介绍的常规全文本索引器,使它包括了特定于 XML 的搜索和索引特性。本专栏讨论了该工具的设计是如何利用 XML 的层次节点结构来实现索引的。

XML 问题 #9: SQL 查询中的 DTD 和 XML 文档

本专栏讨论了可以不依赖 RDBMS 生成可移植 XML 结果集的公众域 sql2dtd 和 sql2xml 实用程序。从关系数据库中抽取数据的 SQL 查询可以提供非常实用且特殊的文档类型信息,用于以 XML 表示查询结果。

XML 问题 #8: 将 XML 放在层次、关系和面向对象模型环境中

在证明 XML 最适合于配合数据库使用的过程中,David Mertz 讨论了 XML 是如何适应层次、关系和面向对象数据建模范例的。

XML 问题 #7:W3C XML Schema 与文档类型定义 (DTD) 比较

许多开发者都期待着 XML 模式能够很快取代 DTD 用于指定 XML 文档类型。尽管 David Mertz 相信 XML 模式在开发者宝库中是一种无价工具,但他对该模式将替代 DTD 持怀疑态度。XML 问题专栏的这一部分逐步尝试对模式和 DTD 进行比较,并阐明在 XML 模式世界中发生的事件。

XML 问题 #6:编辑器综述

在本专栏中,David Mertz 提供了他对半打主要 XML 编辑器所进行的最新评论。他比较了每一种的优缺点和能力 -- 特别是在处理有大量文本的散文文档方面。本专栏致力于解决一个非常实际的问题,即如何着手创建、修改和维护面向散文的 XML 文档。

XML 问题 #5:使用 XSLT 转换 DocBook 文档

通过使用 DocBook 示例,David Mertz 演示了如何通过 XSLT (可扩展样式表语言转换)将 XML 文档转换成 HTML。这位无畏的专栏作家一共讨论了四种转换 XML 文档的可选方式,并和我们分享了他试验某些开放源码工具的经历。样本代码包括了 XSLT 文档片段、以 XSLT 表示的简单 DocBook 章节的有效 HTML 输出器代码,以及一个简要的 XSLT 循环示例。

XML 问题 #4: 逐步适应 DocBook XML 方言

本专栏继续讨论使用 DocBook 来将异构格式的文档转换成单一、标准 XML 格式的好处。还更详细地介绍了某些 DocBook 标记,并讨论如何编写基本的 DocBook 文档。

XML 问题 #3: DocBook XML 方言入门

在其有关“XML 问题”新专栏的第三部分中,David Mertz 带您开始使用 DocBook,一种描述技术文章和其它文档内容的 SGML/XML 方言。David 讨论了使用 DocBook 的好处,然后描述了如何规划和模块化大型文档转换项目。

XML 问题 #2: 将 XML 文档作为对象的“Python 化”处理 (II)

在 David Mertz 新的有关“XML 问题”专栏的第二部分 -- 也是他对在 XML 和 Python 之间创建更加无缝的集成而不断进行探求的一部分 -- 中介绍了 xml_objectify 模块。 David 描述了如何使用 xml_objectify,以及将该“Python 化”模块用于作为对象的 XML 文档使用的好处。

XML 问题 #1: 将 XML 文档作为对象的“Python 化”处理

在有关“XML 问题”新专栏的第一部分 -- 也是作为在 XML 和 Python 之间创建更无缝的集成而不断进行探求的一部分 -- 的第一部分中,David Mertz 介绍了 xml_pickle 模块。Mertz 讨论了 xml_pickle 所涉及的设计目标和决定,并提供了一些很可能使用的清单。



关于作者

David Mertz

David Mertz 希望一切都变得美好。可以通过 mertz@gnosis.cx 与 David 联系;在 http://gnosis.cx/publish/上详细介绍了他的生活。 欢迎对过去的、这一篇和以后的专栏文章提出意见和建议。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?







回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款