hina coM 载 第28章XML驱动的报纸实例 作为一名资深的新闻工作者,作者热衷于使用XML驱动在线版新闻报纸、杂志和其他出 版物。XML用来完成这样的任务是完美无缺的,尽管对于格式化的文章来说,使用通常的 HIML也可做得不错,但与使用ⅩML相比就逊色多了。 在线报纸应用程序被设计为用来把普通的报纸封装起来并放到 Internet上,同时提供强大 的工具软件来提高其读者的操作体验。人们通常会到他们所喜爱的当地报纸的网站上,较早 地获取新闻,或仅仅是为了免付报费 另一方面,出版者通常希望他们的读者越多越好。今天,越来越多的中小型规模的报纸 上网,他们力图最终引入更好的Web网站特征,而不再像过去那样仅仅把他们的信息扔在网 站上面就不再管了。在一些大的新闻网站,像FoxNews在线(www.foxnews.com)和 Msnbc.com,新闻内容自动链接到相关条目或其他新闻事件上 然而,绝大多数时候,网上报纸只是其印刷版本经过文字转换处理后的再生品。这就是 为什么许多网上报纸质量改进缓慢的原因。出版商们已经不得不维持两种基本结构:印刷和 上网。随着出版商和编辑们开始重新考虑工作的方式和广告商们变得越来越乐于在 Internet上 花钱,记者们将会首先为web撰写稿件然后才是印刷的报纸 报纸的发行者会寻找最好的方式在网上传递他们的信息,而XML很明显是做这一工作的 较好选择。 面的实例研究将一步一步介绍创建一个XML驱动的在线报纸组件的过程。使用XML和 ASP,将创建在在线出版物中将要用到的基本特征,例如: 能访问新闻事件的小型标题列表栏 给出每个新闻事件的第一段内容的扩展表 新闻摘要或告示栏。 连接到相关新闻事件背景条目的词汇栏。 管理这些特征的机制。 这个应用程序的核心功能被封装在几个Ⅴ SCript程序中,名为 Headlines. asp的ASP网页包 含了这些程序。这个文件能够通过服务器端包含插入到任何需要调用这些程序的网页中,这 些程序具有简单的名字,并且使用的参数很少,在网站中很容易使用它们。 个程序库和名为 settings. xm的xML“大脑”文件协同工作, settings.xml控制着站点的 所有事情,从新闻的显示,直至站点的颜色模式 28.1报纸的剖析 作者虚拟的在线报纸名为 Times- Herald,位于一座名为 Southbeach的虚拟城市中。Time Herald的外观和它给人的感觉与使它能工作的代码相比并不很重要。现在选用了一个能够覆 盖报纸主要部分的水平导航条的简单布局,当然可以运用这一章中的技巧和例子,来构建与 此完全不同的报纸外观。实际上,甚至可以使用已经有的在线报纸中的组件进行构建,仅是
下载 第28章 XML驱动的报纸实例 作为一名资深的新闻工作者,作者热衷于使用 X M L驱动在线版新闻报纸、杂志和其他出 版物。X M L用来完成这样的任务是完美无缺的,尽管对于格式化的文章来说,使用通常的 H T M L也可做得不错,但与使用X M L相比就逊色多了。 在线报纸应用程序被设计为用来把普通的报纸封装起来并放到 I n t e r n e t上,同时提供强大 的工具软件来提高其读者的操作体验。人们通常会到他们所喜爱的当地报纸的网站上,较早 地获取新闻,或仅仅是为了免付报费。 另一方面,出版者通常希望他们的读者越多越好。今天,越来越多的中小型规模的报纸 上网,他们力图最终引入更好的 We b网站特征,而不再像过去那样仅仅把他们的信息扔在网 站上面就不再管了。在一些大的新闻网站,像 Fox News 在线 ( w w w.foxnews.com) 和 M S N B C . c o m,新闻内容自动链接到相关条目或其他新闻事件上。 然而,绝大多数时候,网上报纸只是其印刷版本经过文字转换处理后的再生品。这就是 为什么许多网上报纸质量改进缓慢的原因。出版商们已经不得不维持两种基本结构:印刷和 上网。随着出版商和编辑们开始重新考虑工作的方式和广告商们变得越来越乐于在 I n t e r n e t上 花钱,记者们将会首先为We b撰写稿件然后才是印刷的报纸。 报纸的发行者会寻找最好的方式在网上传递他们的信息,而 X M L很明显是做这一工作的 较好选择。 下面的实例研究将一步一步介绍创建一个 X M L驱动的在线报纸组件的过程。使用 X M L和 A S P,将创建在在线出版物中将要用到的基本特征,例如: • 能访问新闻事件的小型标题列表栏。 • 给出每个新闻事件的第一段内容的扩展表。 • 新闻摘要或告示栏。 • 连接到相关新闻事件背景条目的词汇栏。 • 管理这些特征的机制。 这个应用程序的核心功能被封装在几个 V B S c r i p t程序中,名为H e a d l i n e s . a s p的A S P网页包 含了这些程序。这个文件能够通过服务器端包含插入到任何需要调用这些程序的网页中,这 些程序具有简单的名字,并且使用的参数很少,在网站中很容易使用它们。 这个程序库和名为 s e t t i n g s . x m l的X M L“大脑”文件协同工作, s e t t i n g s . x m l控制着站点的 所有事情,从新闻的显示,直至站点的颜色模式。 28.1 报纸的剖析 作者虚拟的在线报纸名为 Ti m e s - H e r a l d,位于一座名为S o u t h B e a c h的虚拟城市中。 Ti m e - H e r a l d的外观和它给人的感觉与使它能工作的代码相比并不很重要。现在选用了一个能够覆 盖报纸主要部分的水平导航条的简单布局,当然可以运用这一章中的技巧和例子,来构建与 此完全不同的报纸外观。实际上,甚至可以使用已经有的在线报纸中的组件进行构建,仅是
830A5p高程 Chinapub.com 下载 需要驻留于使用了IS40或其更高级版本的 Microsoft windows nt server4.0或 Windows2000 中。本章的实例经微小的修改,插到代码之中即可 这里所关心的不是指导读者如何构建在例子中所看到的完全相同的报纸,而是 指导读者如何通过为插入到自己的Web站点而创建的有用的组件来影响XML。也必 须注意到,本章在使用“组件”这一术语时,并不是指经过编译过的COM组件, 是指整套工具的若干部分或若干段。 这里的每一段代码都可以被很好地使用,除非你想使你的网站的导航不同于本书的应用 程序示例。改变代码并不太困难,只要能娴熟地使用HTML表或动态HTML就行了。关于导航 需要记住的不在于其外表看起来如何,而在于它如何检索XML数据 在本示例方案中,新闻摘要被放在右下方,但随时会被被调用的新闻所取代。当前标题 栏放置在左边竖栏里,以便能较快地访问其他的新闻。这样做既简便,效率也高,界面如图 28-1所示 FOx New MSNBC #DNN ire baugh(1AM-2PM) aT HEADLINES Friday Donation aen te legal News In Brief Foster accident Police nab largest dimg bust eyel M1n我时 hen his officers netted a bust worth over million, officials announced Newport polie sports Denat on auen te losal officials announeed Bouscat cedent olating the Inesday night's Administrative Liaison an是 dance to mmittee meeting drive sabur ay at the 图28-1在线报纸的首页界面 这个在线报纸应用程序的每一个操作都围绕着XML文件 settings.xml进行, settings. xm是 web站点的蓝图,它包含网站的颜色模式、导航条、新闻事件的标题和背景条目词汇等信息。 报纸的每一部分由一个ASP页面代替,此ASP页面通过一组定制的程序提取必要的XML 数据。这些程序同样也被集中放入一个库文件 headlines. asp中,需要访问这些程序的页面应当 包含此库文件 下面解释一下此示例应用程序的核心组件,并看一下这些组件的功能
需要驻留于使用了IIS 4.0或其更高级版本的Microsoft Windows NT Server 4.0或Windows 2000 中。本章的实例经微小的修改,插到代码之中即可。 这里所关心的不是指导读者如何构建在例子中所看到的完全相同的报纸,而是 指导读者如何通过为插入到自己的 We b站点而创建的有用的组件来影响 X M L。也必 须注意到,本章在使用“组件”这一术语时,并不是指经过编译过的 C O M组件,而 是指整套工具的若干部分或若干段。 这里的每一段代码都可以被很好地使用,除非你想使你的网站的导航不同于本书的应用 程序示例。改变代码并不太困难,只要能娴熟地使用 H T M L表或动态H T M L就行了。关于导航 需要记住的不在于其外表看起来如何,而在于它如何检索 X M L数据。 在本示例方案中,新闻摘要被放在右下方,但随时会被被调用的新闻所取代。当前标题 栏放置在左边竖栏里,以便能较快地访问其他的新闻。这样做既简便,效率也高,界面如图 2 8 - 1所示。 图28-1 在线报纸的首页界面 这个在线报纸应用程序的每一个操作都围绕着 X M L文件s e t t i n g s . x m l进行,s e t t i n g s . x m l是 We b站点的蓝图,它包含网站的颜色模式、导航条、新闻事件的标题和背景条目词汇等信息。 报纸的每一部分由一个 A S P页面代替,此 A S P页面通过一组定制的程序提取必要的 X M L 数据。这些程序同样也被集中放入一个库文件 h e a d l i n e s . a s p中,需要访问这些程序的页面应当 包含此库文件。 下面解释一下此示例应用程序的核心组件,并看一下这些组件的功能: 830计计ASP 3 高级编程 下载
Sinapub.com 第8章xD动的报纸实831 载 settings. xml:包含网站的参数信息。在本章中称之为网站的“大脑”。 headlines.asp:作为一个服务器端的包含文件使用。含有四个基本程序,都可以利 settings. xm中的数据来为网站生成内容 settings_ glossary.asp:允许报纸编辑增添或删除包含在 settings. xm中的背景词汇条目 settings stories. asp:允许报纸编辑选择在网站上发表哪些新闻事件 storydisplay. asp:一个强大的ASP模板,可以产生调用包含在 headlines. asp中的程序来显 示一条新闻事件,可用来检验 settings.xm中背景词汇的任何匹配条目。 SECTION]asp:一个可定制的网页,网页能调用 headlines.asp中的程序显示标题和使用 Settings.xml中的数据生成广告。网页的名称可指定 navbar. asp:一个基于 settings.xml中的数据动态产生的导航条。可在任意插入的地方生 成一个水平的固定导航条。 · global. asp:用XML设定的几个应用程序变量,包含网站相关的信息。 记住,这一章中的所有代码都可从 Wrox Web网站下载 下面是在线报纸应用程序的三个基本方面: ·编写。 ·编辑 阅读。 这一应用程序要求记者用简单的ⅹML模块来把新闻事件存档,这些新闻事件经编辑的加 工,编辑或网站管理员选择在web网站上保留哪些新闻事件。最后,读者可以阅读新闻。在 每条新闻事件的旁边给出与新闻事件相关信息的简单摘要。 在深入研究主要代码之前,让我们先简要观察一下在线报纸是如何工作的。 28.1.1作者写稿 由于在线报纸的每一步操作都与新闻事件有关,就让我们从这些新闻事件开始。报纸记 者在他们上交稿件时必须做少量格式编排工作。甚至在70年代末80年代初的老式专用计算机 系统中,记者也要考虑如何设置标题行的字体和尺寸,以及一些新闻事件需要的其他特殊格 式,如斜体或下划线 些老式系统通常使用一些与XML相比比较松散的格式化符号。那些格式化符号并不是 种定制的有自己的一套语法结构的语言。在80年代后期90年代初,当报纸开始使用台式印 刷系统后,在某种意义上,对记者编排格式的要求降低了。这是因为编辑可以通过点击 来轻松地重新安排整个新闻事件的格式 使用XML,新闻事件必须遵照一种相当简单的格式。实质上,它们仅告诉编辑新闻事件 的哪一部分是标题、副标题(作者的介绍)、写作日期、内容主体、主要段落和相应图表的名 字。对本实例应用程序来讲,一条典型的新闻事件是下面这种形式的: Headline for the story By John Doe
• settings.xml:包含网站的参数信息。在本章中称之为网站的“大脑”。 • h e a d l i n e s . a s p:作为一个服务器端的包含文件使用。含有四个基本程序,都可以利用 s e t t i n g s . x m l中的数据来为网站生成内容。 • settings_glossary. a s p:允许报纸编辑增添或删除包含在 s e t t i n g s . x m l中的背景词汇条目。 • settings_stories.asp:允许报纸编辑选择在网站上发表哪些新闻事件。 • s t o r y d i s p l a y. a s p:一个强大的A S P模板,可以产生调用包含在 h e a d l i n e s . a s p中的程序来显 示一条新闻事件,可用来检验 s e t t i n g s . x m l中背景词汇的任何匹配条目。 • [ S E C T I O N ] . a s p:一个可定制的网页,网页能调用 h e a d l i n e s . a s p中的程序显示标题和使用 S e t t i n g s . x m l中的数据生成广告。网页的名称可指定。 • n a v b a r. a s p:一个基于s e t t i n g s . x m l中的数据动态产生的导航条。可在任意插入的地方生 成一个水平的固定导航条。 • global.asp:用X M L设定的几个应用程序变量,包含网站相关的信息。 记住,这一章中的所有代码都可从 Wrox We b网站下载。 下面是在线报纸应用程序的三个基本方面: • 编写。 • 编辑。 • 阅读。 这一应用程序要求记者用简单的 X M L模块来把新闻事件存档,这些新闻事件经编辑的加 工,编辑或网站管理员选择在 We b网站上保留哪些新闻事件。最后,读者可以阅读新闻。在 每条新闻事件的旁边给出与新闻事件相关信息的简单摘要。 在深入研究主要代码之前,让我们先简要观察一下在线报纸是如何工作的。 28.1.1 作者写稿 由于在线报纸的每一步操作都与新闻事件有关,就让我们从这些新闻事件开始。报纸记 者在他们上交稿件时必须做少量格式编排工作。甚至在 7 0年代末8 0年代初的老式专用计算机 系统中,记者也要考虑如何设置标题行的字体和尺寸,以及一些新闻事件需要的其他特殊格 式,如斜体或下划线。 一些老式系统通常使用一些与 X M L相比比较松散的格式化符号。那些格式化符号并不是 一种定制的有自己的一套语法结构的语言。在 8 0年代后期9 0年代初,当报纸开始使用台式印 刷系统后,在某种意义上,对记者编排格式的要求降低了。这是因为编辑可以通过点击鼠标 来轻松地重新安排整个新闻事件的格式。 使用X M L,新闻事件必须遵照一种相当简单的格式。实质上,它们仅告诉编辑新闻事件 的哪一部分是标题、副标题(作者的介绍)、写作日期、内容主体、主要段落和相应图表的名 字。对本实例应用程序来讲,一条典型的新闻事件是下面这种形式的: 第28章 XML 驱动的报纸实例计计831 下载
832A5p3高程 Chinapub coM 下载 october 21, 1999 This is the lead paragraph of our news story P ALIGN=" justify”> Another paragraph goes here- And yet another paragraph- cartset> somepicture jpg Caption for the art. /art> 本例决定放弃文档类型定义( Document Type Definition,DTD)或XML新闻事件格式的模 式,而只依赖于良好的版式。强迫XML处理器根据DTD使新闻事件有效,并不能真正加强这 应用程序。记住,ⅹML是在服务器端处理而不是在浏览器上处理。例如,需要将新闻事件 的主体文本从XML文档中检索出来,放入一个变量中,然后使用 Response. Write发送至浏览器 当有错误,尤其是与性能有关的错误时,并不需要DTD来告诉我们。相反,是让ASP检测文 档中的一般错误,然后向读者发送产生问题的相关消息。 元素是任选的,可以为一条新闻事件选多于一幅的图片。这个应用程序可以在每 条新闻事件下面显示多幅图片。每一幅图都被列入表中,以便放置标题。在HTML中,如果 表是向右对齐或向左对齐的,则文本被放置在元素之内、元素之外,文本 将环绕着表。因此,要生成一个两行单列的表,上面的单元放置图片,下面的单元放置标题 文本,可以让标题文本置于图片之下,并允许网页文本围绕其流动 这个应用程序没有为记者提供一个把新闻事件上传至服务器的方式。这里假设 记者与服务器在同一网络上工作,因此,能够将新闻事件放在合适的文件夹中。为 远程交付新闻事件文件,若干文件上传解决方案中的一种将会被使用,但因为这个 实例研究主要是为了学习XML,故我们在这里就不再涉及关于文件上传的更多内容。 28.1.2编辑修改 在记者交上他们的稿件后,编辑或站点管理员用 Editorial Content管理工具来发布他想显 示在web站点上的新闻事件。可在Web站点的根目录的 admin文件夹中找到这个工具,可以从 切换板页面( switchboard page)进行访问,这个页面也在 admin文件夹中 在一个办公网络环境中让网管员负责 admin目录的安全,可能是避免这些工具被
本例决定放弃文档类型定义( Document Type Definition,D T D )或X M L新闻事件格式的模 式,而只依赖于良好的版式。强迫 X M L处理器根据D T D使新闻事件有效,并不能真正加强这 一应用程序。记住, X M L是在服务器端处理而不是在浏览器上处理。例如,需要将新闻事件 的主体文本从X M L文档中检索出来,放入一个变量中,然后使用R e s p o n s e . Wr i t e发送至浏览器。 当有错误,尤其是与性能有关的错误时,并不需要 D T D来告诉我们。相反,是让 A S P检测文 档中的一般错误,然后向读者发送产生问题的相关消息。 元素是任选的,可以为一条新闻事件选多于一幅的图片。这个应用程序可以在每 条新闻事件下面显示多幅图片。每一幅图都被列入表中,以便放置标题。在 H T M L中,如果 表是向右对齐或向左对齐的,则文本被放置在 元素之内、元素之外,文本 将环绕着表。因此,要生成一个两行单列的表,上面的单元放置图片,下面的单元放置标题 文本,可以让标题文本置于图片之下,并允许网页文本围绕其流动。 这个应用程序没有为记者提供一个把新闻事件上传至服务器的方式。这里假设 记者与服务器在同一网络上工作,因此,能够将新闻事件放在合适的文件夹中。为 远程交付新闻事件文件,若干文件上传解决方案中的一种将会被使用,但因为这个 实例研究主要是为了学习X M L,故我们在这里就不再涉及关于文件上传的更多内容。 28.1.2 编辑修改 在记者交上他们的稿件后,编辑或站点管理员用 Editorial Content管理工具来发布他想显 示在We b站点上的新闻事件。可在 We b站点的根目录的 a d m i n文件夹中找到这个工具,可以从 切换板页面(switchboard page)进行访问,这个页面也在 a d m i n文件夹中。 在一个办公网络环境中让网管员负责 a d m i n目录的安全,可能是避免这些工具被 832计计ASP 3 高级编程 下载
a 第8章xAD动的报纸实的833 载 偷窥的最好的办法了,很显然,应该只允许编辑和站点管理员访问它们。 编辑可以自由选择出现在网络报纸上的新闻事件,而且这些选择可随时更改。在 Editorial Content工具中,每一条新闻事件都显示有一个伴随的复选框,并按内容分组(即新闻、运动 社会等) 当编辑首次打开此工具时,所有的新闻事件都被自动地选中。编辑挑选那些他想要的。 用这个工具,编辑可以高效地提取一些新闻事件,而将其他的丢弃。此工具的界面如图28-2 Links [ For No 14MSNBC WONN interact AuhLmbsg1AM-2PM) aToeret Editorial Content stones you wish News stories ami will speak at t我 publican Ladia mber luncheon where he is expected to Publishl Return to Admin Start 1 Two Cedartown wamen lost their lives in a four car pileup yesterday on Highway 41 when a F November luncheon where he h.p for re.alec。n 图28-2 Editorial Content工具的界面 在284节,你将看到怎样生成 settings_ stories. asp页面。 告诉新闻事件的名称 这个应用程序的新闻事件必须遵循严格的命名规定,使文件先依据日期排序,再按照其 重要性排序。 News 19991021001 xml- Filed on October. 21. 1999 News 19990412011xml- Filed on April, 12, 1999 在xml扩展名前的最后三个数字代表等级或重要性,一条新闻事件在一天的内容中越重要, 这三个数字的值越大。用三个数字,意味着编辑每天可以有1000条新闻事件。我们知道一天
偷窥的最好的办法了,很显然,应该只允许编辑和站点管理员访问它们。 编辑可以自由选择出现在网络报纸上的新闻事件,而且这些选择可随时更改。在 E d i t o r i a l C o n t e n t工具中,每一条新闻事件都显示有一个伴随的复选框,并按内容分组(即新闻、运动、 社会等)。 当编辑首次打开此工具时,所有的新闻事件都被自动地选中。编辑挑选那些他想要的。 用这个工具,编辑可以高效地提取一些新闻事件,而将其他的丢弃。此工具的界面如图 2 8 - 2 所示。 图28-2 Editorial Content工具的界面 在2 8 . 4节,你将看到怎样生成s e t t i n g s _ s t o r i e s . a s p页面。 1. 告诉新闻事件的名称 这个应用程序的新闻事件必须遵循严格的命名规定,使文件先依据日期排序,再按照其 重要性排序。 News 19991021001.xml - Filed on October, 21, 1999 News 19990412011.xml - Filed on April, 12, 1999 在x m l扩展名前的最后三个数字代表等级或重要性,一条新闻事件在一天的内容中越重要, 这三个数字的值越大。用三个数字,意味着编辑每天可以有 1 0 0 0条新闻事件。我们知道一天 第28章 XML 驱动的报纸实例计计833 下载
834A5p3高程 Chinaopub.com 下载 编辑1000条新闻事件很难办到,所以按重要性排序有助于编辑的工作 这个程序应用采用倒序方式从每个目录中显示新闻事件,所以最近最重要的新闻案件在 上面显示。因为这个原因,编辑应该明白不管他的头条新闻事件是什么,最上面的一条都是 这天的新闻事件中最重要的一条。 如果有一个记者编写了有关当地警察局长受贿的热点新闻,他知道这条新闻会成为明天 的头条,所以将其命名为news19991104800xml。通过设重要等级为800,完全有可能使它成 为明天的头条。不重要的新闻事件可能被编为001、002等。如果一个杀手在当晚的市议会上 刺杀市长和两名议员,编辑可能给这条新闻编号为news19991104850xm。但是为什么不再 给它一个更高的等级,比如是999?也许有人会刺杀总统,应留有余地 2. Glossary Manager工具 我们的报纸网站有一个小词典,它包含着重要人物、地点和组织等的简要介绍,这些或 许在新闻事件中有用。 Glossary Manager工具允许编辑生成、修改和删除词典中的词汇 Glossary Manager界面如图28-3所示。 delete glossary terms. You may nc Edit or Delete Term Create New Term 图28-3 Glossary Manager界面 这一特性对为新闻事件提供背景特别有用。例如,市长的名字可以加到词典中,注释他 们何时被选举、属于什么党派等等。 在284节,你将看到怎么生成 lettings_ glossary.asp页面。 每当新闻事件显示给读者时,都要从词汇中检索中相应的条目,然后把结果显示在页面 右边的栏中,词汇条目也可以包含到其他新闻事件的HTML超级链接,这使得它们很有用 28.1.3读者阅读 网上报纸的成功与否最重要的是看读者是否喜欢它。网站必须容易使用而且功能强大
编辑1 0 0 0条新闻事件很难办到,所以按重要性排序有助于编辑的工作。 这个程序应用采用倒序方式从每个目录中显示新闻事件,所以最近最重要的新闻案件在 上面显示。因为这个原因,编辑应该明白不管他的头条新闻事件是什么,最上面的一条都是 这天的新闻事件中最重要的一条。 如果有一个记者编写了有关当地警察局长受贿的热点新闻,他知道这条新闻会成为明天 的头条,所以将其命名为 n e w s 1 9 9 9 11 0 4 8 0 0 . x m l。通过设重要等级为 8 0 0,完全有可能使它成 为明天的头条。不重要的新闻事件可能被编为 0 0 1、0 0 2等。如果一个杀手在当晚的市议会上 刺杀市长和两名议员,编辑可能给这条新闻编号为 news 199911 0 4 8 5 0 . x m l。但是为什么不再 给它一个更高的等级,比如是 9 9 9?也许有人会刺杀总统,应留有余地。 2. Glossary Manager工具 我们的报纸网站有一个小词典,它包含着重要人物、地点和组织等的简要介绍,这些或 许在新闻事件中有用。 Glossary Manager 工具允许编辑生成、修改和删除词典中的词汇。 Glossary Manager界面如图2 8 - 3所示。 图28-3 Glossary Manager界面 这一特性对为新闻事件提供背景特别有用。例如,市长的名字可以加到词典中,注释他 们何时被选举、属于什么党派等等。 在2 8 . 4节,你将看到怎么生成s e t t i n g s _ g l o s s a r y. a s p页面。 每当新闻事件显示给读者时,都要从词汇中检索中相应的条目,然后把结果显示在页面 右边的栏中,词汇条目也可以包含到其他新闻事件的 H T M L超级链接,这使得它们很有用。 28.1.3 读者阅读 网上报纸的成功与否最重要的是看读者是否喜欢它。网站必须容易使用而且功能强大。 834计计ASP 3 高级编程 下载
chinapub coM 2s xM BeMrtR 835 载 在网站上的任何地方所有的标题都可用,这使得事情更简单。读者不需要去找内容表,它总 在页面上 点击标题,在一个看上去和感觉起来与网站相似的模板上面显示相应的新闻事件,使读 者在读一条新闻事件时不会有到了另一个地方的感觉。在每条新闻事件下面放置一个 Retum 链接,不论怎样,都可以很简单地返回到前一页。 在选择新闻事件时,右边栏中的摘要被与此新闻事件相关的背景信息所替代。读者将注 意到,每一条相关的词汇条目在第一次被文章引用时都有下划线。当光标划过那条内容时, 右边相对应的定义将变成黄色 此在线报纸应用程序的重大突破是可以被精心定制,给读者带来的信息远多于新闻事件 或摘要。此报纸的组件可容易地转换以服务于特殊的需要 28.14结构要求 网站的结构越简单越好。应该为每一类新闻准备一个文件夹。在此应用程序中,使用了 news、 sports、 society和一个称为 briefs的特殊文件夹,这些文 60nlinePublicati 件夹用来存储属于这些类别的xml新闻事件文件。 口 ScriptLibrary 你也会需要一个“头版页面”,它可能是在根目录里 的 default. asp,列出了所有标题。你或许想为每个类别安 的 settings glossary,as 排一个主页,以显示其条目。在图28-4所示的屏幕图上显 小的是news.asp、 sports.asp和 society. aspo 由回 mages 当然,可以使用完全不同的模式命名内容文件夹。毕竟 这个网站的一部分是可定制的。假定想为程序员创立一个网站, 而且有一个部分针对某种程序语言,或一个运动网站有一个专 的news991021003.xm 门针对各项主要运动的部分。只要创立文件夹来迎合网站所要 news199102202.xm news19991023001xm 求的内容就可以了。 本例选择把 settings.xml放入 admin文件夹,而把 c lei globalasa headlines. asp放入 ScriptLibrary文件夹中,但读者可以不必这样。 把管理型文件放入 admin文件夹中是个好主意。同样的 lb如 news,asp headlines.asp放入_ ScriptLibrary文件夹,因为它是个库文件 下面创建的工具可很容易地改变这些文件的存放位置。 所以,现在我们已经明白了这个应用程序背后的逻辑,下 面看一下它如何工作。 图28-4网站的结构 282网站的大脑: settings.xml 首先,在 admin文件夹中创建一个名为 settings.xm的XML文件,其中的代码如下 cifications
在网站上的任何地方所有的标题都可用,这使得事情更简单。读者不需要去找内容表,它总 在页面上。 点击标题,在一个看上去和感觉起来与网站相似的模板上面显示相应的新闻事件,使读 者在读一条新闻事件时不会有到了另一个地方的感觉。在每条新闻事件下面放置一个R e t u r n 链接,不论怎样,都可以很简单地返回到前一页。 在选择新闻事件时,右边栏中的摘要被与此新闻事件相关的背景信息所替代。读者将注 意到,每一条相关的词汇条目在第一次被文章引用时都有下划线。当光标划过那条内容时, 右边相对应的定义将变成黄色。 此在线报纸应用程序的重大突破是可以被精心定制,给读者带来的信息远多于新闻事件 或摘要。此报纸的组件可容易地转换以服务于特殊的需要。 28.1.4 结构要求 网站的结构越简单越好。应该为每一类新闻准备一个文件夹。在此应用程序中,使用了 n e w s、s p o r t s、s o c i e t y和一个称为b r i e f s的特殊文件夹,这些文 件夹用来存储属于这些类别的 . x m l新闻事件文件。 你也会需要一个“头版页面”,它可能是在根目录里 的d e f a u l t . a s p,列出了所有标题。你或许想为每个类别安 排一个主页,以显示其条目。在图 2 8 - 4所示的屏幕图上显 示的是n e w s . a s p、s p o r t s . a s p和s o c i e t y. a s p。 当然,可以使用完全不同的模式命名内容文件夹。毕竟, 这个网站的一部分是可定制的。假定想为程序员创立一个网站, 而且有一个部分针对某种程序语言,或一个运动网站有一个专 门针对各项主要运动的部分。只要创立文件夹来迎合网站所要 求的内容就可以了。 本例选择把 s e t t i n g s . x m l 放入 a d m i n 文件夹,而把 h e a d l i n e s . a s p放入_ S c r i p t L i b r a r y文件夹中,但读者可以不必这样。 把管理型文件放入 a d m i n文件夹中是个好主意。同样的, h e a d l i n e s. a s p放入_ S c r i p t L i b r a r y文件夹,因为它是个库文件。 下面创建的工具可很容易地改变这些文件的存放位置。 所以,现在我们已经明白了这个应用程序背后的逻辑,下 面看一下它如何工作。 28.2 网站的大脑:s e t t i n g s . x m l 首先,在a d m i n文件夹中创建一个名为s e t t i n g s . x m l的X M L文件,其中的代码如下: 第28章 XML 驱动的报纸实例计计835 下载 图28-4 网站的结构
836A5p高程 Chinapub.com 下载 /colors> xm文件的每一个主要元素将管理这个网站相关的不同方面的信息。 Specifications colors、 包含了基于web的管理工具,就是前面看到的 Editorial content和 Glossary Managers,这些元素 navigation是相对静态的, Content和 glossary每天都在变换。由于这个原因,已经为 2821元素 把下面程序加入元素,为自己的web站点定制信息。 specifications> Site Title>Times-Herald http://onlinenewspaper.com images/header_color. gifarial, sans-serif 注意到在这里可以设定一个名叫 domain namel的参数,但它仅作为站点的一个引用变量使 用。实际上,在ASP页面内无法改变Web网站的域名。这些参数与colo元素的信息一起通过 globalasa存储在应用程序变量中,稍后将进一步介绍。 28.2.2元素 现在把下面程序加入元素中,在整个网站中都要引用它: #0043B0 #002277 tFFFFoO #FFFFFF #7D78AF #222222元素 网站的导航信息包含有在元素中,用于填充 navbar. asp页面,它可以插入到 网站的每一页。对每一个导航项,保留三条信息:name、url和 description。把以下的XML加 入到元素中。然后,根据需要自由定制参数
. x m l文件的每一个主要元素将管理这个网站相关的不同方面的信息。Specifications colors、 n a v i g a t i o n是相对静态的,C o n t e n t和g l o s s a r y每天都在变换。由于这个原因,已经为这些元素 包含了基于We b的管理工具,就是前面看到的 Editorial Content和Glossary Managers。 28.2.1 元素 把下面程序加入元素,为自己的We b站点定制信息。 注意到在这里可以设定一个名叫 d o m a i n _ n a m e的参数,但它仅作为站点的一个引用变量使 用。实际上,在 A S P页面内无法改变 We b网站的域名。这些参数与 c o l o r元素的信息一起通过 g l o b a l . a s a存储在应用程序变量中,稍后将进一步介绍。 28.2.2 元素 现在把下面程序加入元素中,在整个网站中都要引用它: 因为这些值存储在应用程序变量中,只需把它们用隐式的写法插入到网站中,记住一个 隐式的写法就是R e s p o n s e对象的Wr i t e方法的简化语法。 ”> 具有一套颜色模式,可以使网站看起来更专业化,再加上为它定制的特别程序,使网站 更加健全。 28.2.3 元素 网站的导航信息包含有在 元素中,用于填充 n a v b a r. a s p页面,它可以插入到 网站的每一页。对每一个导航项,保留三条信息: n a m e、u r l和d e s c r i p t i o n。把以下的X M L加 入到元素中。然后,根据需要自由定制参数。 836计计ASP 3 高级编程 下载
chinapub com 3s xM BCMRrSM 837 载 Front curl>default Front page- a mixture of all the news. /section News news. asp rtssports. asp description>Sports page - sports news from around town. name>Society society. asp Society page -gossip and rumors run wild. Information info. asp Information- who's responsible for the site. 2824淮备 global. asa global. asa和 nav bar. asp在这里同样起作用,所以让我们先来看一下这两个文件。保留对 settings. xml做的变动,打开 global asa,在 Application Onstart事件处理程序中加入以下代码, 并注意注释: Sub Application._OnStart Dim strSourceFile, objRootcolors, objRootInfo, objRootNav, objNavNames Dim objNavURLS, objXML Sets the path to settings. xml rSourceFile Server MapPath("admin)&'\settings. xml create an instance of the XML processor et objXML = Server CreateObject('Microsoft. FreeThreadedXMLDOM" Loads settings. xml into memory Create a node for each main element of the xM file set obj Rootcolors= objXMLdocumentElement selectsingleNode(colors.) Set objRootInfo objXML documentElement selectsingleNode('specifications") Set objRootNav objXML documentElement selectsingleNode(navigation") Gets color scheme for the site Sets an Application object with settings Set Application("objXML')= objXML pplication("Color_Primary )=objRootcolors childNodes item(o).text Application (Color_Secondary")mobjRootcolorschildNodesitem(1).text plication ('Color_Highlight)-objRootcolors, childNodesitem(2).text
28.2.4 准备g l o b a l . a s a g l o b a l . a s a和n a v b a r. a s p在这里同样起作用,所以让我们先来看一下这两个文件。保留对 s e t t i n g s . x m l做的变动,打开g l o b a l . a s a,在A p p l i c a t i o n _ O n s t a r t事件处理程序中加入以下代码, 并注意注释: 第28章 XML 驱动的报纸实例计计837 下载
8385p高编程 Chinapub.com 下载 round)=objRootcolors ch Text)=objR。。tco1ors,chi1 xt )aob]Rootcolors childN ts technical info for the site Application (Site_title)-objRootInfo childNodesitem(0).text Application ("Domain Name)=objRootInfo childNodesitem(1).text Application (Header_Image.)=objRootInfo childNodesitem(2).text Application (Pref_Font")mobjRootInfo childNodes item(3).text Application. Unlock Creates nodes for the navigation parameters Set objNavNames= objRootNav getElementsBy TagName(name") Set objNavURLs oh ux1·) Puts the and url values into a: 2-D array Dim Navigation(10, 2) For navitem=0 To objNavNames length -1 Navigation(navitem,0)= objNavNames item(navitem)text Navigation(navitem, 1)- objNavuRls item Application. Lock oplication(Navigation) pplication, Unlock End sub 尽管这儿有许多变量,但它仅做下面两件基本的事情: 用 selectsinglenode方法来定位指定的节点并从它的子节点中得到值。 生成应用级变量存储导航栏数据、颜色模式和其他技术信息。 注意这里使用XML处理器的自由线程模型。 Set objXML server CreateObject( "Microsoft. Free ThreadedXMLDOM") 一个ⅹML文档可以用处理器的自由线程模型或租赁线程模型( Rental threading model) 来分析。这两种方式基本相同,但用租赁线程模型得到的性能稍好一些。然而,为了将文档 元素储存到应用程序变量中,必须使用自由线程模型,以便能被多用户实时访问 记住,还需要在 globa.asa的顶部引用适当的类型库 或: 2825插入导航 旦 Application(“ Navigation”)数组中有了导航数据, navbar. asp就可生成导航栏 在根目录中生成一个叫 navbar. asp的新页面,加入以下代码 Navigation Application(Navigation
尽管这儿有许多变量,但它仅做下面两件基本的事情: • 用s e l e c t S i n g l e N o d e方法来定位指定的节点并从它的子节点中得到值。 • 生成应用级变量存储导航栏数据、颜色模式和其他技术信息。 注意这里使用X M L处理器的自由线程模型。 Set objXML = server. C r e a t e O b j e c t (“M i c r o s o f t . F r e e T h r e a d e d X M L D O M”) 一个X M L文档可以用处理器的自由线程模型或租赁线程模型( Rental threading model) 来分析。这两种方式基本相同,但用租赁线程模型得到的性能稍好一些。然而,为了将文档 元素储存到应用程序变量中,必须使用自由线程模型,以便能被多用户实时访问。 记住,还需要在g l o b a l . a s a的顶部引用适当的类型库: 或: 28.2.5 插入导航 一旦A p p l i c a t i o n(“N a v i g a t i o n”)数组中有了导航数据,n a v b a r. a s p就可生成导航栏。 在根目录中生成一个叫n a v b a r. a s p的新页面,加入以下代码: 838计计ASP 3 高级编程 下载