您的位置:软件 > 开发者网络 > 微软开发专栏 > Visual Studio.net专栏 > XML > 正文
XPath在无线应用中的实现(下)
[文章信息]
作者:wayne
时间:2003-04-01
出处:yesky
责任编辑:方舟
[文章导读]
在这一部分里,我们打算讨论XPath的更进一步的特性--在一个XML文件上执行复杂检索的操作
advertisement
热点推荐
· 11.15软件精选 制作MSI文件
· 闪客五周年之闪客光荣榜
· 用Winamp“品尝”无限音乐
· 网络加、解密的技术应用
· 闪客五周年之闪客光荣榜:zoron
[正文]

上一页  1 2 3 4  下一页

  一个复杂的WSDL处理实例

  下面的WSDL处理方案使用了我们前面讨论过的所有的XPath概念。 这个方案的检索要求如下:

  寻找一个service元素,这个元素是definitions元素(根元素)的一个直接子元素,并且name属性与definitions元素的name属性匹配。 然后察看service元素,寻找一个port元素,这个port元素的binding属性与definitions元素的直接子元素binding的name属性匹配。

  这个WSDL过程可以用四步完成:

  1. 查找definitions元素的name属性值。 下面给出的XPath查询(从代码段中返回字符串BillingService)执行这步操作:

  string(//node()[1]/@name)

  2. 然后查找name属性匹配definitions元素的name的service元素。 下面的查询将返回所需要的service元素:

  ./node()[1]/service[@name=string(//node()[1]/@name)]

  3. 然后查找binding元素的name属性值:

  string(//node()[1]/binding/@name)

  4. 最后寻找需要的port元素:

  ./node()[1]/service[@name=string(//node()[1]/@name)]

  /port[@binding=string(//node()[1]/binding/@name)]

  这个实例说明XPath谓词可以包含简单逻辑条件,函数调用乃至完整的XPath查询。

  使用XPath处理WML

  WML是WAP Forum定义的一种XML语言。 WML为小型设备的显示提供了一种表现格式。 WML对于一个小型设备就好像HTML对于一台个人电脑一样。

  想象一下,一个WML文件是由一组卡片(card)组成,每个卡片由一个card元素封装。 代码段3是一个简单WML文件,只包含两个card元素。

  下面的XPath查询将返回代码段3中包含在第一个卡片之内(这卡片id是" first")的所有的p(paragraph)元素:

  ./node()/card[string(@id)="first"]/p

  下面这个查询返回第二个卡片中的第一段的文本内容:

  string(./node()/card[string(@id)="second"]/p[1]/text())

  实现XPath谓词与函数

  我们现在将看看如何在我们前面的那个简单的XPath引擎中插入谓词与函数的支持。

  四个伪代码类XPathExpression(代码段4)、XPathLocationStep(代码段5)、XPathResult(代码段6)和Predicate(代码段7)组成了支持谓词与函数的更新的版本。 我们在上一篇文章介绍的XPath引擎的基础上,增加了下列功能,使之更加强大:

  1. XPath可以返回各种类型的数据。 XPath可以返回节点、字符串、数字和布尔变量。 我们设计的XPath引擎只支持XML节点作为返回数据类型。 我们现在已经提供了一个名为XPathResult(见代码段6)的类来支持不同的数据类型。 基于我们的设计的实现需要扩展为每种数据类型分别地扩展XPathResult。

  2. 更新的设计现在包括一个支撑函数的结构。 一个函数调用可以发生在一个XPath查询开始时,也可以发生在任何XPath location step。 因此,XPathExpression类(代码段4)和XPathLocationStep类(代码段5)现在都添加了对函数调用的支持。

  3. 我们还提供了一个单独的类用于支持谓词(见代码段7)。 一个谓词可以只由一个逻辑条件组成也可以由一个完整的XPath查询组成。 因此,Predicate类构造器将判断谓词到底是一个完整的查询还是仅仅只是一个条件。 如果是一个完整的XPath查询,Predicate表达式将实例化一个新的XPathExpression对象,否则它将只是取得逻辑条件的值。

  小结

  在前面,我们讨论XPath中谓词与函数的语法和使用。 我们介绍WSDL和WML处理的实例并说明了如何构成更加复杂的XPath查询。 最后,我们增强了在第一篇文章中介绍的XPath引擎的功能。


上一页  1 2 3 4  下一页

·"WAP天极之IT新闻资讯,50万元等你拿"    ·天极WAP之游戏狂图,50万元等你下载


发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容阅读排行榜
  • 11.15软件精选 制作MSI文件
  • 闪客五周年之闪客光荣榜
  • 兰欣推出我国第一款网络游戏专用音箱
  • 玩家发现117亡灵种族Bug
  • [配置推荐]极品HIFI配置
  • 东瀛美少女COSPLAY(55)
  • 用Winamp“品尝”无限音乐
  • 迷你型PStwo全面透析专题
  • Advertisement