XML的定义

xml

     读者可能会觉得在一本A S P书中讲述本章内容不太合适,事实上扩展标记语言( e X t e n s i b l eMarkup Language,X M L )正在越来越深入我们的生活,这是一件好事。X M L可以跨越所有边界,要获得真正独立的、跨平台的数据传送格式, X M L可能是唯一的选择。
    这种说法可能会令人感到沮丧,但在计算机业内X M L几乎得到了所有大型(或小型)开发厂商的认可。标准能达到如此的统一,过去也只有在T C P / I P协议被采纳为网络协议的标准时出现过这种现象。X M L是一种国际标准,受一个工业标准团体的控制,得到全世界的广泛支持,并成为为数不多的只有一个标准的技术之一。
    读者可能会觉得很奇怪,当今世界各种标准的变化就像季节更替一样频繁,即使是单个标准也被多个公司分成数段以追求竞争优势。然而, X M L却是个例外,因为它确实获得了许多公司的广泛支持。令人惊奇的是所有的人似乎都在努力实现并遵循这种唯一的标准。如果回想一下过去给工业界造成那么多麻烦的有关标准问题的争论, X M L就更令人惊奇了。
    既然X M L是一个被普遍实现的标准,因此,在A S P中使用它也很简单。如果使用A S P创建一个We b站点,那么很有可能会使用某种形式的数据库来存储数据。而X M L是另一种存储数据的格式,其应用也越来越广泛,因此必须掌握它。当然X M L的功能不仅于此。
    尽管立刻得到全面支持还不大可能,但我们已经看到X M L支持确实已引入到I E和A D O中。困难在于I E和A D O的发展速度不一致,所以它们之间的交互还不够理想,故本章没有介绍人们所希望的有关数据传输的万能技术。在写这本书时, I E和A D O的结合还不是紧密,但它们都在不断改进。所以尽管现在还没有新版本发布的具体消息,但A D O和I E将来肯定会更好地结合。
    在给X M L一个明确的定义之前,最好了解什么是标记语言。首先这里有一个问题,因为“语言”这个术语用得并不恰当。实际上, X M L并不是编程语言,而V B或C + +才是真正的编程语言,X M L只是定义了如何标记文本或文档的一套规则。那么“标记”又是指什么?标记一个文档是指标识出文档的某些部分有特殊含义的过程。这可能难以理解,我们举一个有关超文本标记语言(Hypertext Markup Language,H T M L )的例子,因为“H T M L”中的“M”就代表了标记( M a r k u p )。
    H T M L是一套规定文档布局的标记。H T M L包含了一些预先定义好的标记,每一种标记都有各自的含义,例如:

    这是一个含有少量标记的文本。文本以< B O D Y >标记开始,在H T M L里,该标记表示文档主体的开始,主体部分以< / B O D Y >标记结束。在这个文档的主体内有标题,放在< H 1 >和< / H 1 >标记之间;另外还有一些粗体文本,放在< B >和< / B >标记之间。这些文本标记为有特殊含义的文本。
    你可能注意到上面的例子没有使用格式化这个词。这是经过仔细考虑的,因为标记和格式化并不是一回事。< B O D Y >标记标定的是文档的一块区域,并没有定义任何格式。然而,< B >标记却标定文档的这一块区域用粗体显示。这是因为H T M L中的< B >标记是隐含了指定格式的标记。
    所以请记住,标记语言只是一种规则,定义了如何给一篇文档中的特定部分增加特殊含义。这种定义可能会起到很好的格式化作用,但这并不是使用标记的唯一原因。
11.1.1 XML和H T M L的差别
    尽管X M L和H T M L都使用标记,但是它们是不同的。其中最主要的区别是X M L专门用来描述文本的结构,而不是用于描述如何显示文本。X M L并没有一套固定的标记,例如:

    上面的代码看起来与上一节的H T M L代码不是完全一样吗?如果它是H T M L文档,的确一样。如果把其加载到浏览器,以上内容就会显示如图11 - 1所示的结果,其作用好像是格式化文档。

    但是,如果上面的代码是X M L文档,那么其中的标记就不具有任何含义,其内容只是说明:
    ? 有一个名为B O D Y的标记,在这个标记里面有一些文本。
    ? 有一个名为H 1的标记,在这个标记里面有一些文本。
    ? 有一个名为B的标记,在这个标记里面有一些文本。
    如果以上代码作为一个X M L文档(文件的扩展名为. x m l )加载到I E浏览器中,可以看得非常清楚,其结果如图11 - 2所示。

    I E解释该X M L文档并将其显示出来。请注意, I E并没对这个X M L文档做任何处理,仅仅是显示出来而已。浏览器知道如何解释H T M L文档,并且知道如何用标记所定义的格式来显示文档。同样,浏览器也知道如何解释X M L文档,但由于X M L标记不定义格式,所以文档不会得到格式化,于是原样显示这些标记。
    但I E实际上还是做了一点格式编排,使X M L更易读了。它把标记分为不同的层次,所以我们看到了一套结构化的标记,且I E没有解释这些标记。
    迄今为止所学的X M L文档由标记文档某些部分的标记组成。那么X M L使用数据会有什么问题呢,再看另一个例子。这个例子在前面的章节中出现过,读者会发现X M L在这里十分有意义。

    上面的例子中使用了几对不同的标记。一开始,你可能会认为这些标记一定有其含义。他们都有一个有意义的名称,定义了A u t h o r的一个列表、单个A u t h o r以及一些与A u t h o r有关的值。在前面的章节中,这些内容出现了多次,当在一个浏览器中查看时,我们可以把它格式化成一个表来显示。但因为这是X M L,X M L中的标记不代表任何意义,如图11 - 3所示。

    可见,这里I E没有对其进行任何处理。所以即使这些标记对我们来说是有意义的,但它们对X M L却没有。事实上,这段代码可以写成如下形式:

    浏览器只是把这些标记原封不动地显示出来,如图11 - 4所示。
    标记可以是你所喜欢的任意符号。当然,一开始就给其一个有意义的名字是很直观的。X M L的可读性十分强,所以一般使用能描述其内容的标记名字。
    在此,已经看到X M L由一系列能描述文档各部分的标记组成。在以上使用A u t h o r信息的例子中,使用X M L来描述数据,使用了代表数据字段名的标记名。这就是X M L能作为一种数据交换格式的真正含义。它是标准的文本,所以可以很容易地从一台机器传送到另一台机器。但它并不是一种专用格式,所以任何人都可以读懂,并且如果标记名取得有意义的话, X M L数据就具有“自我描述”的功能。

11.1.2 标记和元素
    使用了“标记”这个名字来确定某些H T M L的标记,比如< B >或< H 1 >。元素是指利用这些标记而形成的一个整体。例如:

    因此,一个元素由一个开始标记和一个结束标记组成,它们把文本包围在中间,其中也可以包括其他子元素。这一点很重要,因为这牵涉到一个“形式化的X M L”的概念,其中每一个开始标记都必须有一个对应的结束标记。这一点与HTML 4.0及其以前的版本不同,在那些H T M L版本中,某些标记没有结束标记(例如< I M G >和< B R > )和< P >标记。
    如果使用X M L来描述数据,有可能在一些域中不包含数据。在这种情况下,标记就为空。在X M L中有两种方法可以定义空标记。第一种方法是使用一个开始标记和一个结束标记,但其中没有内容:

    形式化的X M L的另一层含义是X M L的标记是大小写敏感的,所以在这种情况下开始标记和结束标记必须一致。这也意味着下面这一行是无效的X M L:

    1. 根标记
    另一个需要知道的术语是根标记。它表示最外层的标记,一个X M L文档只能有一个根。例如再来看看A u t h o r的例子:

    这里的根标记是< A u t h o r s >。因为这里只有一个根标记,故以上表述是合法的。但下面的代码是错误的:


11.1.3 模式和文档类型定义
    我们一开始就声明了X M L标记实际上不代表任何意义,可以给标记取任何名字,但怎么才能知道什么类型的标记在文档中是允许使用的?因此必须使用文档类型定义( D o c u m e n tType Definition,D T D )或模式( S c h e m a )。模式和D T D的功能几乎是一样的,都规定了哪些元素在文档中可以使用,并可以把一个形式化的X M L文档转变为一个有效的X M L文档。也就是说它被正确标记(即有良好形式),并且只包含允许的元素和属性。
    既用D T D也用模式的原因是因为微软觉得D T D在有些地方显得比较笨拙。D T D是一种定义X M L文档结构的文本文件,但D T D本身并不是X M L,有完全不同的语法规则。这就有点反常,所以在这一点上我们赞成微软的观点。如果处理X M L文档,那么定义那些文档的结构也应该是X M L,这就是模式所做的,即模式是D T D的X M L等价物。








时间: 2024-11-05 12:16:17

XML的定义的相关文章

JSP取得在WEB.XML中定义的参数

js|web|xml 在WEB.XML文件中设置参数: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <we

了解WEB页面工具语言XML(二)定义

web|xml|页面 二.XML的定义 XML是一个精简的SGML,它将SGML的丰富功能与HTML的易用性结合到Web的应用中.XML保留了SGML的可扩展功能,这使XML从根本上有别于HTML.XML要比HTML强大得多,它不再是固定的标记,而是允许定义数量不限的标记来描述文档中的资料,允许嵌套的信息结构.HTML只是Web显示数据的通用方法,而XML提供了一个直接处理 Web 数据的通用方法.HTML着重描述Web页面的显示格式,而XML着重描述的是Web页面的内容. XML中包括可扩展格

使用XML Schema定义元素的基本知识

新的 XML Schema 系统即将成为 W3C 推荐标准,目的是为了克服 DTD 的局限性(请参阅侧栏, DTD 的局限性 ),为 XML 文档提供丰富的语法结构.本文展示了模式的灵活性,说明如何使用 XML Schema 系统来定义最基本的 XML 文档构造块--元素. XML Schema 比 DTD 更强大.为了说明 XML Schema 机制的强大功能,下面三个程序清单简要比较了表示元素的不同方式. 清单 1给出了一个 XML 文档段, 清单 2用 DTD 语法声明了这两个元素, 清单

android开发-自定义roundProgressBar,在xml中定义组件属性,无法生效

问题描述 自定义roundProgressBar,在xml中定义组件属性,无法生效 我从网上找到了自定义roundProgressBar的代码,使用之后,发现在xml中定义组建的属性没有作用,生成的roundProgressBar只是使用了默认配置 attributes: <!-- max 最大进度 startAngle 进度从圆环的哪个角度开始走 backColor 圆环内部的填充色 roundColor 圆环的颜色 roundProgressColor 圆环进度的颜色 roundWidth

如何在XML中定义菜单_Android

和Android UI layout一样,我们也可以在XML中定义应用程序的菜单.通过在菜单的onCreateOptionsMenu方法中膨胀菜单layout.这样做会使我们的程序代码简单多了,而且尽可能的将更多的界面设计部分放到XML,便于浏览. 1. 在工程的/res/文件夹下创建menu文件夹,用来保存你为应用程序定义的菜单XML文件. 在菜单XML layout中,有三个有效的元素:menu.group.item.item和group必须是menu的子元素,且item必须是group的子

了解WEB页面工具语言XML(二)定义_XML/RSS

二.XML的定义 XML是一个精简的SGML,它将SGML的丰富功能与HTML的易用性结合到Web的应用中.XML保留了SGML的可扩展功能,这使XML从根本上有别于HTML.XML要比HTML强大得多,它不再是固定的标记,而是允许定义数量不限的标记来描述文档中的资料,允许嵌套的信息结构.HTML只是Web显示数据的通用方法,而XML提供了一个直接处理 Web 数据的通用方法.HTML着重描述Web页面的显示格式,而XML着重描述的是Web页面的内容. XML中包括可扩展格式语言XSL(Exte

JSP取得在WEB.XML中定义的参数_XML/RSS

在WEB.XML文件中设置参数: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> 

如何在XML中定义菜单

和Android UI layout一样,我们也可以在XML中定义应用程序的菜单.通过在菜单的onCreateOptionsMenu方法中膨胀菜单layout.这样做会使我们的程序代码简单多了,而且尽可能的将更多的界面设计部分放到XML,便于浏览. 1. 在工程的/res/文件夹下创建menu文件夹,用来保存你为应用程序定义的菜单XML文件. 在菜单XML layout中,有三个有效的元素:menu.group.item.item和group必须是menu的子元素,且item必须是group的子

通过Java编程处理XML服务定义

自助服务趋势 对于大多数服务提供商来说,自助服务正在发展为一种趋势 - 特别是那些资金紧张的ISP.因此,如果您需要更多带宽(进行下载或玩在线游戏),您可以登录到提供商的Web站点并通过Web页面自动升级与提供商的连接.让我们看一个具体的例子:清单1展示了一个简单的基于XML的用户服务配置文件. 清单1. 一个简单的基于XML的服务描述 <ServiceInstance> <Customer>Josephine Bloggs</Customer> <Package