1、格式良好的格式良好的XML文档文档有效的有效的XML文档文档DTD文档文档Schema文档文档CSS层叠样式表层叠样式表XSL文档文档 DSO DSO简介简介 使用使用DSODSO显示显示XMLXML元素元素 使用使用DSODSO显示分页、嵌套显示分页、嵌套XMLXML元素元素 使用使用DSODSO显示图像元素显示图像元素 使用使用DSODSO与与ScriptScript编程编程 (用用 DSO DSO 和和 XSLT XSLT 切换样式、浏览、切换样式、浏览、查询、编辑、添加元素查询、编辑、添加元素)从数据库这个属于的本质来看,从数据库这个属于的本质来看,XML文档就文档就是数据库,它是数据
2、的集合;从是数据库,它是数据的集合;从XML的结构来的结构来看,看,XML文档是层状数据库系统,在某一层的文档是层状数据库系统,在某一层的局部看来,相当于关系型数据库,即二维表;因局部看来,相当于关系型数据库,即二维表;因此,此,XML文件可以作为网页中数据的来源,层文件可以作为网页中数据的来源,层状的系统结构,适合信息的层次分类。在状的系统结构,适合信息的层次分类。在J2EE和和.NET两大体系结构中广泛采用两大体系结构中广泛采用XML文件作为文件作为应用系统各项参数的配置文件。应用系统各项参数的配置文件。XML文档所包含的信息可以被提取,并且在文档所包含的信息可以被提取,并且在HTML页面
3、中予以显示,页面中予以显示,DSO是是XML信息显示信息显示的重要机制。的重要机制。在在HTML文档中可以通过使用文档中可以通过使用XML标签的形标签的形式嵌入式嵌入XML数据(从数据(从IE5开始引入的一项技术),开始引入的一项技术),将将XML文档与文档与HTML文档绑定,当文档绑定,当IE打开这种打开这种与与XML文档绑定的文档绑定的HTML文档时,其内置的文档时,其内置的XML处理器会读取并分析所绑定的处理器会读取并分析所绑定的XML文档,文档,同时创建一个可程序化的数据源对象同时创建一个可程序化的数据源对象DSO(Data Source Object),负责存储和访问,负责存储和访问
4、XML文档的数文档的数据。据。DSO将将XML数据存储成数据存储成Recordset(记录集)(记录集)的形式,从而形成一个嵌入在的形式,从而形成一个嵌入在HTML文档中的文档中的数数据岛据岛。使用使用DSO,借助,借助HTML网页来显示网页来显示XML文档文档内容,既能保持内容,既能保持XML文档数据与其显示格式分文档数据与其显示格式分离的特点,又具备离的特点,又具备HTML网页的丰富显示格式网页的丰富显示格式。DSO example示例 学校名称 城市学生人数例题演示见:例题演示见:Example1.xml和和Example1.html 1、DSO技术只能对那些以技术只能对那些以对称形式对
5、称形式构建的构建的XML文档才会有效,就像典型的数据库一样,文档才会有效,就像典型的数据库一样,这种对称结构的这种对称结构的XML文档元素可以被解释成一文档元素可以被解释成一组记录与字段集合。在最常见的情况下,这种文组记录与字段集合。在最常见的情况下,这种文档的根元素包含了一连串相同形式的下层元素,档的根元素包含了一连串相同形式的下层元素,每一个相同形式的下层元素相当于一条数据记录;每一个相同形式的下层元素相当于一条数据记录;而每一条这样的数据记录拥有一组相同的子元素,而每一条这样的数据记录拥有一组相同的子元素,每个子元素相当于一个字段,且都包含字符数据。每个子元素相当于一个字段,且都包含字符
6、数据。2、要使用、要使用 DSO,则根,则根 XML 元素必须不能具元素必须不能具有任何属性。有任何属性。有两种不同形式的数据岛有两种不同形式的数据岛1内部数据岛内部数据岛 内部数据岛是将内部数据岛是将XML文档的全部内容放在文档的全部内容放在HTML文档中特定的文档中特定的XML元素的起始标记与结元素的起始标记与结束标记之间,并在束标记之间,并在XML起始标记中给出这个数起始标记中给出这个数据岛的据岛的ID标识。标识。2外部数据岛(常用)外部数据岛(常用)外部数据岛是在名为外部数据岛是在名为XML的的HTML元素中仅元素中仅包含所需绑定的包含所需绑定的XML文档的文档的URL及其及其ID标识
7、。标识。.”function load()var xmlDso=school.XMLDocument;xmlDso.load(schooldb.xml);”);.XML 文档文档内部数据岛内部数据岛外部数据岛外部数据岛XML 数据 (1)把要显示的)把要显示的XML文档绑定到一个文档绑定到一个HTML文档文档中中。通过。通过在在HTML文档中添加一个名为文档中添加一个名为XML的特的特定元素定元素来实现。来实现。上例中,位于上例中,位于HTML文档中的一行代码,文档中的一行代码,添加一个名为添加一个名为“XMLData”的的XML特定元素特定元素到到HTML文档中,来实现将文档中,来实现将Ex
8、ample1.xml文档绑文档绑定到定到Example1.html文档中,相当于在内存中生成文档中,相当于在内存中生成一个数据库一个数据库 id“XMLData”这个这个id是可以自定义的是可以自定义的。绑定代码位置任意,一般放在绑定代码位置任意,一般放在标签之标签之后。后。第一种方法第一种方法是将全部是将全部XML元素绑定到元素绑定到HTML文档的文档的TABLE元素元素,使得,使得HTML网页中网页中的表格能够自动显示的表格能够自动显示XML文档的记录集合。此文档的记录集合。此时应在时应在标记中添加标记中添加DATASRC属性,并属性,并将一个自定义的数据源对象名称(数据岛标识符)将一个自
9、定义的数据源对象名称(数据岛标识符)作为其属性值。作为其属性值。如:上例中,位于如:上例中,位于HTML文档中的一行代码,文档中的一行代码,表格能够显示表格能够显示XML的所有元素,自身隐含循环,的所有元素,自身隐含循环,有多少条记录,就有多少行的表格。有多少条记录,就有多少行的表格。两个标签:两个标签:datasrc=“#stuData”datafld=“title”一个是一个是datasrc,它表明该,它表明该table使用哪使用哪个数据源,后面是个数据源,后面是“#XMLData”,这个,这个#是一个标示,后面呢则是是一个标示,后面呢则是XML id=“XMLData”中的中的id,表明
10、,表明table用的是用的是这个数据源。这个数据源。而而datafld表明它绑定的是表明它绑定的是xml文档中元文档中元素素title。DSO example示例 学校名称 城市学生人数链接的 XML 文档,数据源创建一个表格,并将 XML 文档与表格元素关联进一步将所需的 XML 元素与表格的具体列元素关联访问 XML 文档中的所有记录例题见:例题见:Example1.xml和和Example1.html 第二种方法第二种方法是将指定的是将指定的XML元素绑元素绑定到定到HTML文档的其他特定元素,如果要文档的其他特定元素,如果要显示当前的元素,可以直接用显示当前的元素,可以直接用SPAN、
11、DIV标记,无需绑定表格,同时,需使用标记,无需绑定表格,同时,需使用DATAFLD属性来指定所绑定的属性来指定所绑定的XML文档文档中的某个字段,采用此种方法一次只能显中的某个字段,采用此种方法一次只能显示一条记录或记录中的一个字段。示一条记录或记录中的一个字段。.XML 数据岛datasrcdataflddataflddatafld例题见:例题见:Example1.xml和和Example2.html 并非所有的并非所有的HTML元素都能与元素都能与XML数数据岛绑定。目前,支持这种据岛绑定。目前,支持这种DSO绑定机制绑定机制的元素如下:的元素如下:A、APPLET、BUTTON、DIV
12、、FRAME、IFRAME、IMG、INPUT(此处类型是:此处类型是:CHECKBOX、HIDDEN、LABEL、PASSWORD、RADIO和和TEXT)、LABEL、MARQUEE、SELECT、SPAN、TABLE和和 TEXTAREA。将将XML文档作为数据源对象并绑定到文档作为数据源对象并绑定到HTML文档的文档的TABLE元素之后,元素之后,XML文文档中的每一个记录的数据都会被分别显示档中的每一个记录的数据都会被分别显示在在HTML网页的不同表格行中,而网页的不同表格行中,而XML记记录元素中的每一个字段数据则会被分别显录元素中的每一个字段数据则会被分别显示于不同的表格栏中。示
13、于不同的表格栏中。上例中的上例中的Example1.html文档包含了一个表格文档包含了一个表格元素元素TABLE,该元素与一个标识符为,该元素与一个标识符为XMLData的数据岛(数据源)进行了绑定。的数据岛(数据源)进行了绑定。表格元素表格元素TABLE中的每一个中的每一个TD元素都包含了元素都包含了一个一个SPAN元素,这个元素,这个SPAN 元素被绑定至元素被绑定至XML文档记录的某个字段,以便让该元素能够显示对文档记录的某个字段,以便让该元素能够显示对应字段的内容,从而实现将应字段的内容,从而实现将XML文档的记录数文档的记录数据在表格中逐行显示出来。据在表格中逐行显示出来。使用嵌套
14、表格来显示较复杂的特定使用嵌套表格来显示较复杂的特定XML文档(其中的每一条文档(其中的每一条XML记录除了记录除了固定的一组字段之外,还允许包含零个或固定的一组字段之外,还允许包含零个或多个嵌套的记录)的记录数据,不仅需要多个嵌套的记录)的记录数据,不仅需要将整个表格绑定到将整个表格绑定到XML文档,同时还须将文档,同时还须将被嵌套的内层表格绑定到被嵌套的内层表格绑定到XML文档的内层文档的内层记录元素,如此整个表格才会以嵌套方式记录元素,如此整个表格才会以嵌套方式显示当前记录内的每一个元素的内容。显示当前记录内的每一个元素的内容。例题见:例题见:Example2.xml和和Example3
15、.html 要实现被绑定的要实现被绑定的XML文档中的众多记录用分页的表文档中的众多记录用分页的表格来显示,需执行下列步骤:格来显示,需执行下列步骤:(1)将被绑定的)将被绑定的TABLE 元素的元素的DATAPAGESIZE 属性设属性设定成希望每一页显示的记录个数。定成希望每一页显示的记录个数。(2)为被绑定的)为被绑定的TABLE 元素的元素的ID 属性指定一个唯一的属性指定一个唯一的识别代号。识别代号。(3)要实现在各个表格页之间翻页浏览,还需使用脚本)要实现在各个表格页之间翻页浏览,还需使用脚本程序调用程序调用DSO提供的用于控制分页显示的方法,如提供的用于控制分页显示的方法,如fi
16、rstPage()、previousPage()、nextPage()、lastPage()。可。可以使用最简单的方式,就是将方法直接设定到以使用最简单的方式,就是将方法直接设定到BUTTON元元素的素的ONCLICK属性中。属性中。例题见:例题见:Example1.xml和和Example4.html 使用使用DSO技术,还可以把技术,还可以把XML文档元素绑定文档元素绑定到除到除TABLE和和SPAN之外的其他之外的其他HTML元素,以元素,以实现特定实现特定XML数据的显示功能。这些数据的显示功能。这些HTML元元素包括素包括DIV、BUTTON、IMG等。等。如果将如果将XML文档的图
17、像元素绑定到文档的图像元素绑定到HTML的的IMG元素,即可方便地实现在网页中显示出对应元素,即可方便地实现在网页中显示出对应的图像。的图像。例题见:例题见:picture.xml和和picture_test.htmlpicture.html和和picture.xml1、编写、编写XML教师信息文档,采用教师信息文档,采用DSO技术、使用技术、使用简单表格简单表格显示文显示文档信息。档信息。XML文档结构描述:教师信息文档结构描述:教师信息(教师教师(工号、姓名、年龄、性别、工号、姓名、年龄、性别、所属系等所属系等)2、将上述、将上述XML文档结构改为:文档结构改为:XML文档结构描述:教师信
18、息文档结构描述:教师信息(教师教师(工号、姓名、年龄、性别、工号、姓名、年龄、性别、所属系、所属系、工资(岗位工资、津贴、工龄工资等)工资(岗位工资、津贴、工龄工资等)等等)采用采用DSO技术、使用技术、使用嵌套表格嵌套表格显示该文档信息。显示该文档信息。3、将上述、将上述XML文档结构改为:文档结构改为:XML文档结构描述:教师信息文档结构描述:教师信息(教师教师(工号、姓名、年龄、工号、姓名、年龄、照片、照片、性别、所属系、工资(岗位工资、津贴、工龄工资等)等性别、所属系、工资(岗位工资、津贴、工龄工资等)等)采用采用DSO技术、技术、照片显示为图片照片显示为图片、采用、采用分页分页显示该
19、文档信息。显示该文档信息。注意注意:XML文档中的元素名、属性名均要求采用英文。文档中的元素名、属性名均要求采用英文。教师信息的子元素教师至少要有四个以上。教师信息的子元素教师至少要有四个以上。将将XML文档与文档与HTML文档绑定之后,在内文档绑定之后,在内存中生成的记录集合是一个属于存中生成的记录集合是一个属于DSO的的recordset对象。该对象提供了一组符合对象。该对象提供了一组符合Microsoft 的的ADO标准数据访问技术的方法和属性,因而可以通过标准数据访问技术的方法和属性,因而可以通过script编程调用这些方法和属性来对记录集进行编程调用这些方法和属性来对记录集进行访问和
20、处理。访问和处理。可以根据需要调用可以根据需要调用recordset对象的任何一对象的任何一个方法来撰写有关的个方法来撰写有关的script程序。在程序。在HTML文档文档中通过将某个方法直接指定到中通过将某个方法直接指定到BUTTON元素的元素的ONCLICK属性中,进行调用。属性中,进行调用。属性absolutePageabsolutePositionBOFcacheSizeEOFmaxRecords pageCountpageSize recordCount一次访问一条记录Recordset 对象对象DSO数据方法addNew()Delete()getRows()move()moveFi
21、rst()moveLast()movePrevious()pageSize()moveNext()Recordset 对象对象 例题见:例题见:Example1.xml和和Example5.html 使用使用DSO与与Script编程实现浏览编程实现浏览DSO记记录,让浏览者随意地浏览第一个、前一个、录,让浏览者随意地浏览第一个、前一个、下一个与最后一个数据记录。下一个与最后一个数据记录。例题见:例题见:Example3.xml和和Example6.html 使用使用DSO与与Script编程不仅可用来一次显示一条编程不仅可用来一次显示一条DSO中的数据记录,还可以在网页的文本框中对显示的数据
22、中的数据记录,还可以在网页的文本框中对显示的数据进行编辑修改。而且还可以使用进行编辑修改。而且还可以使用recordset 对象的对象的addNew()方法设置一个方法设置一个“添加记录添加记录”的按钮,实现向数的按钮,实现向数据岛添加记录。据岛添加记录。例题见:例题见:Example3.xml和和Example7.html 注意:注意:使用使用DSO对数据岛的记录进行编辑与添加,只对数据岛的记录进行编辑与添加,只是在客户端的浏览器中对数据岛的记录数据进行修改和是在客户端的浏览器中对数据岛的记录数据进行修改和添加的,更新后的记录集合只是保存在内存中,并没有添加的,更新后的记录集合只是保存在内存
23、中,并没有将其保存到与之绑定的将其保存到与之绑定的XML文档中。如要真正修改和添文档中。如要真正修改和添加加XML中的记录数据,则必须通过中的记录数据,则必须通过DOM技术或其它解决技术或其它解决方案才能实现。方案才能实现。通过较复杂的通过较复杂的JavaScript脚本程序代码,脚本程序代码,可以实现在与之绑定的文档中搜索指定记可以实现在与之绑定的文档中搜索指定记录的任务。录的任务。例题见:例题见:Example1.xml和和Example8.html1、编写、编写XML教师信息文档,采用教师信息文档,采用DSO与与JavaScript,实现表格的,实现表格的翻翻页页。XML文档结构描述:教
24、师信息文档结构描述:教师信息(教师教师(工号、姓名、年龄、照片、工号、姓名、年龄、照片、性别、所属系、工资(岗位工资、津贴、工龄工资等)等性别、所属系、工资(岗位工资、津贴、工龄工资等)等)2、使用、使用DSO与与Script编程实现编程实现浏览浏览XML教师信息文档,让浏览者随教师信息文档,让浏览者随意地浏览第一个、前一个、下一个与最后一个数据记录。意地浏览第一个、前一个、下一个与最后一个数据记录。3、使用、使用DSO与与Script编程实现编程实现编辑与添加编辑与添加XML教师信息文档的教师信息文档的DSO记录。记录。4、创建一个有关全班同学通讯录的、创建一个有关全班同学通讯录的XML文档
25、,然后编写一个文档,然后编写一个HTML文档,实现可在网页中文档,实现可在网页中快速检索(可从不同方面)快速检索(可从不同方面)某个同学某个同学的通讯录内容。的通讯录内容。注意:注意:XML文档中的元素名、属性名均要求采用英文。文档中的元素名、属性名均要求采用英文。信息至少要有四个以上。信息至少要有四个以上。DSO 示例示例 function load()var xmlDso=sdb.XMLDocument;var xslDso=Stylesheet.XMLDocument;divResults.innerHTML=xmlDso.transformNode(xslDso);为 XML 文档和
26、XSL 样式表创建 DSO,并将 XSL 样式表应用于 XML 文档 Riverdale 高中纽约550 Dream Valley 高中布法罗650Sutherland 私立学校波士顿 625 XML 数据岛 切换样式 XSL 样式表 XSL 样式表 创建一个按钮,单击此按钮时调用该函数例题见:例题见:Example9.xml和和Example9.html Example9.xsl、Example9_1.xsl、Example9_2.xslXML DSO 是一个是一个 Microsoft ActiveX 控件,控件,嵌入到嵌入到 Microsoft Internet Explorer 中中DS
27、O 有助于格式化数据并将这些数据显示在有助于格式化数据并将这些数据显示在 HTML 页面上页面上 DSO 可用于从外部可用于从外部 XML 文档或从嵌入到文档或从嵌入到 HTML 文档的文档的 XML 数据中提取数据数据中提取数据 和和 标签之间绑定的标签之间绑定的 XML 数据数据称为称为 XML 数据岛数据岛可以通过在可以通过在 HTML 文档中使用文档中使用 标签标签或通过使用或通过使用 JavaScript 创建函数,将外部创建函数,将外部 XML 文档链接到文档链接到 HTML 文档文档可以使用可以使用 datasrc 和和 datafld 属性从数据岛中属性从数据岛中提取数据提取数据DSO 可用于使用样式表中定义的样式来显示可用于使用样式表中定义的样式来显示 XML 数据岛的数据数据岛的数据