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,新闻事件必须遵照一种相当简单的格式。实质上,它们仅告诉编辑新闻事件 的哪一部分是标题、副标题(作者的介绍)、写作日期、内容主体、主要段落和相应图表的名 字。对本实例应用程序来讲,一条典型的新闻事件是下面这种形式的: <? xml version=1.0·? headline>Headline for the story</headline> <byline>By John Doe</byline>
• 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 下载 <dateline>october 21, 1999</dateline> <body> <blurb> <P ALIGN='justify'> This is the lead paragraph of our news story P ALIGN=" justify”> Another paragraph goes here- </P P ALIGN="justi <P ALIGN="justify"> And yet another paragraph- </P> </body> cartset> <art> <source>somepicture jpg</source> <caption>Caption for the art. </caption> /art> </story> 本例决定放弃文档类型定义( Document Type Definition,DTD)或XML新闻事件格式的模 式,而只依赖于良好的版式。强迫XML处理器根据DTD使新闻事件有效,并不能真正加强这 应用程序。记住,ⅹML是在服务器端处理而不是在浏览器上处理。例如,需要将新闻事件 的主体文本从XML文档中检索出来,放入一个变量中,然后使用 Response. Write发送至浏览器 当有错误,尤其是与性能有关的错误时,并不需要DTD来告诉我们。相反,是让ASP检测文 档中的一般错误,然后向读者发送产生问题的相关消息。 < artset>元素是任选的,可以为一条新闻事件选多于一幅的图片。这个应用程序可以在每 条新闻事件下面显示多幅图片。每一幅图都被列入表中,以便放置标题。在HTML中,如果 表是向右对齐或向左对齐的,则文本被放置在<BODY>元素之内、< TABLE>元素之外,文本 将环绕着表。因此,要生成一个两行单列的表,上面的单元放置图片,下面的单元放置标题 文本,可以让标题文本置于图片之下,并允许网页文本围绕其流动 这个应用程序没有为记者提供一个把新闻事件上传至服务器的方式。这里假设 记者与服务器在同一网络上工作,因此,能够将新闻事件放在合适的文件夹中。为 远程交付新闻事件文件,若干文件上传解决方案中的一种将会被使用,但因为这个 实例研究主要是为了学习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检测文 档中的一般错误,然后向读者发送产生问题的相关消息。 < a r t s e t >元素是任选的,可以为一条新闻事件选多于一幅的图片。这个应用程序可以在每 条新闻事件下面显示多幅图片。每一幅图都被列入表中,以便放置标题。在 H T M L中,如果 表是向右对齐或向左对齐的,则文本被放置在 < B O D Y >元素之内、< TA B L E >元素之外,文本 将环绕着表。因此,要生成一个两行单列的表,上面的单元放置图片,下面的单元放置标题 文本,可以让标题文本置于图片之下,并允许网页文本围绕其流动。 这个应用程序没有为记者提供一个把新闻事件上传至服务器的方式。这里假设 记者与服务器在同一网络上工作,因此,能够将新闻事件放在合适的文件夹中。为 远程交付新闻事件文件,若干文件上传解决方案中的一种将会被使用,但因为这个 实例研究主要是为了学习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 下载