Parsed XML 允许您在 Zope 2 环境中使用 XML 对象。
项目描述
Parsed XML
这是什么?
解析XML允许你在Zope环境中使用XML对象。你可以在Zope中创建XML文档,并利用Zope来格式化、查询和操作XML。
解析XML由一个DOM存储、一个使用PyExpat将XML解析到DOM的构建器以及一个管理代理产品组成,该产品为DOM树提供Zope管理功能。它还包括一个系统来创建Zope URL中节点的路径(节点路径)。
功能
解析XML产品将XML解析为Zopish DOM树。此树中的元素支持持久性、获取等。文档和子节点可以通过管理代理对象进行编辑和管理,底层的DOM树可以通过DTML、Python等直接操作。
DOM 和 ManageableDOM
我们正在实现一个轻量级的DOM树,用于纯DOM访问,以及一个代理壳树来处理管理并处理发布和安全等便利性。可管理节点是代理对象。这些是你在管理界面中看到的内容,以及放入ZODB的顶级对象。注意,只有顶级代理对象是持久的,其他的是瞬时的。节点是纯DOM对象。从可管理节点,可以使用 getDOMObj() 调用来检索DOM节点。
DOM API 支持
Zope创建的DOM树旨在符合DOM 2级标准。这允许你使用标准且强大的API在DTML或外部方法中访问你的XML。
我们目前支持DOM 2 Core和Traversal规范。
DOM树不是使用XML-SIG的DOM包构建的,因为它需要显著不同的节点类。
根据DOM建议中描述的IDL接口的Python语言映射,DOM属性可用;请参阅 映射
URL 遍历
解析XML实现了一个 节点路径 系统来创建对XML节点(通常是元素)的引用。
目前,遍历使用元素的父元素中的索引作为URL键。例如
http://server/myDoc/0/2/mymethod
此URL从具有id myDoc的XML文档对象遍历到它的第一个子元素,到该元素的第二个子元素,到一个id为 myMethod的获取方法。
也可以在URL中使用DOM方法,例如
http://server/myDoc/firstChild/nextSibling/mymethod
使用管理界面编辑 XML
XML文档和子节点可以通过管理界面进行编辑。文档和子树可以通过上传XML文件进行替换。
安全
安全性在文档级别处理。DOM属性和方法由“访问内容信息”权限保护。子节点将从文档获取安全设置。
使用 Parsed XML 进行开发
我们认为解析XML提供了一个灵活的平台,用于使用DOM存储并将该存储扩展到做一些有趣的事情。有关如何为解析XML使用此平台的说明,请参阅 README.DOMProxy。
我们包括了一个全面的单元测试套件,以简化DOM兼容性测试。有关详细信息,请参阅 tests/README。
如果你想提交对解析XML的更改,请使用测试套件确保你的更改不会破坏任何东西。
错误
在多个节点引用如何反映节点以上的层次结构方面存在错误
对DOM文档子节点的引用不会反映对同一节点其他引用所做的某些层次结构更改。
如果创建了两个节点的引用,其中一个后来被重新父化,另一个引用不会反映新的父节点。例如,parentNode属性将是不正确的,以及ownerDocument和ownerElement属性。
无法将DOM文档子节点的引用正确存储为ZODB对象的持久属性;它将丢失关于其父级的层次结构信息。
实体引用处理不完整
实体引用没有反映所引用实体的子节点的子节点;它们根本不包含子节点。
TreeWalker.expandEntityReferences 没有效果,因为上述错误。
对可见性和根的遍历支持尚未完成。
致谢
当前维护者
Martijn Faassen <faassen@infrae.com>
贡献者
Patrick Decat <pdecat@gmail.com>
Tim Heap
Zope Corporation 解析XML团队
Karl Anderson
Fred Drake <fdrake@zope.com>
Todd Corum
Martijn Pieters <mj@zope.com>
外部贡献者
Martijn Faassen <faassen@infrae.com>
许多测试和实现帮助由以下人员提供
Chris McDonough <chrism@zope.com>
Shane Hathaway <shane@zope.com>
Guido van Rossum <guido@python.org>
Parsed XML 还包含由 Amos Latteier 和 Fourthought Inc 编写的原始 XMLDocument 版本的代码。
ParsedXML 包含源自 Fourthought Inc 作品的软件;有关他们的许可,请参阅 LICENSE.Fourthought。
变更
ParsedXML 1.5.1 (2010/07/15)
更新导入和语法以与 Zope 2.12 和 Python 2.6 兼容。
ParsedXML 1.5
已修复的bug
允许在限定名称中使用 Unicode 字符。
其他更改
Zope 2.8 事务兼容性修复。
ParsedXML 1.4
新增功能
将测试套件切换到使用 ZopeTestCase。
更新了用户界面,使 XML 编辑屏幕成为第一个看到的屏幕,而不是 DOM 屏幕。
UI 默认使用 UTF-8,与 XML 的默认编码相同。支持上传中 XML 声明中除 UTF-8 之外的 XML encoding 设置,但 XML 文本将内部转换为 Unicode 并以 UTF-8 编码显示,这是默认编码。
您还可以在编辑条目中使用 XML 声明中的编码,但您可能不太可能得到正确的结果,因为各种编码之间的交互变得相当复杂。如果您有非 UTF-8 编码的 XML 文本,请将其作为文件上传,而不是复制和粘贴。
切换到新的安全声明方式,并添加了一些。
已修复的bug
清理测试,使它们全部通过。这是通过禁用一些失败的测试(不幸的是)来完成的。
一些编码问题现在应该更合理。
杂项
更新许可到 ZPL 2.0。
删除未使用的 HTML 写入支持。
删除旧的 Printer.py 模块(PrettyPrinter 工作得更好,并且具有更多功能)。
删除通过 StrIO 模块进行过时的代理以获取 StringIO 的操作。
ParsedXML 1.3.1
已修复的bug
修复/性能改进。不要依赖于 getPersistentDocument(),而应使用获取父级。这修复了在执行 document.documentElement 时触发的内存泄漏,并且也可能会提高通过 ManageableDOM 包装器访问 DOM 时的性能。
现在 Zope Find 选项卡在用 id 搜索时不应再出现错误。
现在使用 One True Way 来导入 expat('from xml.parsers import expat')。
ParsedXML 1.3.0
功能
所有元素节点现在都有一个 _element_id id。该 id 在文档中保证是唯一的,尽管元素具有哪个 id 可能会在重新解析时更改。
NodePath 系统用于创建到节点的各种路径。这可以基于“child”(子节点索引)、“element_id”或“robust”,后者在某种程度上还不够稳健,但应该能够抵抗文档的许多更改。
添加了美观打印功能。美观打印按钮以美观打印的格式渲染文档,但不保存此更改后的版本(您可以自己保存)。
已修复的bug
删除了 ParsedXML 的 Expat,引入了对 PyXML 的 pyexpat 的依赖(或只需自行编译)。这消除了许多安装问题,特别是在 Windows 上。只需安装 PyXML。
持续尝试使单元测试故事变得合理。
通过使用 PrettyPrinter 避免了 Printer 中的 XML 杂乱错误。
DOM中修复了各种错误。
ParsedXML 1.2.1
功能
pyexpat.c现在与Python和PyXML的版本同步。
ParsedXML 1.2.0
已修复的bug
测试现在更符合Zope单元测试指南。
应与Python 2.1/Zope 2.4兼容,但尚未完全实现(解析器段错误...)
PyExpat的新版本
功能
通过新的DOMProxy实现加快了从Zope环境访问DOM
ParsedXML 1.1b1
已修复的bug
修复了ExpatBuilder错误,该错误会导致在解析文档时DOM引用泄漏。我们正在调查片段解析中的泄漏问题。
功能
添加了ZCatalog支持
添加了ZCache支持
ParsedXML 1.1a1
已修复的bug
版本号更有意义 :)
功能
get_size()返回的值被缓存,这通常会加快实例容器管理视图的管理。
ParsedXML 1.0
已修复的bug
修复了属性节点操作的问题,这些问题没有通过其元素的getAttribute方法反映出来,反之亦然。
修复了解析错误输出在子节点上的错误位置信息。
解析器和打印机会注意默认属性,并且相关的DOM方法可以正常工作。
功能
当ManageableDOM节点在Zope ObjectManager中安装时,可以找到持久的Document包装器。当通过OwnerDocument调用返回时,返回的是该对象,而不是新创建的ManageableDocument包装器。这允许在文档之外进行Zopish导航和发现,有助于缩短获取路径,并修复了文档操作中的一些错误。
ManageableDOM在解析时使用命名空间现在为可选和可设置的。
DOM 2遍历接口已经完善,尽管对可见性和根的支持尚不完整。
ParsedXML 0.1b3
已修复的bug
修复了几个DOM错误。
修复了导致在Solaris下构建问题的分发错误。
解析XML 0.1b2
已修复的bug
在锤炼新的DOM测试过程中发现了许多错误并进行了修复,特别是在命名空间使用、属性打印和属性子项方面。
功能
代码中进行了多次优化。
将ManageableDOM重构为几个基类,以简化扩展。
项目详情
Products.ParsedXML-1.5.1.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | fce7561e5e3bd9b058c5d144b5eb35f5fc0597db2bf18ec491998c7e13847b8e |
|
MD5 | bc9f188a91d3c6438d3ce5e4b015001b |
|
BLAKE2b-256 | b46d2f40f8d97b6b7150351b809f2db01bd8334e5433f9a0c25dbf01f203a62f |