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文件,其中的代码如下 <?xm1 verslon=1.0·?> <site> cifications <colors>
在网站上的任何地方所有的标题都可用,这使得事情更简单。读者不需要去找内容表,它总 在页面上。 点击标题,在一个看上去和感觉起来与网站相似的模板上面显示相应的新闻事件,使读 者在读一条新闻事件时不会有到了另一个地方的感觉。在每条新闻事件下面放置一个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> <navigation> </content> xm文件的每一个主要元素将管理这个网站相关的不同方面的信息。 Specifications colors、 包含了基于web的管理工具,就是前面看到的 Editorial content和 Glossary Managers,这些元素 navigation是相对静态的, Content和 glossary每天都在变换。由于这个原因,已经为 2821< Specifications>元素 把下面程序加入< Specifications>元素,为自己的web站点定制信息。 specifications> Site Title>Times-Herald</Site Title> <domAinName>http://onlinenewspaper.com</domainname> <Header_Image>images/header_color. gif</Header_Image <Pref_Font>arial, sans-serif</Pref_Font> 注意到在这里可以设定一个名叫 domain namel的参数,但它仅作为站点的一个引用变量使 用。实际上,在ASP页面内无法改变Web网站的域名。这些参数与colo元素的信息一起通过 globalasa存储在应用程序变量中,稍后将进一步介绍。 28.2.2< colors>元素 现在把下面程序加入< colors>元素中,在整个网站中都要引用它: <Color_Primary>#0043B0</Color_Primary> <Color_Secondary>#002277</Color_Secondary> <Color_Highlight>tFFFFoO</Color_Highlight> <Color_Background>#FFFFFF</color_Background> <Color_HeaderText>#7D78AF</Color_HeaderText> <Color_Body Text>#222222</Color._B </c。Lors 因为这些值存储在应用程序变量中,只需把它们用隐式的写法插入到网站中,记住一个 隐式的写法就是 Response对象的 Write方法的简化语法。 <body bgcolor Application( "Color Bac 具有一套颜色模式,可以使网站看起来更专业化,再加上为它定制的特别程序,使网站 更加健全 2823< navigation>元素 网站的导航信息包含有在< navigation>元素中,用于填充 navbar. asp页面,它可以插入到 网站的每一页。对每一个导航项,保留三条信息:name、url和 description。把以下的XML加 入到< navigation>元素中。然后,根据需要自由定制参数
. 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 <Specifications>元素 把下面程序加入< S p e c i f i c a t i o n s >元素,为自己的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 < colors>元素 现在把下面程序加入< c o l o r s >元素中,在整个网站中都要引用它: 因为这些值存储在应用程序变量中,只需把它们用隐式的写法插入到网站中,记住一个 隐式的写法就是R e s p o n s e对象的Wr i t e方法的简化语法。 <body bgcolor =”<% = Application( “C o l o r _ B a c k g r o u n d”) % >”> 具有一套颜色模式,可以使网站看起来更专业化,再加上为它定制的特别程序,使网站 更加健全。 28.2.3 <navigation>元素 网站的导航信息包含有在 < n a v i g a t i o n >元素中,用于填充 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加 入到< n a v i g a t i o n >元素中。然后,根据需要自由定制参数。 836计计ASP 3 高级编程 下载
chinapub com 3s xM BCMRrSM 837 载 <navigation> <sect⊥on <name>Front</name> curl>default <description>Front page- a mixture of all the news. </description> /section <section> <name>News</name> <url>news. asp</url: <descriptionNews pas current news for the city. </description> rts</name curl>sports. asp</url> description>Sports page - sports news from around town. </description> </section> <section> name>Society</name> <url>society. asp</url> <description>Society page -gossip and rumors run wild. </descriptio </section> <section >Information</name> info. asp</url> <description>Information- who's responsible for the site. </description> </section> </navigation> 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 </SCRIPT> 尽管这儿有许多变量,但它仅做下面两件基本的事情: 用 selectsinglenode方法来定位指定的节点并从它的子节点中得到值。 生成应用级变量存储导航栏数据、颜色模式和其他技术信息。 注意这里使用XML处理器的自由线程模型。 Set objXML server CreateObject( "Microsoft. Free ThreadedXMLDOM") 一个ⅹML文档可以用处理器的自由线程模型或租赁线程模型( Rental threading model) 来分析。这两种方式基本相同,但用租赁线程模型得到的性能稍好一些。然而,为了将文档 元素储存到应用程序变量中,必须使用自由线程模型,以便能被多用户实时访问 记住,还需要在 globa.asa的顶部引用适当的类型库 <I--METADATA TYPE="typelib FILE-'C: \WINNT\System 32 \msxml.dll"--> 或: <I--METADATA TYPE"TypeLib"NAME-'Microsoft XML, version 2.0"UUID='(D63EOCE2 A0A2-11D0-9c02-00c04Fc99c8E)· VERSION="2.0"--> 2825插入导航 旦 Application(“ Navigation”)数组中有了导航数据, navbar. asp就可生成导航栏 在根目录中生成一个叫 navbar. asp的新页面,加入以下代码 <TABLE BORDER=O BGCOLOR=<8-Color_Secondary CELLSPACING= 0 CELLPADDING=4> 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 高级编程 下载