频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

XML 编程思想:以 XML 形式提供 WordNet

来源: 作者: 出处:巧巧读书 2007-10-09 进入讨论组
下一页 1 2 3 4 5 
QQRead:http://www.qqread.com/xml/k348733.html

本文示例源代码下载

  前几篇文章中,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编程开发手册XML详解开发应用专题,或进入讨论组讨论。
下一页 1 2 3 4 5 
收藏此文】【 】【打印】【关闭
较早的文章:XML规范和学习资源小结

较新的文章:XML Schema 简介
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章