2008年4月8日 By mikel 分类: 琐事杂记

要做的事
我们的网站管理员指南在设计、技术和质量方面提供了通用指南。下面是有关创建一个方便 Google 处理的网站的详细建议。
向访问者提供他们要查找的信息
在网页上提供高品质的内容,尤其是主页。这是您要做的最重要的工作。如果您的网页包含有用的信息,其内容就可以吸引许多访问者并使网站管理员乐于链接到您的网站。要创建实用且信息丰富的网站,网页文字应清晰准确地表述要传达的主题。想一想,用户会使用哪些字词来查找您的网页,然后尽量在网站上使用这些字词。
确保有网站链接到您的网站上
链接可帮助我们的抓取工具找到您的网站,并提高您的网站在我们的搜索结果中的展示率。返回搜索结果时,Google 会配合使用 PageRank(我们对网页重要性的评测)与先进的文字匹配技术,对每个搜索结果都显示兼具重要性与相关性的网页。Google 会计数网页收到的投票数量,作为 PageRank 的评判标准之一,其计算方法是将从网页 A 指向网页 B 的链接计为由网页 A 对网页 B 所投的一票。本身很”重要”的网页所投的票会更具分量,且有助于提高其他网页的”重要性”。
请注意,我们的算法可区别自然链接与非自然链接。指向您网站的自然链接是当其他网站发现您的内容具有价值并认为其可能对访问者有所帮助时,在网络的动态生成过程中形成的。指向您网站的非自然链接是专门放在那里,使您的网站显得更受搜索引擎欢迎的链接。我们的网站管理员指南介绍了一些此类链接(例如,链接方案和桥页)。
只有自然链接对网站的索引和排名有帮助。
让您的网站易于访问
以合理的链接结构建立您的网站。每个网页应至少可以通过一个静态文本链接打开。
使用文本浏览器(如 Lynx)检查您的网站。大部分 Spider 查看网站的方式与 Lynx 一样。如果因应用了 JavaScript、Cookie、会话 ID、框架、DHTML 或 Macromedia Flash 等技术,而造成在文本浏览器中无法看到整个网站,则 Spider 在抓取此网站时可能也会遇到麻烦。
考虑创建动态网页的静态副本。虽然 Google 索引中包括动态网页,但它们只占索引的一小部分。如果您怀疑您动态生成的网页(例如包含问号的网址)给我们的抓取工具带来了麻烦,可以为这些网页创建静态副本。如果要创建静态副本,不要忘记将动态网页添加到您的 robots.txt 文件,防止我们将其当成重复内容。
需要避免的事项
不要使用关键字填满网页、尝试”遮蔽”网页或建立”仅供抓取”的网页。如果您的网站上包含您不希望访问者看到的网页、链接或文字,Google 会认为这些内容具有欺诈性并可能忽略您的网站。
您不一定非要购买搜索引擎优化服务。有些公司声明可以”保证”您的网站在 Google 搜索结果中享有高排名。合法的咨询公司可以改善您网站的流量和内容,但某些公司会采用欺骗性手段试图骗过搜索引擎。请务必小心,如果您的域名与这些欺诈性服务相关,我们可能禁止其加入我们的索引。
不要使用图片来显示重要的名称、内容或链接。我们的抓取工具无法识别图形中所含的文字。如果网页上的主要内容和关键字不能以普通的 HTML 格式显示,请使用 ALT 属性。
不要为不同网址下的一个网页创建多个副本。许多网站提供纯文本或易于打印的网页,其内容与相应的图形丰富的网页不相上下。为了确保您首选的网页包括在我们的搜索结果中,请使用 robots.txt 文件拦截 Spider 抓取到的重复内容。有关使用 robots.txt 文件的详情,请访问关于拦截 Googlebot 的信息。

如何创建一个方便 Google 处理的网站?已关闭评论
2008年4月8日 By mikel 分类: 琐事杂记

【赛迪网讯】4月7日消息,Adobe公司亚太区市场总监Mark Phibbs近日在接受赛迪网专访时,向记者透露Adobe公司在中国市场所面临的挑战及其长期计划,同时就Acrobat以及PDF格式在中国的发展向记者进行了详细的阐述。
Mark Phibbs向记者表示,Adobe在中国市场上主要存在三大挑战:第一是遭遇到盗版的挑战;第二是中国幅员辽阔,渠道建设上也存在着很大的挑战;第三,与政府的关系也是Adobe需要努力去建设的。不过,Mark Phibbs同时也表示,虽然中国市场的业务在Adobe公司所占的比重并不大,但是Adobe公司对中国市场有着一个长期的计划。他进一步解释说, Adobe是最公开支持对自己产品进行二次开发的企业,Adobe的产品能够运行于PC、Mac、Linux等多个平台,公司是最注重于创造的。虽然在中国市场上面临诸多挑战,但是Adobe准备用5年的时间,加强在中国市场的拓展与开发。
Mark Phibbs还就Adobe收购Macromedia之后,产品的融合方面回答了记者的疑问。他在专访中表示,Macromedia的产品最受Adobe 关注的是Flash,它也是Adobe目前最重要的一款产品,目前Adobe CS3系列就是将两家公司的产品更好融合之后推出的新品。Mark Phibbs成以后Adobe还要将PDF和Flash平台进行更好地融合,同时Adobe公司具有很强的开放性,往往在产品推出Beta版的时候就放在公司网站上向外推出,并征求用户的意见和建议更好地完善自己的产品。

Adobe:中国市场面临三大挑战有5年计划已关闭评论
2008年4月8日 By mikel 分类: 开发笔记

http://www.readwriteweb.com/archives/10_adobe_air_apps_bloggers_will_love.php
另外的消息:
未来两天,Adobe Media Player正式版就要发布了。Flash Player 9.4也将会很快出现。
Flash Media Server 3.0.1已经出现在Adobe support专区。

用户喜爱的10个AIR应用已关闭评论
2008年4月7日 By mikel 分类: 开发笔记

One of the things that many people have asked for over the years with ASP.NET is built-in support for developing web applications using a model-view-controller (MVC) based architecture.
Last weekend at the Alt.NET conference in Austin I gave the first public demonstration of a new ASP.NET MVC framework that my team has been working on. You can watch a video of my presentation about it on Scott Hanselman's blog here.
We'll be releasing a public preview of this ASP.NET MVC Framework a little later this year. We'll then ship it as a fully supported ASP.NET feature in the first half of next year.
What is a Model View Controller (MVC) Framework?
MVC is a framework methodology that divides an application's implementation into three component roles: models, views, and controllers.
* “Models” in a MVC based application are the components of the application that are responsible for maintaining state. Often this state is persisted inside a database (for example: we might have a Product class that is used to represent order data from the Products table inside SQL).
* “Views” in a MVC based application are the components responsible for displaying the application's user interface. Typically this UI is created off of the model data (for example: we might create an Product “Edit” view that surfaces textboxes, dropdowns and checkboxes based on the current state of a Product object).
* “Controllers” in a MVC based application are the components responsible for handling end user interaction, manipulating the model, and ultimately choosing a view to render to display UI. In a MVC application the view is only about displaying information – it is the controller that handles and responds to user input and interaction.
One of the benefits of using a MVC methodology is that it helps enforce a clean separation of concerns between the models, views and controllers within an application. Maintaining a clean separation of concerns makes the testing of applications much easier, since the contract between different application components are more clearly defined and articulated.
The MVC pattern can also help enable red/green test driven development (TDD) – where you implement automated unit tests, which define and verify the requirements of new code, first before you actually write the code itself.
A few quick details about the ASP.NET MVC Framework
I'll be doing some in-depth tutorial posts about the new ASP.NET MVC framework in a few weeks once the bits are available for download (in the meantime the best way to learn more is to watch the video of my Alt.net presentation).
A few quick details to share in the meantime about the ASP.NET MVC framework:
* It enables clean separation of concerns, testability, and TDD by default. All core contracts within the MVC framework are interface based and easily mockable (it includes interface based IHttpRequest/IHttpResponse intrinsics). You can unit test the application without having to run the Controllers within an ASP.NET process (making unit testing fast). You can use any unit testing framework you want to-do this testing (including NUnit, MBUnit, MS Test, etc).
* It is highly extensible and pluggable. Everything in the MVC framework is designed so that it can be easily replaced/customized (for example: you can optionally plug-in your own view engine, routing policy, parameter serialization, etc). It also supports using existing dependency injection and IOC container models (Windsor, Spring.Net, NHibernate, etc).
* It includes a very powerful URL mapping component that enables you to build applications with clean URLs. URLs do not need to have extensions within them, and are designed to easily support SEO and REST-friendly naming patterns. For example, I could easily map the /products/edit/4 URL to the “Edit” action of the ProductsController class in my project above, or map the /Blogs/scottgu/10-10-2007/SomeTopic/ URL to a “DisplayPost” action of a BlogEngineController class.
* The MVC framework supports using the existing ASP.NET .ASPX, .ASCX, and .Master markup files as “view templates” (meaning you can easily use existing ASP.NET features like nested master pages, <%= %> snippets, declarative server controls, templates, data-binding, localization, etc). It does not, however, use the existing post-back model for interactions back to the server. Instead, you'll route all end-user interactions to a Controller class instead – which helps ensure clean separation of concerns and testability (it also means no viewstate or page lifecycle with MVC based views).
* The ASP.NET MVC framework fully supports existing ASP.NET features like forms/windows authentication, URL authorization, membership/roles, output and data caching, session/profile state management, health monitoring, configuration system, the provider architecture, etc.
Summary
If you are looking to build your web applications using a MVC approach, I think you'll find this new ASP.NET MVC Framework option very clean and easy to use. It will enable you to easily maintain separation of concerns in your applications, as well as facilitate clean testing and TDD.
I'll post more tutorials in the weeks ahead on how the new MVC features work, as well as how you can take advantage of them.
Hope this helps,
Scott

Two weeks ago I blogged about a new MVC (Model View Controller) framework for ASP.NET that we are going to be supporting as an optional feature soon. It provides a structured model that enforces a clear separation of concerns within applications, and makes it easier to unit test your code and support a TDD workflow. It also helps provide more control over the URLs you publish in your applications, and can optionally provide more control over the HTML that is emitted from them.
Since then I've been answering a lot of questions from people eager to learn more about it. Given the level of interest I thought it might make sense to put together a few blog posts that describe how to use it in more detail. This first post is one of several I'll be doing in the weeks ahead.
A Simple E-Commerce Storefront Application
I'm going to use a simple e-commerce store application to help illustrate how the ASP.NET MVC Framework works. For today's post I'll be implementing a product listing/browsing scenario in it.
Specifically, we are going to build a store-front that enables end-users to browse a list of product categories when they visit the /Products/Categories URL on the site:

When a user clicks on a product category hyperlink on the above page, they'll navigate to a product category listing URL – /Products/List/CategoryName – that lists the active products within the specific category:

When a user clicks an individual product, they'll navigate to a product details URL – /Products/Detail/ProductID – that displays more details about the specific product they selected:

We'll build all of the above functionality using the new ASP.NET MVC Framework. This will enable us to maintain a “clean separation of concerns” amongst the different components of the application, and enable us to more easily integrate unit testing and test driven development.
Creating A New ASP.NET MVC Application
The ASP.NET MVC Framework includes Visual Studio Project Templates that make it easy to create a new web application with it. Simply select the File->New Project menu item and choose the “ASP.NET MVC Web Application” template to create a new web application using it.
By default when you create a new application using this option, Visual Studio will create a new solution for you and add two projects into it. The first project is a web project where you'll implement your application. The second is a testing project that you can use to write unit tests against it:

You can use any unit testing framework (including NUnit, MBUnit, MSTest, XUnit, and others) with the ASP.NET MVC Framework. VS 2008 Professional now includes built-in testing project support for MSTest (previously in VS 2005 this required a Visual Studio Team System SKU), and our default ASP.NET MVC project template automatically creates one of these projects when you use VS 2008.
We'll also be shipping project template downloads for NUnit, MBUnit and other unit test frameworks as well, so if you prefer to use those instead you'll also have an easy one click way to create your application and have a test project immediately ready to use with it.
Understanding the Folder Structure of a Project
The default directory structure of an ASP.NET MVC Application has 3 top-level directories:
* /Controllers
* /Models
* /Views
As you can probably guess, we recommend putting your Controller classes underneath the /Controllers directory, your data model classes underneath your /Models directory, and your view templates underneath your /Views directory.
While the ASP.NET MVC framework doesn't force you to always use this structure, the default project templates use this pattern and we recommend it as an easy way to structure your application. Unless you have a good reason to use an alternative file layout, I'd recommend using this default pattern.
Mapping URLs to Controller Classes
In most web frameworks (ASP, PHP, JSP, ASP.NET WebForms, etc), incoming URLs typically map to template files stored on disk. For example, a “/Products.aspx” or “/Products.php” URL typically has an underlying Products.aspx or Products.php template file on disk that handles processing it. When a http request for a web application comes into the web server, the web framework runs code specified by the template file on disk, and this code then owns handling the processing of the request. Often this code uses the HTML markup within the Products.aspx or Products.php file to help with generating the response sent back to the client.
MVC frameworks typically map URLs to server code in a different way. Instead of mapping URLs to template files on disk, they instead map URLs directly to classes. These classes are called “Controllers” and they own processing incoming requests, handling user input and interactions, and executing appropriate application and data logic based on them. A Controller class will then typically call a separate “View” component that owns generating the actual HTML output for the request.

The ASP.NET MVC Framework includes a very powerful URL mapping engine that provides a lot of flexibility in how you map URLs to Controller classes. You can use it to easily setup routing rules that ASP.NET will then use to evaluate incoming URLs and pick a Controller to execute. You can also then have the routing engine automatically parse out variables that you define within the URL and have ASP.NET automatically pass these to your Controller as parameter arguments. I'll be covering more advanced scenarios involving the URL routing engine in a future blog post in this series.
Default ASP.NET MVC URL Routing to Controller Classes
By default ASP.NET MVC projects have a preconfigured set of URL routing rules that enable you to easily get started on an application without needing to explicitly configure anything. Instead you can start coding using a default set of name-based URL mapping conventions that are declared within the ASP.NET Application class of the Global.asax file created by the new ASP.NET MVC project template in Visual Studio.
The default naming convention is to map the leading URL path of an incoming HTTP request (for example: /Products/) to a class whose name follows the pattern UrlPathController (for example: by default a URL leading with /Products/ would map to a class named ProductsController).
To build our e-commerce product browsing functionality, we'll add a new “ProductsController” class to our project (you can use the “Add New Item” menu in Visual Studio to easily create a Controller class from a template):

Our ProductsController class will derive from the System.Web.MVC.Controller base class. Deriving from this base class isn't required – but it contains some useful helper methods and functionality that we'll want to take advantage of later:

Once we define this ProductsController class within our project, the ASP.NET MVC framework will by default use it to process all incoming application URLs that start under the “/Products/” URL namespace. This means it will be automatically called to process the “/Products/Categories”, “/Products/List/Beverages”, and “/Products/Detail/3” URLs that we are going to want to enable within our store-front application.
In a future blog post we'll also add a ShoppingCartController (to enable end users to manage their shopping carts) and an AccountController (to enable end users to create new membership accounts on the site and login/logout of it). Once we add these two new controller classes to our project, URLs that start with /ShoppingCart/ and /Account/ will automatically be routed to them for processing.
Note: The ASP.NET MVC framework does not require that you always use this naming convention pattern. The only reason our application uses this by default is because there is a mapping rule that configures this that was automatically added to our ASP.NET Application Class when we created the new ASP.NET MVC Project using Visual Studio. If you don't like this rule, or want to customize it to use a different URL mapping pattern, just go into the ASP.NET Application Class (in Global.asax) and change it. I'll cover how to-do this in a future blog post (when I'll also show some of the cool scenarios the URL routing engine enables).
Understanding Controller Action Methods
Now that we have a created a ProductsController class in our project we can start adding logic to handle the processing of incoming “/Products/” URLs to the application.
When defining our e-commerce storefront use cases at the beginning of this blog post, I said we were going to implement three scenarios on the site: 1) Browsing all of the Product Categories, 2) Listing Products within a specific Category, and 3) Showing Details about a Specific Product. We are going to use the following SEO-friendly URLs to handle each of these scenarios:
URL Format Behavior URL Example
/Products/Categories Browse all Product Categories /Products/Categories
/Products/List/Category List Products within a Category /Products/List/Beverages
/Products/Detail/ProductID Show Details about a Specific Product /Products/Detail/34
There are a couple of ways we could write code within our ProductsController class to process these three types of incoming URLs. One way would be to override the “Execute” method on the Controller base class and write our own manual if/else/switching logic to look at the incoming URL being requested and then execute the appropriate logic to process it.
A much easier approach, though, is to use a built-in feature of the MVC framework that enables us to define “action methods” on our controller, and then have the Controller base class automatically invoke the appropriate action method to execute based on the URL routing rules in use for our application.
For example, we could add the below three controller action methods to our ProductsController class to handle our three e-commerce URL scenarios above:

The URL routing rules that are configured by default when a new project is created treat the URL sub-path that follows the controller name as the action name of the request. So if we receive a URL request of /Products/Categories, the routing rule will treat “Categories” as the name of the action, and the Categories() method will be invoked to process the request. If we receive a URL request of /Products/Detail/5, the routing rule will treat “Detail” as the name of the action, and the Detail() method will be invoked to process the request, etc.
Note: The ASP.NET MVC framework does not require that you always use this action naming convention pattern. If you want to use a different URL mapping pattern, just go into the ASP.NET Application Class (in Global.asax) and change it.
Mapping URL Parameters to Controller Action Methods
There are several ways to access URL parameter values within the action methods of Controller classes.
The Controller base class exposes a set of Request and Response objects that can be used. These objects have the exact same API structure as the HttpRequest/HttpResponse objects that you are already familiar with in ASP.NET. The one important difference is that these objects are now interface based instead of sealed classes (specifically: the MVC framework ships with new System.Web.IHttpRequest and System.Web.IHttpResponse interfaces). The benefit of having these be interfaces is that it is now easy to mock them – which enables easy unit testing of controller classes. I'll cover this in more depth in a future blog post.
Below is an example of how we could use the Request API to manually retrieve an ID querystring value from within our Detail action method in the ProductsController class:

The ASP.NET MVC framework also supports automatically mapping incoming URL parameter values as parameter arguments to action methods. By default, if you have a parameter argument on your action method, the MVC framework will look at the incoming request data to see if there is a corresponding HTTP request value with the same name. If there is, it will automatically pass it in as a parameter to your action method.
For example, we could re-write our Detail action method to take advantage of this support and make it cleaner like below:

In addition to mapping argument values from the querystring/form collection of a request, the ASP.NET MVC framework also allows you to use the MVC URL route mapping infrastructure to embed parameter values within the core URL itself (for example: instead of /Products/Detail?id=3 you could instead use /Products/Detail/3).
The default route mapping rule declared when you create a new MVC project is one with the format: “/[controller]/[action]/[id]”. What this means is that if there is any URL sub-path after the controller and action names in the URL, it will by default be treated as a parameter named “id” – and which can be automatically passed into our controller action method as a method argument.
This means that we can now use our Detail method to also handle taking the ID argument from the URL path (e.g: /Products/Detail/3):

太多了,具体访问地址:http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx

ASP.NET MVC Framework已关闭评论
2008年4月7日 By mikel 分类: 开发笔记
<div id="body" style="width:200px;height:10px;">
<div id="demo3" style=overflow:hidden;height:<%=hhheight%>;width:600;>
<div id="demo4">
<table width="100%" height="100%">
<tr><td>滚滚滚滚滚滚滚</td</tr>
<tr><td>滚滚滚滚滚滚滚</td</tr>
<tr><td>滚滚滚滚滚滚滚</td</tr>
<tr><td>滚滚滚滚滚滚滚</td</tr>
<tr><td>滚滚滚滚滚滚滚</td</tr>
<tr><td>滚滚滚滚滚滚滚</td</tr>
<tr><td>滚滚滚滚滚滚滚</td</tr>
<tr><td>滚滚滚滚滚滚滚</td</tr>
</table>
</div>
<div id="demo5"></div>
</div>
<script language="javascript">
var i=0;
var speed1=80
var demo5=document.getElementById(&#39;demo5&#39;);
demo5.innerHTML=demo4.innerHTML
function Marquee1(){
if(demo5.offsetTop-demo3.scrollTop<=0)
demo3.scrollTop-=demo4.offsetHeight
else{
demo3.scrollTop++
}
i++;
//alert(i);
}
var MyMar1=setInterval(Marquee1,speed1)
demo3.onmouseover=function() {clearInterval(MyMar1)}
demo3.onmouseout=function() {MyMar1=setInterval(Marquee1,speed1)}
</script>
滚动字幕效果已关闭评论
2008年4月7日 By mikel 分类: 开发笔记

网页可见区域宽: document.body.clientWidth;
网页可见区域高: document.body.clientHeight;
网页可见区域宽: document.body.offsetWidth (包括边线的宽);
网页可见区域高: document.body.offsetHeight (包括边线的宽);
网页正文全文宽: document.body.scrollWidth;
网页正文全文高: document.body.scrollHeight;
网页被卷去的高: document.body.scrollTop;
网页被卷去的左: document.body.scrollLeft;
网页正文部分上: window.screenTop;
网页正文部分左: window.screenLeft;
屏幕分辨率的高: window.screen.height;
屏幕分辨率的宽: window.screen.width;
屏幕可用工作区高度: window.screen.availHeight;
屏幕可用工作区宽度:window.screen.availWidth;

scrollTop已关闭评论
2008年4月7日 By mikel 分类: 开发笔记

XML加ASP实现网页自动适应多国语言
作者:未知
想让你的站点能被来自多个国家的冲浪者看明白吗?无疑,这就需要提供多个语言版本的页面内容,也就是所谓的“本地化”功能。最容易想到的方法就是分别编写多种语言的页面内容,然后放置到不同的目录下,再在首页上添加导航到各自语言位置的链接。很明显,这样的处理方式将浪费许多包含公共元素以及设计框架的空间,而且修改、维护也很烦琐。有什么好方法吗?当然,本文就介绍如何结合使用XML与ASP技术实现这个目的。
  本文将讨论如下几个方面的内容:创建包含语言资源的XML文档、使用ASP创建Web页面模板、使用XPath语法和MSXML3分析器定位XML文档中的目标内容以及动态地在HTML流中插入语言字符串。
准备条件
  本文讨论的技术涉及到以下方面:IIS4 或者 PWS(包含ASP功能),MSXML 版本 3。
功能展示
  本文要讨论的例程是一个简单的HTML表单,用以提交名字和地址信息。下面是在Netscape Navigator中显示西班牙语言的图示:
  采用本文论述的技术,你就可以非常简单地通过更新一个XML文件实现为站点添加多种语言的功能。
创建包含语言资源的XML文档
首先,使用喜爱的页面编辑器创建一个叫做xmltrans.asp的Web页面文件。我发现使用静态占位符文字(比如”First name “)设计页面最容易。当XML准备好后,就可以使用变量替换这些静态文字。要下载例程文件请点击这里。
  完成基本页面的功能设计后,开始创建一个包含语言字符串的良好格式XML文档。在这里,我使用纯文本编辑器Notepad编写初始的XML语言集-英语版本。Notepad使我感觉更接近于源代码。XML文件命名为xmltrans.xml。下面列出了包含English、French和 Spanish字符串的XML文件代码内容:
  
  
  
   Localize ASP with XML
   First name
   Last name
   Prefix    Suffix
   Address    Address 2    Address 3    City
   State/Province
   Postal code    Area code    Telephone number
   OK
   en
   Windows-1252
   English
  

  
   Localize ASP with XML – French
   Prénom
   Nom
   Préfixe (M., Mme, Mlle)    Suffixe/Titre
   Rue          Ville
   Région/Province
   Code postal    Indicatif régional    Numéro de téléphone
   OK
   fr
   Windows-1252
   French
  

  
   Localize ASP with XML – Spanish
   Nombre
   Apellido paterno
   Prefijo (Sr., Sra., Srta.)    Sufijo o título
   Línea 1 de dirección          Ciudad
   Región, estado o provincia
   Código postal    Código de área    Número de teléfono
   OK
   sp
   iso-8859-1
   Spanish
  

  

  xmltrans.xml文件的第一行是XML声明。其中的version属性告诉读者文档符合XML 1.0的标准,encoding属性指示解析器使用压缩版本的Unicode:
  
  一个XML文档需要一个包含其他元素的根元素。因为这里的例程是包含一些语言,所以就命名根元素为languages:
  
  作为集合类型,languages元素包含了一个或多个language元素:
  
  以上language标记包含4个属性。xml:lang属性是其中最重要的,在ASP程序中将通过这个属性值的2字母语言代码搜索字符串组。其他的属性,比如charset,可以为将来的功能扩充而用。
  每种语言节点中,我都添加了一个元素作为变量,其中含有显示在HTML页面上的文字。XML允许使用有含义的名字作为自定义标记,比如,我使用 元素包含HTML页面的标题。同样,<firstname>元素包含字符串”First name”。<br />   <title>Localize ASP with XML
  First name
  最后,良好格式的XML文档包含了一整套对应于HTML页面的字符串。下图显示了XML文件中的标记和English语言字符串。注意,现在这里只讨论English版本,以后可以添加更多种语言。
ASP文件代码分析
  现在回来看看ASP文件xmltrans.asp。在其中我们使用XML路径语言(XPath),它可以在微软的XML解析器(MSXML)中执行。你可以认为XPath是抵达XML文档一部分内容预定位置的工具,这有些类似于在命令行中输入一个路径以执行文件,比如c:\winnt\ notepad.exe,或者在浏览器中敲入了一个URL访问页面。下面研究这个ASP文件看看如何取回English语言字符串。首先,我们实例化一个叫做MSXML2.DOMDocument的XML解析器工作对象:
  set doc=server._
  CreateObject _
  (“MSXML2.DOMDocument”)
  由于ASP程序不能象Win32程序一样处理事件,所以在这里我们关闭了异步操作选项。这样就确保了在转向其他任务前,脚本程序会一直等待当前事件的完成:
  doc.async = False
  接着使用DOMDocument对象的Load方法装载包含字符串的XML文档。如果转载过程中发生了错误,就发出警告信息并停止运行:
  if not doc.Load(server._
  mappath(“xmltrans.xml”)) then
   msg=”Failed to load ”
   msg=msg & “the XML file”
   Response.Write msg
   Response.End
  end if
  我们可以使用两种方法查询XML文档:XSL和XPath。在这里让解析器使用后者,传递属性名字和正确数值给setProperty方法:
  doc.setProperty _
   “SelectionLanguage”, “XPath”
  然后,创建选择XML文档部分内容的路径。很明显,相关字符串位于languages元素的某个位置内,因此languages成为路径的最开始部分。同时我们知道字符串是被包含在一个language元素内的,但是是哪一个呢?请别忘记在前面的XML文档中,我们嵌入了一个叫做xml:lang的属性,并给出了一个唯一数值“en”。这就是我们要选择的,下面是操作它的语法:
  sel=”/languages/language”
  sel=sel & “[@xml:lang='en']”
  这有些不好理解,但你可以将这段XPath代码想像为一个SQL语句,类似于取回一个记录集的命令:
  Select * FROM languages.language Where xml:lang='en'
  回到现实的XPath查询,要使用下面的代码返回包含第一个匹配节点的节点对象:
  set selectednode = _
   doc.selectSingleNode(sel)
  最后一步是传递元素名字(“title”)给selectSingleNode方法,并要求它取回”title”节点的text属性值。就是说,取得包含在的文字。在这里,取回的文字是”Localize ASP with XML”:
  txt=selectednode._
  selectSingleNode(“title”).text
  与SQL命令对照,就象从ADO记录集内部取回一个字段值,语句是:
  txt=rs(“title”)
在ASP页面中插入语言字符串
  知道了如何从XML元素中选取文字并赋值给变量,就可以将变量值插入到HTML流中了。为了使代码简洁,创建一个叫做getstring()的函数,如下:
  function getstring(instring)
  temp=selectednode._
  selectSingleNode _
  (instring).text
  getstring= _
  server.htmlencode(temp)
  end function
  getstring()函数的输入值是元素名,元素值要从XML文档中取回。比如,将”firstname”传递给getstring(), getstring函数就选择firstname元素并返回它的文本数值。为保险起见,在返回给调用者前,我们使用ASP的 server.htmlencode方法转换文本为合法的HTML代码。在ASP页面中,调用代码类似如下:
  

  <%=getstring("firstname")%>:
  

  如果选择了XML文档的English部分,HTML输出结果如下:
  

First name:v/td>
  如果选择了French,HTML输出结果如下:
  

Prénom:

  下图显示了French语言版本的表单:
选择可用语言
  XML的一大优势就是它是以清晰的文本格式保存,我们能够在任何时候更新Web服务器上的XML文件。而且,我们还可以将English版本的 xmltrans.xml文件在XML编辑器XML NotHPad中打开,复制一份,然后将其中文字翻译为一种新语言。下图显示了XML Notepad中的例程文件:
  上图中,在左边可以执行添加、删除以及选择元素和属性的操作,在右边可以编辑相关内容。当站点需要多种语言版本时,只需要在内容中执行粘贴操作,然后上载最新的XML文档就可以了。
  为了使添加的语言立即生效,要增加一个程序,用它判断文件中不同语言的种类数量,并返回语言代码和语言名称。如下面的代码段所示,我们可以将数据格式化处理以创建一个HTML列表框。当用户提交表单时,2字母表示的语言种类代码被存储到ASP会话变量choselang中。
  
  <%   for i=0 to selectednodes.length - 1    response.write "” & vbcrlf
  next
  %>

添加提示信息以及字符集数据
  上面使用XML提供了HTML表单的可变语言文字显示,接着还要考虑一些更丰富的用途。比如说,要在选择语言时添加一个提示信息,只需要在文字前后嵌入HTML标记

XML加ASP实现网页自动适应多国语言已关闭评论
2008年4月7日 By mikel 分类: 开发笔记

我们来看如何使用xml来实现吧!
1。我们需要编写一个ResourceManager.cs来读取xml文件内容
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//对xml读写操作
using System.Xml;
//缓存
using System.Web.Caching;
//
using System.Collections;
///

/// ResourceManager 的摘要说明
///

public class ResourceManager
{
public ResourceManager() { }
public static string GetString(string name, string userLanguages)
{
//通过指定属性名返回包含此属性名相关信息的hash表
Hashtable source = LoadSource(userLanguages);
//如果hash表不等于null就将其值返回
if (source != null)
{
return source[name].ToString();
}
//否则空
return “”;
}
//获取语言语句字典
public static Hashtable LoadSource(string userLanguages)
{
//获取xml文件存放的物理路径
string pathFile = System.Web.HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath + “/Languages/”+userLanguages+”/Resources.xml”);
//创建一个xmldatadocument对象
System.Xml.XmlDataDocument lagXml = new XmlDataDocument();
//加载其要操作的xml文件
lagXml.Load(pathFile);
//声明一个hash表
Hashtable supportedLanguages;
//创建hash表
supportedLanguages = new Hashtable();
//获取xml文件中root节点下的所有子节点
foreach (XmlNode xn in lagXml.SelectSingleNode(“root”).ChildNodes)
{
//如果不是注释就将子节点属性值和节点文本以键/值对形式存放到hash表里
if (xn.NodeType != XmlNodeType.Comment)
{
supportedLanguages.Add(xn.Attributes[“name”].Value,xn.InnerText);
}
}
//返回hash表
return supportedLanguages;
}
}
2。肯定还需要xml文件。
我们在项目根目录下创建一个Languages文件夹,然后在下面建子文件夹:例如中文就是zh-CN,英文就是en-US.
然后在这些子文件夹下创建相同名称的xml文件Resources.xml
当然名字是随便取的!不过注意代码里要改动!
xml文件里的具体格式如下:


Account number:
Password:
Confirmation
Publishes

3。讲到这里我来说下实现原理,前台有两个按钮 一个在点击后使页面显示中文,一个则显示英文
那么我们需要先拖出这么两个button控件!
然后分别在他们的click事件里写上:
string langauge = “zh-CN”;//这三句话是写在了中文按钮的事件下,英文下同样是这三句话,但要记得将zh-CN改成en-US
Session[“Language”] = langauge;
ShowText(langauge);
4。大家肯定看到了ShowText干什么的!他就是来指定翻译那些东东的! 这个方法还需要在每个页面都放到page_load下面!因为我们需要在
页面一加载时就翻译!
void ShowText(string userLanguage)
{
localizeAccount.Text = ResourceManager.GetString(“Account”, userLanguage);
}
例如这个是将localizeAccount控件的文本按指定要求翻译成指定文本!
这里大家也该明白我们必须将需要翻译的东东都放到控件里,然后后台调用其text属性来改变他的显示语言!
关于这一点,有几点需要注意,就是datalist这类绑定控件里的header,item里的控件如何取出来翻译!
foreach(DataListItem item in DataList控件id.Controls)
{
if(item.ItemType==ListItemType.Header)
{
(Localize) a = item.FindControl(“id”) as Localize;
a.Text = …;
}
}
这样就可以取出header部分的控件了,但是不知道为什么这样取item里的控件会有问题!
所以取item里的大家这样取
foreach(DataListItem item in DataList控件id.Items)
{
(Localize) a = item.FindControl(“id”) as Localize;
a.Text = …;
}
5。创建Global.asax文件
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Session[“Language”] = “zh-CN”;
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
Session.Clear();
}
———————总结—————————–
那么我们来把上面乱七八糟步骤整理一下,
首先Global.asax会在一开始默认一中语言显示,这里是中文!
然后当有用户点击英文按钮的时候,会改变session存贮的值,
然后页面根据session值加载ShowText()方法,
而这一方法会通过调用ResourceManager.cs文件里的方法到指定xml文件中读取数据!
这样一个多语言就实现了!也没也过什么文章,随便写写,只希望能帮助到大家,而且我的
说不定是很差的实现方法,就当给大家提供个思路吧,有错的地方还请指教!
最后提两点,如果需要下拉框,需要在Languages文件夹下建一个xml专门存贮下拉框内容:例如:
一—————————————–






然后在ResourceManger.cs文件里加上一个方法:
//获取语言目录数据,返回一个数据视图
public static DataView GetSupportedLanguages()
{
string cacheKey = “Languages”;
if(HttpContext.Current.Cache[cacheKey]==null)
{
string PathFile=System.Web.HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath+”/Languages/languages.xml”);
DataSet objDataSet=new DataSet();
objDataSet.ReadXml(PathFile);
//下面两句自己也不是很理解,还望高人指点,呵呵!~
CacheDependency dp = new CacheDependency(PathFile);
HttpContext.Current.Cache.Insert(cacheKey,objDataSet.Tables[0].DefaultView,dp,DateTime.MaxValue, TimeSpan.Zero);
}
return (DataView)HttpContext.Current.Cache[cacheKey];
}
后台这样为下拉菜单绑定数据
drp_language.DataSource = MultLanuage.ResourceManager.GetSupportedLanguages();
drp_language.DataTextField = “name”;
drp_language.DataValueField = “key”;
drp_language.DataBind();
二—————————————
如果项目中有用到母版+导航制作的框架,那就很郁闷!
我是想到了通过配置配置文件,根据session加载不同语言的sitemap文件
不知道大家有没有更好的推荐一下!
thank you~!!!!!!!!!
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1744933

asp.net2.0+xml实现多语言开发!已关闭评论
2008年4月7日 By mikel 分类: 开发笔记

现在越来越多的公司为了打开过外市场,都会在自己网站上做上相应的英文,日文,韩文,西班牙文…等一些网页。而一个企业网做一个英文版,在深圳这个地方已经成为一种时尚。
而很多人做英文版都是是用GB2312,这套制就算是繁体操作系统上也可能看到乱码现象。这显然是一个错误,只是可以应付客户而已。制作多国语言最好用utf-8。
而asp制作多国语言网站,也会给大家带来一些问题。现在把自己制作过程中的经验分享出来。
打开新建一个ASP页面,相信玩ASP的朋友都会留意到,许多下载的源码里,页面最上方一般都有一句:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
前面的language应该不用多说了,vbscript就是ASP默认的脚本语言,其实完全可以不用写,写了好像还会影响页面执行效率,在这里我们先不讨论这个问题. 后面的codepage就是关键了,目的就是告诉浏览器,此页面是何种编码,936代表是简体中文,而950代表繁体中文,65001就是我们今天说的 UTF-8编码了.我们将936改成65001,整句如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
再加上输出几个中文字看看能不能正确显示吧.
<% Response.Write "第一次测试UTF-8页面" %>
OK,直接点击”保存”,执行这个页面看看,如果不出意外,大家可能看到显示出的是 “一尾UTF-8页” 这几个字,中文有乱码的现象,什么原因呢?
OK, 请大家再点击最上面的 “文件” 菜单,选择”另存为”,最下面一行有个编码,默认应该是ANSI的,请大家点下拉框,选择UTF-8,再点保存,再执行试试看,如果不出意外,乱得更厉害了,呵呵,晕了吧.别急,想想原因,因为我们做的页面是HTML返回的,以前我们写HTML时,看到body前面,也就是head里都有一句meta,应该是这样的:

也就是指定页面以gb2312编码返回结果,一定要写在有返回结果输出的前面.大家都知道gb2312是简体中文吧,我们今天说的是UTF-8编码,我们就将gb2312改成UTF-8吧,全部代码如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

<% Response.Write "第一次测试UTF-8页面" %>
再看,这次正常了。
得出结论:采用UTF-8编码,除了要将文件另存为UTF-8格式之外,还需要同时指定codepage及charset.
但有了这些还不够,在制作过程中还会出现一些乱码的问题。为了。保证asp叶面一定不会出现乱码的代码应该是这样的:
<%@ CODEPAGE=65001 %>
<% Response.CodePage=65001%>
<% Response.Charset="UTF-8" %>
建议:可以建立公共文件code.asp,或则直接写到习惯的conn.asp中。

asp制作多国语言网站已关闭评论
2008年4月7日 By mikel 分类: 开发笔记

面向Web的数据挖掘
  Web上有海量的数据信息,怎样对这些数据进行复杂的应用成了现今数据库技术的研究热点。数据挖掘就是从大量的数据中发现隐含的规律性的内容,解决数据的应用质量问题。充分利用有用的数据,废弃虚伪无用的数据,是数据挖掘技术的最重要的应用。相对于Web的数据而言,传统的数据库中的数据结构性很强,即其中的数据为完全结构化的数据,而Web上的数据最大特点就是半结构化。所谓半结构化是相对于完全结构化的传统数据库的数据而言。显然,面向Web的数据挖掘比面向单个数据仓库的数据挖掘要复杂得多。
1.异构数据库环境
  从数据库研究的角度出发,Web网站上的信息也可以看作一个数据库,一个更大、更复杂的数据库。Web上的每一个站点就是一个数据源,每个数据源都是异构的,因而每一站点之间的信息和组织都不一样,这就构成了一个巨大的异构数据库环境。如果想要利用这些数据进行数据挖掘,首先,必须要研究站点之间异构数据的集成问题,只有将这些站点的数据都集成起来,提供给用户一个统一的视图,才有可能从巨大的数据资源中获取所需的东西。其次,还要解决Web上的数据查询问题,因为如果所需的数据不能很有效地得到,对这些数据进行分析、集成、处理就无从谈起。
2.半结构化的数据结构
  Web上的数据与传统的数据库中的数据不同,传统的数据库都有一定的数据模型,可以根据模型来具体描述特定的数据。而Web上的数据非常复杂,没有特定的模型描述,每一站点的数据都各自独立设计,并且数据本身具有自述性和动态可变性。因而, Web上的数据具有一定的结构性,但因自述层次的存在,从而是一种非完全结构化的数据,这也被称之为半结构化数据。半结构化是Web上数据的最大特点。
3.解决半结构化的数据源问题
  Web数据挖掘技术首要解决半结构化数据源模型和半结构化数据模型的查询与集成问题。解决Web上的异构数据的集成与查询问题,就必须要有一个模型来清晰地描述Web上的数据。针对Web上的数据半结构化的特点,寻找一个半结构化的数据模型是解决问题的关键所在。除了要定义一个半结构化数据模型外,还需要一种半结构化模型抽取技术,即自动地从现有数据中抽取半结构化模型的技术。面向 Web的数据挖掘必须以半结构化模型和半结构化数据模型抽取技术为前提。
XML与Web数据挖掘技术
  以XML 为基础的新一代WWW环境是直接面对Web数据的,不仅可以很好地兼容原有的Web应用,而且可以更好地实现Web中的信息共享与交换。XML可看作一种半结构化的数据模型,可以很容易地将XML的文档描述与关系数据库中的属性一对应起来,实施精确地查询与模型抽取。
1.XML的产生与发展
  XML(eXtensibleMarkupLanguage)是由万维网协会(W3C)设计,特别为Web应用服务的SGML (StandardGeneralMarkupLanguage)的一个重要分支。总的来说,XML是一种中介标示语言(Meta- markupLanguage),可提供描述结构化资料的格式,详细来说,XML是一种类似于HTML,被设计用来描述数据的语言。XML提供了一种独立的运行程序的方法来共享数据,它是用来自动描述信息的一种新的标准语言,它能使计算机通信把Internet的功能由信息传递扩大到人类其他多种多样的活动中去。XML由若干规则组成,这些规则可用于创建标记语言,并能用一种被称作分析程序的简明程序处理所有新创建的标记语言,正如HTML为第一个计算机用户阅读Internet文档提供一种显示方式一样,XML也创建了一种任何人都能读出和写入的世界语。XML解决了HTML不能解决的两个Web问题,即Internet发展速度快而接入速度慢的问题,以及可利用的信息多,但难以找到自己需要的那部分信息的问题。XML能增加结构和语义信息,可使计算机和服务器即时处理多种形式的信息。因此,运用XML的扩展功能不仅能从Web服务器下载大量的信息,还能大大减少网络业务量。
   XML中的标志(TAG)是没有预先定义的,使用者必须要自定义需要的标志,XML是能够进行自解释(SelfDescribing)的语言。XML使用 DTD(DocumentTypeDefinition文档类型定义)来显示这些数据,XSL (eXtensibleStyleSheetLanguage)是一种来描述这些文档如何显示的机制,它是XML的样式表描述语言。XSL的历史比 HTML用的CSS(层叠式样式表CascadingStyleSheets)还要悠久,XSL包括两部分:一个用来转换XML文档的方法;一个用来格式化XML文档的方法。XLL(eXtensibleLinkLanguage)是XML连接语言,它提供XML中的连接,与HTML中的类似,但功能更强大。使用XLL,可以多方向连接,且连接可以存在于对象层级,而不仅仅是页面层级。由于XML能够标记更多的信息,所以它就能使用户很轻松地找到他们需要的信息。利用XML,Web设计人员不仅能创建文字和图形,而且还能构建文档类型定义的多层次、相互依存的系统、数据树、元数据、超链接结构和样式表。
2.XML的主要特点
  正是XML的特点决定了其卓越的性能表现。XML作为一种标记语言,有许多特点:
  · 简单。XML经过精心设计,整个规范简单明了,它由若干规则组成,这些规则可用于创建标记语言,并能用一种常常称作分析程序的简明程序处理所有新创建的标记语言。XML能创建一种任何人都能读出和写入的世界语,这种创建世界语的功能叫做统一性功能。如XML创建的标记总是成对出现,以及依靠称作统一代码的新的编码标准。
  · 开放。XML是SGML在市场上有许多成熟的软件可用来帮助编写、管理等,开放式标准XML的基础是经过验证的标准技术,并针对网络做最佳化。众多业界顶尖公司,与W3C的工作群组并肩合作,协助确保交互作业性,支持各式系统和浏览器上的开发人员、作者和使用者,以及改进XML标准。XML解释器可以使用编程的方法来载入一个XML的文档,当这个文档被载入以后,用户就可以通过XML文件对象模型来获取和操纵整个文档的信息,加快了网络运行速度。
  · 高效且可扩充。支持复用文档片断,使用者可以发明和使用自己的标签,也可与他人共享,可延伸性大,在XML中,可以定义无限量的一组标注。XML提供了一个标示结构化资料的架构。一个XML组件可以宣告与其相关的资料为零售价、营业税、书名、数量或其它任何数据元素。随着世界范围内的许多机构逐渐采用 XML标准,将会有更多的相关功能出现:一旦锁定资料,便可以使用任何方式透过电缆线传递,并在浏览器中呈现,或者转交到其他应用程序做进一步的处理。 XML提供了一个独立的运用程序的方法来共享数据,使用DTD,不同的组中的人就能够使用共同的DTD来交换数据。你的应用程序可以使用这个标准的DTD 来验证你接受到的数据是否有效,你也可以使用一个DTD来验证你自己的数据。
  · 国际化。标准国际化,且支持世界上大多数文字。这源于依靠它的统一代码的新的编码标准,这种编码标准支持世界上所有以主要语言编写的混合文本。在HTML 中,就大多数字处理而言,一个文档一般是用一种特殊语言写成的,不管是英语,还是日语或阿拉伯语,如果用户的软件不能阅读特殊语言的字符,那么他就不能使用该文档。但是能阅读XML语言的软件就能顺利处理这些不同语言字符的任意组合。因此,XML不仅能在不同的计算机系统之间交换信息,而且能跨国界和超越不同文化疆界交换信息。
3.XML在Web数据挖掘中的应用
  XML已经成为正式的规范,开发人员能够用XML 的格式标记和交换数据。XML在三层架构上为数据处理提供了很好的方法。使用可升级的三层模型,XML可以从存在的数据中产生出来,使用XML结构化的数据可以从商业规范和表现形式中分离出来。数据的集成、发送、处理和显示是下面过程中的每一个步骤:
  促进XML应用的是那些用标准的HTML无法完成的Web应用。这些应用从大的方面讲可以被分成以下四类:需要Web客户端在两个或更多异质数据库之间进行通信的应用;试图将大部分处理负载从Web服务器转到Web客户端的应用;需要Web客户端将同样的数据以不同的浏览形式提供给不同的用户的应用;需要智能Web代理根据个人用户的需要裁减信息内容的应用。显而易见,这些应用和Web的数据挖掘技术有着重要的联系,基于Web的数据挖掘必须依靠它们来实现。
  XML给基于Web的应用软件赋予了强大的功能和灵活性,因此它给开发者和用户带来了许多好处。比如进行更有意义的搜索,并且Web数据可被XML唯一地标识。没有XML,搜索软件必须了解每个数据库是如何构建的,但这实际上是不可能的,因为每个数据库描述数据的格式几乎都是不同的。由于不同来源数据的集成问题的存在,现在搜索多样的不兼容的数据库实际上是不可能的。XML能够使不同来源的结构化的数据很容易地结合在一起。软件代理商可以在中间层的服务器上对从后端数据库和其它应用处来的数据进行集成。然后,数据就能被发送到客户或其他服务器做进一步的集合、处理和分发。XML的扩展性和灵活性允许它描述不同种类应用软件中的数据,从描述搜集的Web页到数据记录,从而通过多种应用得到数据。同时,由于基于XML的数据是自我描述的,数据不需要有内部描述就能被交换和处理。利用XML,用户可以方便地进行本地计算和处理,XML格式的数据发送给客户后,客户可以用应用软件解析数据并对数据进行编辑和处理。使用者可以用不同的方法处理数据,而不仅仅是显示它。XML文档对象模式(DOM)允许用脚本或其他编程语言处理数据,数据计算不需要回到服务器就能进行。XML可以被利用来分离使用者观看数据的界面,使用简单灵活开放的格式,可以给Web创建功能强大的应用软件,而原来这些软件只能建立在高端数据库上。另外,数据发到桌面后,能够用多种方式显示。
  XML还可以通过以简单开放扩展的方式描述结构化的数据,XML补充了 HTML,被广泛地用来描述使用者界面。HTML描述数据的外观,而XML描述数据本身。由于数据显示与内容分开,XML定义的数据允许指定不同的显示方式,使数据更合理地表现出来。本地的数据能够以客户配置、使用者选择或其他标准决定的方式动态地表现出来。CSS和XSL为数据的显示提供了公布的机制。通过XML,数据可以粒状地更新。每当一部分数据变化后,不需要重发整个结构化的数据。变化的元素必须从服务器发送给客户,变化的数据不需要刷新整个使用者的界面就能够显示出来。但在目前,只要一条数据变化了,整一页都必须重建。这严重限制了服务器的升级性能。XML也允许加进其他数据,比如预测的温度。加入的信息能够进入存在的页面,不需要浏览器重新发一个新的页面。XML应用于客户需要与不同的数据源进行交互时,数据可能来自不同的数据库,它们都有各自不同的复杂格式。但客户与这些数据库间只通过一种标准语言进行交互,那就是XML。由于XML的自定义性及可扩展性,它足以表达各种类型的数据。客户收到数据后可以进行处理,也可以在不同数据库间进行传递。总之,在这类应用中,XML解决了数据的统一接口问题。但是,与其他的数据传递标准不同的是, XML并没有定义数据文件中数据出现的具体规范,而是在数据中附加TAG来表达数据的逻辑结构和含义。这使XML成为一种程序能自动理解的规范。
  XML应用于将大量运算负荷分布在客户端,即客户可根据自己的需求选择和制作不同的应用程序以处理数据,而服务器只须发出同一个XML文件。如按传统的 “Client/Server”工作方式,客户向服务器发出不同的请求,服务器分别予以响应,这不仅加重服务器本身的负荷,而且网络管理者还须事先调查各种不同的用户需求以做出相应不同的程序,但假如用户的需求繁杂而多变,则仍然将所有业务逻辑集中在服务器端是不合适的,因为服务器端的编程人员可能来不及满足众多的应用需求,也来不及跟上需求的变化,双方都很被动。应用XML则将处理数据的主动权交给了客户,服务器所作的只是尽可能完善、准确地将数据封装进XML文件中,正是各取所需、各司其职。XML的自解释性使客户端在收到数据的同时也理解数据的逻辑结构与含义,从而使广泛、通用的分布式计算成为可能。
  XML还被应用于网络代理,以便对所取得的信息进行编辑、增减以适应个人用户的需要。有些客户取得数据并不是为了直接使用而是为了根据需要组织自己的数据库。比方说,教育部门要建立一个庞大的题库,考试时将题库中的题目取出若干组成试卷,再将试卷封装进XML文件,接下来在各个学校让其通过一个过滤器,滤掉所有的答案,再发送到各个考生面前,未经过滤的内容则可直接送到老师手中,当然考试过后还可以再传送一份答案汇编。此外, XML文件中还可以包含进诸如难度系数、往年错误率等其他相关信息,这样只需几个小程序,同一个XML文件便可变成多个文件传送到不同的用户手中。
结束语
  面向Web的数据挖掘是一项复杂的技术,由于Web数据挖掘比单个数据仓库的挖掘要复杂的多,因而面向Web的数据挖掘成了一个难以解决的问题。而 XML的出现为解决Web数据挖掘的难题带来了机会。由于XML能够使不同来源的结构化的数据很容易地结合在一起,因而使搜索多样的不兼容的数据库能够成为可能,从而为解决Web数据挖掘难题带来了希望。XML的扩展性和灵活性允许XML描述不同种类应用软件中的数据,从而能描述搜集的Web页中的数据记录。同时,由于基于XML的数据是自我描述的,数据不需要有内部描述就能被交换和处理。作为表示结构化数据的一个工业标准,XML为组织、软件开发者、 Web站点和终端使用者提供了许多有利条件。相信在以后,随着XML作为在Web上交换数据的一种标准方式的出现,面向Web的数据挖掘将会变得非常轻松。

面向Web的数据挖掘已关闭评论
备案信息冀ICP 0007948