前几篇文章中,Uche Ogbuji 讨论了 WordNet 2.0,普林斯顿大学的这个项目的目标是建立英文单词及其词法关系的数据库。他说明了如何从单词数据库中提取 XML 序列。本文继续探讨这个话题,通过示例代码说明如何通过 Web 协议来提供这些 WordNet/XML 文档,以及如何使用 XSLT 访问它们。
XML 是 Web 上的 SGML,各种 XML 项目基本上都以这种或那种方式与 Web 联系。不久前,本专栏发表的“查询 XML 格式的 WordNet”考察了 WordNet 2.0,以及如何与 XML 和 RDF 技术结合使用。如果没有读过这篇文章,建议您在继续阅读本文之前先看看。下面我们将编写以 XML 形式从 WrodNet 中抽取词法信息的基本代码。我将说明如何以 HTML 和 XML 的形式在 Web 上提供单词信息。
Web 服务器代码
本文中使用 Python 和 XSLT,当然也完全可以将这些概念应用到其他大多数编程语言。我将解释 Python 代码,因此只需要对这种语言有基本的了解即可。Python 支持多种编写 Web 应用程序的方式,从超简单的标准库 BaseHTTPServer 模块到 Zope 这种大型的第三方系统。这中间还有多种 Python Web 框架可供选择。一种非常流行的选择,也是我个人最喜欢的,是 CherryPy(请参阅 参考资料)。非常简单,而且非常适合 Python 语言的特性。 清单 1(wnserver.py)是使用 CherryPy 根据非常简单的 URL 方案提供单词信息的程序。
清单 1. 提供 WordNet 信息的 CherryPy 服务器代码(wnserver.py)
import cherrypy
from picket import Picket, PicketFilter
from wnxmllib import *
class root:
_cpFilterList = [ PicketFilter(defaultStylesheet="viewword.xslt") ]
class wordform_handler:
def __init__(self, applyxslt=False):
self.applyxslt = applyxslt
return
@cherrypy.expose
def default(self, word):
synsets = serialized_synsets_for_word(word)
result = ''.join(synsets) #Concatenate strings in result list
#Wrap up the XML fragments into a full document
wordxml = '<word-senses text="'+word+'">'+result+'</word-senses>'
if self.applyxslt:
picket = Picket()
picket.document = wordxml
return picket #apply the XSLT and return the result
return wordxml
class pointer_handler:
@cherrypy.expose
def default(self, pos, target):
synset = getSynset(pos, int(target))
synsetxml = serialize_synset(synset)
picket = Picket()
picket.document = synsetxml
return picket #apply the XSLT and return the result
cherrypy.root = root()
cherrypy.root.view = wordform_handler(applyxslt=True)
cherrypy.root.raw = wordform_handler()
cherrypy.root.pointer = pointer_handler()
#Disable debugging messages in Web responses
cherrypy.config.update({'logDebugInfoFilter.on': False})
cherrypy.server.start()
相关专题
- Java编程开发手册 (8321篇文章)
- XML详解 (1550篇文章)
- 开发应用 (624篇文章)
- XML基础教程 (852次浏览)
- XML简介 (714次浏览)
- 如何读取XML文件内容 (561次浏览)
- XML与面向Web的数据挖掘技术 (544次浏览)
- 了解 XML实现通用的数据访问 (482次浏览)
- XML入门精解之文件格式定义(DTD) (376次浏览)
- XML的简单读取与写入 (339次浏览)
- DOM的结构 (329次浏览)
- XML入门之11问答 (323次浏览)
- XMLHTTP资料 (289次浏览)



