• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python中的XML库4Suite Server的介绍

Python中的XML库4Suite Server的介绍

作者:goldensun 字体:[增加 减小] 来源:互联网

goldensun 通过本文主要向大家介绍了python xml,python xml解析,python解析xml文件,python xpath解析xml,python读取xml文件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在继续阅读本文之前,您务必要对我们在本专栏中将要讨论的一些技术有所了解。我们要使用的技术包括:可扩展的样式表语言转换(Extensible Stylesheet Language Transformations,XSLT)、XML 路径语言(XML Path Language,XPath)和资源描述框架(Resource Description Framework,RDF)。在 参考资料部分有到关于所有这些技术的信息的链接。
4Suite Server 概述

我们将使用由本文作者参与开发的 XML 资源库 4Suite Server(4SS)作为本文中示例的应用程序基础。4Suite Server 是一个 XML 资源库,它带有许多用于 XML 数据和元数据管理的功能程序,无论使用 Python 与否,这些功能程序都使得 4Suite Server 非常适合 Web 服务的快速开发。

本文中的示例是用 4Suite Server 0.11 编写的,需要使用 Python 1.5.2 或更高版本和 4Suite 0.11。在 参考资料部分有下载所有这些应用程序的链接。
在线软件资源库

本文是“Python Web Services Developer”专栏的第二部分,却是关于构建在线软件资源库的三部分系列的第一部分。在这部分中,我们将构建我们的基础架构。在随后的专栏中,我们将特别描述如何使用各种协议(例如,简单对象访问协议(Simple Object Access Protocol,SOAP)、HTTP 和 WWW 分布式编写和版本控制(WWW Distributed Authoring and Versioning,WebDAV))搜索建立了索引的内容和基于代理的内容添加或内容检索。

我们的在线软件资源库服务模式是基于 RPMFind.net 中的 RDF 模式的,但关系不太紧密。RPMFind 是一个用流行的 Red Hat 包管理器(Red Hat Package Manager,RPM)格式为 UNIX 和 Linux 软件包编制目录的系统。它包含关于软件包的关键元数据(包括作者、版本和描述,格式为 RDF,详见 清单 1)。关于 RDF 的简短定义,请阅读本专栏的前一期,或者去 参考资料部分查找这个简单格式基本介绍的链接。

XML 的实际格式是不相关的。事实上,因为所描述的技术适用于任何类型的 XML 内容,所以根本没必要去描述软件。您可以用这种技术描述书的目录、雇员信息,或者甚至是餐馆的酒类一览表。

这个示例中使用的所有代码和数据文件都可以从 参考资料部分的链接下载。
文档定义

在 4SS 的 XML 资源库中,文档定义允许您指定 XML 内容和 RDF 元数据之间的一个映射。为此,您需要定义由三个 XPath 表达式组成的集:一个主语(subject)表达式、一个谓语(predicate)表达式和一个宾语(object)表达式。XPath 表达式允许您在文档中定义一个节点关系集,并允许根据这些关系从文档返回内容的子集。当在资源库中添加、修改和删除每个 XML 文档时,都要根据 XML 文档求这些 XPath 表达式的值。求得的语句,也被称为 三元组(triple),被自动添加到 RDF 数据库(被称作 模型)中,或从其中删除。如果修改了文档,也要更改元组以反映发生的更改,如果文档被删除了,就要把元组从 RDF 服务器上删除。文档定义可以从其它文档继承定义的信息,这允许您定义 XML 内容到 RDF 元数据信息的复杂映射。

在我们的示例应用程序中,我们将扩展其中一个缺省文档定义。缺省文档定义描述了嵌入在 XML 内容中的 Dublin Core 标记到 Dublin Core 语句的映射。Dublin Core 是一个元数据倡议,它定义了基于 Web 的通用对象(例如, Creator 、 Title 和 Date )的一组标准属性。派生出的文档定义将为每个文档再添加一条语句。

如下所示,一个简单的声明将把这个文档的 Creator 元数据设置为求得的某个 XPath 的结果:

RdfStatement(subject='$uri',
 predicate="http://purl.org/dc/elements/1.1#Title",
 object="/rdf:RDF/s:Software/dc:Creator")

</div>

(上面的代码是一个单行语句,但是为了适合这个格式进行了缩排。)

为了添加或更新系统缺省数据,您应该运行 4SS 自带的脚本 populate.py 。这样将从 ftp://ftp.fourthought.com下载有用的数据来更新您的服务器。下载的数据包含一些常用的项,如 Dublin Core 文档定义和 Docbook 样式表(Docbook 是技术文档流行的 XML 格式)。

在安装 4SS 时,植入脚本将自动安装在演示应用程序中。在基于 Unix 的机器上,植入脚本一般存储在 /usr/doc/4SuiteServer-0.11 或 /usr/local/doc/4SuiteServer-0.11 中。在 Windows 机器上,存储目录一般是 c:\Program Files\Python 或 c:\Python20 。 清单 2展示了植入您的基于 4SS 的应用程序的安装过程。
清单 2:植入 4SS 应用程序

Downloading XML Documents
Downloading Stylesheets
Downloading DocDefs
Adding XML document: 'null'
Adding stylesheet: 'docbook_html1.xslt'
Adding stylesheet: 'presentation_toc.xslt'
Adding stylesheet: 'presentation.xslt'
Adding stylesheet: 'docbook_text1.xslt'
Adding document definition: 'dublin_core'
Adding document definition: 'docbook1'</div>

接下来,我们必须为软件条目清单创建一个文档定义。为了添加定义,我们使用命令行脚本 4ss deserialize docdef ,将序列化的文档定义的文件名作为唯一的参数来传递。例如:

内容

我们将从命令行用 4ss create document 给系统添加新内容。在下载示例中,有两个软件清单,它们是名为 software1.rdf 和 software2.rdf 的 XML 文件。为了把这些文件添加到系统中,我们执行 4ss create document ,为它指定要使用的文档定义、要添加的文件的名称以及要赋予系统内资源的一列别名。

首先,我们要为我们服务器上的软件资源库创建一个容器,把容器的许可权设置成允许“uo”组有写访问权限,并允许所有人进行读访问(因为我们想要从这个目录提供 Web 页面):

[molson@penny example]$ 4ss set acl --write=uo --world-read /softrepo</div>

然后,我们把我们的样本下载文件添加到资源库中。尽管 4SS 资源库可以以任意格式存储很多数据,但是它针对存储 XML 数据进行了高度优化。当我们把 .tar 文件添加到资源库中时,我们指定 --imt 选项来设置文件的因特网媒体类型(Internet Media Type,IMT)(在这里是 application/x-gzip )。这个 IMT 除了其它作用,还可以被 HTTP 服务器用于检索 Web 上的内容。请注意,IMT 有时也叫“MIME 类型”。请参阅 清单 3,以了解添加内容的命令。请注意,在一个更复杂的项目中,您可以考虑把二进制文件放在一个单独的容器中。
取内容

取内容就和添加内容一样简单。不过,我们首先一定要将样式表添加到资源库中。我们的示例文件包含了一个非常简单的样式表。为了添加它,您可以使用 4ss create document ,并为其取别名为 software.xslt 。例如:

BASE_XSLT 是一个特殊的文档定义,它告诉 4SS 将这个文档作为一个 XSLT 样式表来进行优化。

添加文档之后,您现在可以用您的 Web 浏览器连接到 4SS HTTP 服务器(支持普通的 Python 和 Apache 服务器)上,然后转到 http://localhost:8080/softrepo/pong.xml 页面。这将从资源库中取出 pong 软件描述文档。如果您正在使用一个支持 IMT text/xml 的浏览器(如 Internet Explorer 或 Mozilla),那么您就可以查看已添加到资源库中的 XML。要告诉 HTTP 侦听器(HTTP Listener)您想在页面被返回之前处理页面(通过在 XSLT 中运行),请指定 xslt URI 查询参数 http://localhost/softrepo/pong.xml?xslt=software.xslt 。

请注意,页面上下载包的链接也指向 localhost。这个链接还将检查 HTTP 侦听器,并取出我们为 pong-0.0.2.tgz 添加的资源。当它被返回到浏览器时,它会指定我们把资源添加到系统时所定义的 IMT。

生成索引页

为了生成索引页,我们将使用 4SS 的一些扩展函数,以使 XSLT 访问 RDF 模型。对于在 4SS 中生成一个索引页的问题,还有其它的解决方案。其中一种解决方案是用 Python 为 HTTP GET 消息写一个定制处理程序。这样做可能在请求 index.html 时需要查询 RDF 模型。另一个解决方案是,每当将一个新文档添加到系统中或者从系统中删除

您可能想查找下面的文章:

  • python解析基于xml格式的日志文件
  • Python实现简单的多任务mysql转xml的方法
  • python xml.etree.ElementTree遍历xml所有节点实例详解
  • python xml解析实例详解
  • Python实现将xml导入至excel
  • 解析Python编程中的包结构
  • 简单介绍使用Python解析并修改XML文档的方法
  • 详细解读Python中解析XML数据的方法
  • 解析Python编程中的包结构
  • 简单介绍使用Python解析并修改XML文档的方法

相关文章

  • Python的Django框架中TEMPLATES项的设置教程
  • python获取Linux下文件版本信息、公司名和产品名的方法
  • python解决Fedora解压zip时中文乱码的方法
  • Python实现对字符串的加密解密方法示例
  • python里大整数相乘相关技巧指南
  • python使用PyFetion来发送短信的例子
  • 利用Fn.py库在Python中进行函数式编程
  • python实现基于两张图片生成圆角图标效果的方法
  • python获取指定时间差的时间实例详解
  • 简述Python中的进程、线程、协程

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python实现清屏的方法
    • python搭建简易服务器分析与实现
    • python list排序的两种方法及实例讲解
    • python实现dnspod自动更新dns解析的方法
    • Python类属性的延迟计算
    • python友情链接检查方法
    • 简单介绍Python的轻便web框架Bottle
    • Python开发实例分享bt种子爬虫程序和种子解析
    • Python实现3行代码解简单的一元一次方程
    • 深入理解python中的浅拷贝和深拷贝

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有