投递文章 | 投稿指南 把 西安网吧在线 加入收藏夹 | 设为首页    西安网吧在线 网站联盟:
做最好的网吧门户站点!
搜索: 您的位置西安网吧在线网吧维护Web服务器 → 文章内容

使用 XForms 创建动态 Web 搜索

  作者:佚名   来源:IT专家网   更新时间:2007-10-26 3:54:55   【 】  评论:0
作者: Stony Yakovac,  出处:developerWorks 中国, 责任编辑: 叶江, 
2007-06-08 14:15
  XForms 与 XML 的紧密集成使查看基于 XML 的 API 产生的结果非常方便。同时,XForms 功能非常强大,使用它能创建根据变化条件做出相应操作的动态界面。本文通过实例探讨了如何应用这些功能。在实例中,我们创建了一个动态搜索引擎客户机,该客户机提供了不同的选项并能根据搜索引擎的选择显示不同的数据。

  清单 1. XML 数据结构,第 1 部分

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
   xmlns="http://www.w3.org/1999/xhtml"
   xmlns:y="urn:yahoo:srch"
   xmlns:xforms="http://www.w3.org/2002/xforms"
   xmlns:ev="http://www.w3.org/2001/xml-events"
>

  <head>
    <title>Using XForms To Build A Dynamic Search Engine</title>
    <xforms:model id="model_dynsrch">

      <xforms:instance id="box">
        <search xmlns="">
          <engine>Yahoo</engine>
          <appid>your_yahoo_app_id</appid>
          <q>horse</q>
          <site></site>
          <results></results>
          <submitTeoma/>
          <submitYahoo/>
        </search>
      </xforms:instance>

      <xforms:bind nodeset="instance('box')/site"
               relevant="instance('box')/engine = 'Yahoo'" />
      <xforms:bind nodeset="instance('box')/results"
               relevant="instance('box')/engine = 'Yahoo'" />
      <xforms:bind nodeset="instance('box')/submitYahoo"
               relevant="instance('box')/engine = 'Yahoo'" />
      <xforms:bind nodeset="instance('box')/submitTeoma"
               relevant="instance('box')/engine = 'Teoma'" />
     
      <xforms:instance id="yahoo">
        <ResultSet xmlns="urn:yahoo:srch"/>
      </xforms:instance>

      <xforms:instance id="teoma">
        <SEARCHRESULTS xmlns=""/>
      </xforms:instance>

  很显然,这个 XHTML 的独到之处应该就是在 HTML 标记中使用了 xmlns:y="urn:yahoo:srch"。这与 Yahoo 搜索的数据实例有关。Yahoo 使用 xmlns="urn:yahoo:srch" 返回搜索数据。因为 Yahoo 只识别这个特定的名称空间,所以我们在引用其数据时也必须使用该名称空间;否则,将显示为“不可见(invisible)”。后面我们将看到所有引用 Yahoo 搜索结果的 XForms 代码都使用了在头部指定的 y:。(记住,前缀是什么无关紧要;真正起作用的是名称空间。)此处的实例定义中,为搜索结果的 XML 数据节点了调用了名称空间。

  box 实例同时包含了基本信息(2)和站点特定的信息(appid、site 和 results)。我们将根据引擎元素的值控制站点特定信息的外观。比方说,绑定元素指定了只有当引擎为“Yahoo”时,site 和 results 元素才会“关联(relevant)”在一起。稍后,当我们创建真正的表单时,会发现尽管这些项都在页面上,但是只有关联项才会在页面上显示出来。使用 submitYahoo 和 submitTeoma 元素可以类似地控制 Submit 按钮的可见性。

  还有一个相当细微的地方需要注意,稍不注意便有可能影响到其后的设计。如 清单 1所示,三个实例的名称分别为 box、yahoo 和 teoma。请记住,这些名称都是特定于这些实例数据结构的。并不能把它们当做标识符随意使用。在本例后面的 switch/case/toggle 机制中重用 teoma 和 yahoo 这两个 ID 会是个不小的诱惑,但是由于它们的名称都引用了实例数据所以并不能正常运行。

……

上一页  [1] [2] 

Tags: 网吧 硬件 价格 最新  
责任编辑:Cn029.Com
  • 请文明参与讨论,禁止漫骂攻击。 用户名:新注册) 验证码: 验证码,看不清楚?请点击刷新验证码

    分 值:100分 85分 70分 55分 40分 25分 10分 0分

    评论总数:0条,平均得分:0[ 查看全部 ] 网友评论
    热门图文
    关于我们 - 联系我们 - 广告服务 - 法律声明 - RSS订阅 - 网站地图 - 返回顶部