`

XHTML 和 MIME 类型

 
阅读更多

XHTML 和 MIME 类型 - 使用Web 标准生成 ASP.NET 2.0 Web 站点~

Posted on 2008-03-14 14:45 礼拜一 阅读(1165) 评论(1) 编辑 收藏

当 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>

转自:http://www.flywe.net/article.asp?id=133
分享到:
评论

相关推荐

    IIS设置MIME类型

    MIME类型由两部分组成:类型和子类型,用斜杠分隔。例如,“image/jpeg”表示JPEG格式的图片文件。“image”是类型,而“jpeg”是子类型。常见的MIME类型包括但不限于: - `text/html`:HTML文档 - `application/...

    关于mime type的文章

    例如,HTML文件的MIME类型是"application/xhtml+xml"或"text/html",而JPEG图片的MIME类型是"image/jpeg"。 2. **分类与常见类型** MIME类型分为多种类别,如文本、图像、音频、视频、应用等。常见的MIME类型包括...

    XHTML MP开发基础

    #### 二、XHTML MP 的 MIME 类型和文件扩展名 XHTML MP 支持多种 MIME 类型,这有助于不同类型的客户端正确解析和渲染页面。常见的 MIME 类型包括: 1. **application/vnd.wap.xhtml+xml** - 这是专门为某些 WAP ...

    http MIME资料大全

    MIME类型是每个Web请求和响应的一部分,用来告诉浏览器或其他接收端如何处理接收到的数据。以下是部分常见的MIME类型及其对应的文件扩展名和用途: 1. `application/acad`: 这个MIME类型用于表示AutoCAD的图纸文件...

    xhtml mp 基础(手机网站开发基础技术)

    **XHTML MP的MIME类型和文件扩展名** XHTML MP支持三种MIME类型: 1. `application/vnd.wap.xhtml+xml`:这是针对一些WAP浏览器,如某些诺基亚S60设备,以正确显示XHTML MP文档。 2. `application/xhtml+xml`:适用...

    精通XHTML程序设计高级教程

    2. 使用标签的type属性指明脚本的MIME类型是"text/javascript"。虽然这是默认值,但明确指定有助于浏览器更好地理解脚本内容。 3. 为了提高代码的组织性和可维护性,推荐将JavaScript代码放在单独的文件中,并通过...

    手机页面开发.docx

    除了语法规则,XHTML MP的MIME类型和文件扩展名也是开发中的关键因素。XHTML MP支持三种MIME类型:`application/vnd.wap.xhtml+xml`、`application/xhtml+xml`和`text/html`。第一种类型是专门为WAP浏览器设计的,如...

    手机网站开发基础技术

    其次,XHTML MP文档的MIME类型和文件扩展名是决定它们如何在不同设备上被识别和处理的关键。主要有三种MIME类型:1) `application/vnd.wap.xhtml+xml`,适用于某些WAP浏览器;2) `application/xhtml+xml`,代表XHTML...

    XHTML MP开发文档

    13. **正确使用MIME类型**:确保使用正确的MIME类型,并通过验证工具检查XHTML代码的正确性。 14. **描述性标签**:使用描述性强的页面标题和元素标签,提高内容可读性。 15. **可用性测试**:进行实际的可用性测试...

    Jmeter常见问题解决

    MIME类型是一种用来标识文件格式的标准,用于告诉Web服务器和客户端该文件应该如何被处理。 #### 三、MIME类型的配置方法 ##### 3.1 了解MIME类型 MIME类型由两部分组成:“类型”和“子类型”,中间用斜杠(/)...

    Series 60 Developer Platform: 设计XHTML MP 内容

    **2.13 使用正确的MIME类型和经过验证的XHTML代码** 使用正确的MIME类型(如`text/html`或`application/xhtml+xml`)可以确保内容被正确解析。同时,确保代码符合XHTML标准也是十分重要的。 **2.14 使用描述性页面...

    w3c标准 html标准验证 xhtml标准验证 css标准验证

    - 使用`type`属性指定样式表的MIME类型,如`type="text/css"`。 - 避免使用内联样式,优先使用CSS类。 - 遵循语义化HTML,使用适当的元素,如`&lt;header&gt;`、`&lt;nav&gt;`、`&lt;main&gt;`、`&lt;article&gt;`等。 通过遵循上述标准...

    如何正确地在XHTML文档中使用JavaScript和CSS

    但是,由于历史原因和浏览器兼容性问题,许多浏览器,尤其是较旧的浏览器,不支持这种MIME类型。例如,早期版本的Internet Explorer仅支持text/html的MIME类型。 XHTML文档的编写需要遵循严格的规则: 1. 文档内容...

    2、Web应用程序技术.docx

    Web 应用程序技术 本章节主要介绍了 Web 应用程序技术的基础知识,包括 HTTP 协议、服务器和客户端...表示浏览器支持 text/html、application/xhtml+xml、application/xml 等 MIME 类型,并且优先顺序从左到右排列。

    诺基亚 XHTML 常见问答

    20 什么是XHTML Mobile Profile文档的MIME类型?............................................................................9 21 如何链接WML和XHTML文档?.....................................................

    ContentType大全

    MIME类型是一种标准,用于标识互联网上的资源类型,如文本、图片、音频、视频等。正确设置`ContentType`能够确保浏览器知道如何处理服务器返回的数据,例如,将数据解释为HTML页面、JPEG图像、CSV文件等。 以下是...

Global site tag (gtag.js) - Google Analytics