首 页WAP教程WAP源码WAP电子书客户留言龙腾电脑维修网158网络电视本站论坛繁體中文
设为首页
加入收藏
联系我们
您当前的位置:WAP开发网 -> WAP教程 -> WAP 2.0 -> 文章内容 退出登录 用户管理
栏目导航
· ASP WAP开发教程 · ASP.net WAP开发教程
· PHP WAP开发教程 · WML教程
· JSP开发WAP教程 · WAP 2.0
· 综合杂谈
热门文章
· WAP 2.0教程
· WML语言基础(WAP建站...
· 用VS2005实现ASP.NE...
· [组图] php WAp开发教程
· WML语言基础(WAP建站...
· VS.NET 2003开发移动...
· [图文] ASP技术进行动态WAP...
· [图文] WML语言基础(WAP建站...
· asp.net移动控件开发...
· [图文] 创建移动Web应用程序...
相关文章
· [图文] WAP网站的网关服务器...
· [图文] ASP技术进行动态WAP...
· WAP技术和开发要点
· 解析WAP技术
· WAP网站服务器配置
· Wap页面使用asp.net...
· PHP与WAP技术
· php实现wap手机下载...
· 移软推出支持WAP2.0...
· WAP 2.0--XHTML mob...
使用 Web 标准生成 ASP.NET 2.0 Web 站点
作者:微软  来源:微软  发布时间:2006-2-19 12:27:20  发布人:tangyunfei

减小字体 增大字体


 

XHTML 和 MIME 类型

当 Web 浏览器从 Web 服务器请求页时,Web 服务器会为该页分配特定的 MIME 类型(也称为 Content 类型)。例如,HTML 页被分配为 text/html MIME 类型,GIF 图像被分配为 image/gif MIME 类型,而 Microsoft Word 文档被分配为 application/msword MIME 类型。

浏览器使用 MIME 类型来确定如何处理页(或其他资源)。例如,如果浏览器从 Web 服务器获得一个具有可识别图像 MIME 类型的文件,则浏览器尝试将该文件解释并呈现为图像。如果浏览器获得一个具有 application/msword MIME 类型的文件,则该浏览器可能自动打开 Microsoft Word 以显示该文档(这里的确切行为取决于浏览器及其配置方式)。

W3C 为 XHTML 文档引入了一个 MIME 类型。这一新的 MIME 类型是 application/xhtml+xml。W3C 建议您在提供 XHTML 文档时使用 application/xhtml+xml MIME 类型,因为 XHTML 页应该以比旧式 HTML 页更严格的方式进行解释。

通过在页指令中包含 ContentType 属性,为 ASP.NET 页分配特定的 MIME 类型。例如,在 ASP.NET 页的顶部包含以下指令会导致为该页分配 application/xhtml+xml 类型。

<%@ ContentType="application/xhtml+xml" %>

W3C 的推荐标准有一个突出问题:并非所有浏览器都能识别 application/xhtml+xml。特别需要指出的是,Internet Explorer(有史以来最为流行的 Web 浏览器)不能识别 application/xhtml+xml MIME 类型。因此,使用推荐的 application/xhtml+xml MIME 类型提供 XHTML 页不是一个可行的选择。

有三种解决该问题的方式。可以使用 text/html MIME 类型来提供 XHTML 页,或者使用 application/xml(或 text/xml)MIME 类型来提供 XHTML 页,也可以使用内容协商方式。让我们对上述每个选择进行探讨。

第一个选择 — 以 text/html 类型提供页 — 是最容易的选择。默认情况下,ASP.NET 页被分配为该 MIME 类型。更好的做法是,按照 W3C 的建议,在向现有的 HTML 浏览器提供页时使用这一选择(请参阅 http://www.w3.org/TR/xhtml-media-types/)。如果创建的是 XHTML 1.0 Transitional 页,并且 Web 应用程序的主要受众使用不能理解 application/xhtml+xml MIME 类型的浏览器,那么以 text/html 类型提供页似乎十分明智。毕竟,引入 XHTML 1.0 Transitional 标准的目的是使开发人员能够更为容易地将现有的 HTML 页迁移到 XHTML。

这一主张是有争议的。例如,Ian Hickson 认为,绝不应该以 text/html 类型提供 XHTML 页,因为这样会导致随便的、不标准的 XHTML 页(请参阅 http://hixie.ch/advocacy/xhtml)。他建议作者们继续坚持使用 HTML 4.0,直到更多的浏览器完全支持 XHTML 标准为止。

第二个选择是使用 application/xml 或 text/xml MIME 类型,以 XML 类型提供 XHTML 页。在向 Internet Explorer 提供 XML 文档时,该文档会作为 XML 文档进行分析并呈现到浏览器中。(该文档由 document.XMLDocument 对象公开的 XML DOM 表示。)

以 XML 类型提供 XHTML 文档的优点是,XHTML 文档具有的任何问题都会被 Internet Explorer 的 XML 分析器捕获。例如,如果文档包含重叠标记,或者如果没有将属性的值包装到引号内,则不会呈现该文档,并且会显示错误信息(参见图 4)。XHTML 纯粹主义者认为该行为是一件好事,因为它可以防止您编写格式错误的 XHTML。


4. Internet Explorer 中显示 XML

该方法的问题是:默认情况下,Internet Explorer 呈现 XML 文档的源代码。因此,如果以 XML 类型提供 XHTML 文档,则 Web 站点访问者将看到 XHTML 文档的源代码,而不是预期的呈现输出。W3C 推荐了一个用来解决该问题的“窍门”(请参阅 http://www.w3.org/MarkUp/2004/xhtml-faq#ie):如果通过使用 XSLT 转换将 XHTML 文档转换为 HTML,那么文档将分析为 XML 并显示为 HTML。

例如,清单 1 中的 ASP.NET 页将以 XML 文档的形式提供,但被转换为 HTML 文档。结果页会正确地显示在 Internet Explorer、Opera 和 Firefox 中。

清单 1. XMLPage.aspx

<%@ Page Language="VB" ContentType="text/xml" %> 
<?xml-stylesheet type="text/xsl" href="copy.xsl"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>My Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <asp:TextBox ID="txtFirstName" runat="server" /> 
    </div> 
    </form> 
</body> 
</html>

页指令会导致该页以 text/xml 类型呈现。清单中的第二行引用了一个名为 copy.xsl 的 XSLT 样式表,它会对当前文档执行标识转换。换句话说,除了将原始XML 文档中的所有元素复制到新的 HTML 文档中以外,它根本没有做任何事情。copy.xsl 的源代码包含在清单 2 中。

清单 2. Copy.xsl

<stylesheet version="1.0" 
     xmlns="http://www.w3.org/1999/XSL/Transform"> 
  <template match="/"> 
    <copy-of select="."/> 
  </template> 
</stylesheet>

该解决方案是有效的,但它似乎不是很精彩。当分析 XML 文档时,的确获得了额外的验证步骤。但是,如果在 Visual Studio .NET 2005 或 Visual Web Developer 中生成 ASP.NET 页,那么开发环境会在“Source”视图中执行相同的验证。最后,Internet Explorer 将收到与向它发送 text/html 类型文档时相同的文档。

第三个选择 — 内容协商,将 W3C 推荐标准的精神与最大程度的浏览器兼容性最佳地组合在一起(请参阅 http://www.w3.org/2003/01/xhtml-mimetype/content-negotiation)。当使用内容协商时,会以不同的 MIME 类型向不同的浏览器提供 ASP.NET 页。如果浏览器声称它支持 XHTML,则向它提供 XHTML 类型的页;否则,以 text/html MIME 类型向该浏览器提供页。

清单 3 中的 Global.asax 包含向不同的浏览器提供不同 MIME 类型页所需的代码。如果将该文件添加到 Web 项目中,则每个 ASP.NET 页的 MIME 类型都会随着每个请求而修改。将页提供给 Firefox 或 Opera 时,该页以 application/xhtml+xml 类型提供。另一方面,Internet Explorer 6 会收到 text/html 页。

清单 3. Global.asax

<script runat="server"> 
    Sub Application_PreSendRequestHeaders(ByVal s As Object, _ 
      ByVal e As EventArgs) 
        If Array.IndexOf(Request.AcceptTypes, _ 
          "application/xhtml+xml") > -1 Then 
            Response.ContentType = "application/xhtml+xml" 
        End If 
    End Sub 
</script>

 

配置 XHTML 一致性

ASP.NET 2.0 框架的默认行为是呈现针对 XHTML 1.0 Transitional 能够通过验证的页。生成 Web 站点的大多数开发人员都希望面向该标准,因为它是与现有 HTML 页最为兼容的标准。但是,在某些情况下,该标准可能显得太松散或太严格。

例如,如果您志向远大,那您也许要生成 XHTML 1.0 Strict(甚至 XHTML 1.1)的 Web 站点。毕竟,XHTML 1.0 Transitional 标准的目标是充当通往这些更具限制性标准的跳板。默认情况下,因为 ASP.NET 2.0 框架面向 XHTML 1.0 Transitional,所以某些 ASP.NET 控件会呈现与 XHTML 1.0 Strict 或 XHTML 1.1 不兼容的属性。

而且,有时您还可能发现 XHTML 1.0 Transitional 标准的限制性过高。Microsoft 必须对现有 ASP.NET 1.1 控件进行多项更改才能符合 XHTML 1.0 Transitional 标准。其中一些更改可能会破坏现有的 ASP.NET 1.1 Web 站点。

为了满足每个人的要求,Microsoft 创建了一个名为 xhtmlConformance 的新配置选项,您可以在 Web 站点的配置文件中设置该选项。新的配置选项使您能够指定 Web 页的 XHTML 一致性的级别。它的内容如下所示。

<configuration> 
<system.web> 
    <xhtmlConformance  
        mode="transitional" /> 
</system.web> 
</configuration>

默认情况下,xhtmlConformance 设置为值 transitional。但是,还可以将该选项设置为值 strictlegacy

如果将 xhtmlConformance 选项设置为 strict,那么标准的 ASP.NET 控件将不会再呈现某些属性。例如,ASP.NET <form> 控件将不再呈现 name 属性。除非 ASP.NET 页包含(不符合标准的)客户端脚本,否则从 transitional 模式切换到 strict 模式时,不会注意到任何变化。

如果将 xhtmlConformance 选项设置为 legacy,那么对于某些元素和属性(但不是全部),ASP.NET 框架将恢复为 ASP.NET 1.1 呈现行为。在这种情况下,ASP.NET 框架将呈现不与任何 XHTML 标准兼容的内容,并且页将不再通过 XHTML 标准验证。例如,在 legacy 模式下,呈现 <br> 标记时不会呈现它需要的 XHTML 结束斜杠 (<br />)。只有在将现有 ASP.NET 1.1 应用程序迁移到 ASP.NET 2.0 的过程中遇到问题时,将 xhtmlConformance 设置为 legacy 模式才是有意义的。


 

上一页  [1] [2] [3] [4] [5] [6] [7] 

[] [返回上一页] [打 印] [收 藏]
上一篇文章:WAP(wml)开发FAQ
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 管理登录
Copyright © 2002-2005 wapkf.com. All Rights Reserved .
浙ICP备06013604号|站长QQ:274273595