级别: 初级 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 部分,研究了针对
Java和
MacOS的工具。
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 所涉及的设计目标和决定,并提供了一些很可能使用的清单。
关于作者
对本文的评价
|