web services&xml--xml与html的结合

HTML与XML基础教程:数据交换与结构化 XML(eXtensible Markup Language,可扩展标记语言)是一种用于存储和传输数据的标记语言。它自1998年被推荐为W3C标准,因其良好的数据描述能力,成为了信息交换的重要技术之一。XML是SGML(Standard Generalized Markup Language)的一个简化子集,设计初衷是为了克服HTML在数据表示上的不足。它通过自定义标签,使得数据的结构和内容分离,从而提高了数据的可读性和可交换性。 阅读详情

xml的局限性

目前,许多web网站的内容数据都存放在数据库或数据文件中。对于web程序开发人员来说,如果要想把有用的信息从数据库中提取出来,传统的方法是在服务器端编写脚本程序(如vbscript、javascript、cgi、asp、perl等等),通过对数据库执行sql查询得到相关记录,然后把查询结果组织成html页面返回给客户端,用户使用浏览器观察最终结果。

为了提高系统服务的灵活性、可扩展性,使服务对象范围更广,许多商业网站都尽可能地把商务规则、原始数据和表现形式当做相互独立的服务分别提供。html那种蕴数据于显示之中的方式显然不合乎这种需求。因此,把原始数据存放在xml文档中,使用样式单文件显示内容是xml技术适合于电子商务的优势所在。但从本质上来说,xsl技术不是面向数据显示的,它是一种格式转换技术,在显示手段和方式上都远不及html那样丰富。对编程人员来说,一种较为理想的方案是把html和xml两种技术相结合,优势互补,使真正的原始数据在能够保持本来意义和结构的同时,还能充分利用html那千变万化的显示技巧。xml数据岛就是这种技术融合的产物,它使用< xml>标签把xml数据直接嵌入到html页面中,从而实现了二者的优势互补。

ie中数据岛的处理方式

为了能够处理这种内嵌xml代码的html页面,internet explorer 4.0(以下简称ie 4.0)引入了dso(data source objects,数据源对象)技术,用java applet实现。

例如:

< applet code=“com.ms.xml.dso.xmldso.class”

id=“xmldso” width=0 height=0 mayscript=true>

< param name=“url” value=“myxml.xml”>

< /applet>

上述例子中,code属性指明了dso java小程序,mayscript属性保证用户端脚本能够处理数据对象,param标签指明了xml文档的位置。

使用java的局限性在于只能在html文档中说明xml的url地址,而不能直接将xml标签嵌入其中,这就和真正的数据岛方案还有一定的差距。微软在internet explorer 5.0(以下简称ie 5.0)中对dso技术进行了扩展,突破了以往的限制,使html和xml真正地融合到了一起。html页面中支持直接使用< xml>标签。

例如:

< html>

< xml id=“xmldso”>

< ?xml version=“1.0”?>

some xml……

< /xml>

只要保证每个数据岛的id都是唯一的,就可以在页面中的任何必要的地方嵌入数据岛,并且这些dso彼此都是相互独立的。

除了上面例子中的这种直接嵌入方式,还可以使用外部引用方式链接数据岛。

例如:

< xml id=“xmldso” src=“myxml.xml”>

< /xml>

这样,只有当公司的客户对象继续使用ie 4.0,并且为了解决这部分客户的兼容性问题时,java applet才是编程人员要考虑的选择方案。

在ie 5.0所实现的dso技术中,如果数据是通过sql语言对数据库进行查询得到的结果,那么就把它们存放在ado(activex data objects)记录集中。服务器把这种activex控件(通常是ado记录集)发送到客户端,由客户端脚本程序做进一步的处理。实际上,ie 5.0就是把xml数据岛作为一种特殊的ado记录集进行处理的。

xml的数据绑定

1.ado记录集的映射

xml中的每一条主元素都被映射为ado记录集中的一条记录,而子元素则相应地被映射到记录集中的字段(也称为域)。

例如,存在xml数据岛books.xml如下:

< xml id=“xmldso”>

< ?xml version=“1.0”?>

< booklist>

< book>

< title>straight talk about computers< /title>

< isbn>72-80088-005< /isbn>

< /book>

< book>

< title> gourmet microwave < /title>

< isbn>72-80081-082< /isbn>

< /book>

< /booklist>

< /xml>

此时,映射后的ado记录集为:

title isbn

straight talk about computers 72-80088-005

gourmet microwave 72-80081-082

2.与html元素的绑定

在html文档中嵌入数据岛之后,就可以将xml数据岛与html元素绑定在一起。每一个dso条目(即数据岛)都有唯一的id号。首先将html元素中的datasrc属性设置为相应的id,就可以把html元素和数据岛联系在一起。然后再通过设置datafld属性值,来确定所提取的xml元素。

例如,与div元素绑定的代码如下:

< div id=title datasrc=#xmldso datafld=“title”>< /div>

< div id=price datasrc=#xmldso datafld=“isbn”>< /div>

注意:并非所有的html元素都能与xml数据岛绑定。目前,支持这种dso绑定机制的元素如下:

a、applet、button、div、frame、iframe、 img、input (此处类型是:checkbox、hidden、 label、password、radio和text)、label、 marquee、select、span、table和 textarea。

3.以表格方式显式xml数据

若把xml数据与table元素绑定在一起,就可以自动地显示为多行的表格形式。

例如,xml数据与table元素绑定的代码如下:

< table border=1 datasrc=“#xmldso”>

< thead>

< tr>< th>title< /th>

< th>isbn< /th>< /tr>

< /thead>

< tbody>

< tr>< td>< div datafld=“title”>< /div>< /td>

< td>< div datafld=“isbn”>

< /div>< /td>< /tr>

< /tbody>

< /table>

这样,通过将table元素中的datasrc属性设定为#xmldso,把两者绑定起来。表格内部分为表头(thead)和表体(tbody)两部分。每一个< book>元素都会显示为一行表格,具体每一栏显示哪一项数据,则由div元素中的datafld属性指定。

xml与html的结合(下)

xml的嵌套处理

一般情况下,我们从数据库中查询得到的结果集可能很大,所以从服务器返回到客户端时,数据会被分成若干个页面分别进行传递。此时,利用table元素中的datapagesize属性可以指定每个页面包含记录集条目的个数。

例如:

< table datasrc=“#xmldso” datapagesize=10>

很显然,如果xml数据格式是对称的,则无论是映射到ado记录集还是绑定到表格元素上,效果都会很好。而在实际应用中,xml数据为非对称的例子也很多,比如一本书的作者可能就不止一位,这在映射和绑定时都会产生一定的麻烦。解决问题的办法就是利用嵌套。每一行表格仍对应一条主元素,每一栏也对应着一个子元素。对于重复元素,则使用嵌套的表格。我们假设在books.xml中,第一本书的作者为dean straight,第二本书的作者为charlotte cooper、shelley burke和regina murphy。此时,绑定过程如下:

● 创建table元素,并将数据岛id赋值给datafld属性;

● 对于单独的xml元素,如< isbn>,创建td元素,并设定相应的datafld属性;

● 对于重复元素,在td元素内部嵌套一个表格;

● 用单行单列的形式显示作者信息。

注意这里的datafld属性必须设定为“$text”,

以保证嵌套元素的内容被全部显示在指定的元素中。

完整的html代码如下所示:

< table border=1 datasrc=“#xmldso”>

< thead>< tr>< th>title< /th>

< th>isbn< /th>

< th>author< /th>< /tr>< /thead>

< tbody>

< tr>< td>

< div datafld=“title”>< /div>< /td>

< td>< div datafld=“isbn”>

< /div>< /td>

< td>

< table border=0 datasrc=“#xmldso” datafld=“author”>

< tr>< td>< span datafld=“$text”>< /span>< /td>< /tr>

< /table>

< /td>

< /tr>< /tbody>

< /table>

事实上,使用dso效果最好的情况是针对结构对称的数据,而处理非对称数据更有效的办法是使用我们以后将要介绍的dom技术。

dso技术的应用

1. 访问元素的属性

用dso访问元素的属性很简单,可以直接把属性按子元素来处理。

例如:

< book isbn=“9-001-122-12”>

……

< /book>

这样,在绑定到html表格中时,就可以直接按子元素来处理:

< td>< span datafld=“isbn”> < /span>< /td>

如果遇到属性名和子元素名一样的情况,在元素名前加上“!”进行区分。 2.遍历记录集

dso把xml数据岛当做ado记录集进行处理的一大好处是可以利用ado提供的各种方法对数据源进行访问,尤其是当把数据岛与类似span、div和input等html元素绑定时。通常这些元素显示的是记录集的首条记录,要想对记录集进行遍历浏览,可以使用ado的方法 : move、movefirst、movelast、movenext和moveprevious。比如创建一个按钮响应函数,只要用户点击“next”按钮,就可以逐条浏览相应的记录。

例如:

< xml id=“xmldso” src=“books.xml”>

< /xml>

sub btnnext_onclick()

xmldso.recordset.movenext

end sub

3.与script语言相结合

有些用户比较习惯编写script语言,利用dso技术同样可以与各种script很好地结合在一起。

例如(以vb script为例),访问记录集时,代码如下:

dim rsbooks

set rsbooks = xmldso.recordset

访问字段(子元素)的值:

dim stitle

stitle = rsbooks(“title”)

可以使用innertext和innerhtml属性把得到的值传递给html元素。例如,有一个div元素名为divtitle,赋值代码如下所示:

divtitle.innertext = stitle

利用脚本程序还可以处理许多dso事件,下表列举了其中的一部分事件:

在脚本中处理各种事件的方法就是在< script>标签中使用for属性指定xml数据岛id,使用event属性确定事件类型。

例如,获取记录集中条目的个数:

< script language=“vb script” for=“xmldso” event=“ondataavailable”>

lblrecords.value = booklist.recordset.recordcount

< /script>

除了显示记录数据之外,脚本程序还可以对记录集进行快速查询、排序、编辑等操作。但要指出的是,虽然ado技术中提供了类似sortcolumn和sortascending等方法对xml数据进行排序,但是效果不如xsl中的排序操作,所以建议大家充分利用xsl技术来实现这部分功能。

其余的功能,如利用脚本对记录集进行诸如增加、删除、修改等操作,或是分页显示html表格等等,在这里就不一一举例说明了,用法与前面的操作大同小异。最后需要说明的是,所有对dso对象的操作都是在用户端完成的,实际上是服务器数据对象的一份复制品,这样做的好处是避免了网络承受大量数据通信的负担。但这时用户端所做的任何操作对服务器上存储的数据毫无影响,如果要想对服务器记录也进行修改,那么就要用到客户端与服务器端的数据交换技术,我们将在以后对此进行介绍。
        (责任编辑:包春林)


深入解析Cuk、Zeta和Sepic拓扑:非隔离型开关电源的设计奥秘 本文深入解析了Cuk、Zeta和Sepic三种非隔离型开关电源拓扑的设计奥秘。它们均能实现升降压转换,但特性各异:Cuk拓扑输出反向电压,输入输出纹波极低;Sepic拓扑输出同极性电压,应用广泛;Zeta拓扑输出纹波小,适合精密供电。文章详细对比了其电路结构、工作原理、核心公式及选型指南,帮助工程师根据输入电压范围、输出极性及纹波要求,灵活选择最合适的拓扑方案。 阅读详情

相关推荐

Qt C++实现HTTP/HTTPS服务器与客户端:从Socket到协议解析全流程

HTTP协议作为Web通信的基础,定义了客户端与服务器之间基于文本的请求-响应模型。其工作原理是通过TCP连接传输结构化的报文,实现资源获取与数据交换。在C++开发中,掌握HTTP协议底层实现具有重要技术价值,能够帮助开发者构建高性能、可深度定制的网络应用,尤其适用于嵌入式设备管理、桌面应用后端等场景。本文聚焦于使用Qt框架的QTcpSocket和QSslSocket组件,从Socket层面手动实现完整的HTTP/HTTPS通信栈,涵盖协议解析、流式处理、路由分发等核心环节,并深入探讨了HTTPS证书验证、

weixin_31292729的博客 333

XML与HTML的结合

                                         XML与HTML的结合 张剑 第一部分:1、XML的局限性 目前,许多Web网站的内容数据都存放在数据库或数据文件中。对于Web程序开发人员来说,如果要想把有用的信息从数据库中提取出来,传统的方法是在服务器端编写脚本程序(如VBScript、JavaScript、CGI、ASP、Perl等等),通过对数据库执

iBreathe的专栏 1388

从零开始编写一个上位机(串口助手)QT Creator + C++

提示:本博客作为学习笔记,有错误的地方希望指正,此文可能会比较长,作为学习笔记的积累,希望对来着有帮助。   绪论:笔者这里使用的是QTCreator和C++来实现一个简单的串口上位机的开发的简单过程,使用到C++,主要是为了后面使用Python开发上位机打下基础。这里主要分为初识C++的一些基本知识,其次是QT Creator的使用。特别声明感谢【北京迅为】嵌入式学习之QT学习篇的学习视频,这里的学习笔记就是根据视频中的内容实战记录下来的。 文章目录一、C++知识1、初识C++2、C++输入输出控制2.1

believe666的博客 4万+

在HTML页面中嵌入XML数据

在HTML页面中嵌入XML数据使用非官方标准的标记可以将XML数据嵌入到HTML页面中。XML数据可以象下面的例子那样嵌入HTML页面:ToveJaniReminderDont forget me this weekend!或者象下面这样嵌入外部单独的XML文件:注意那个标记是一个HTML元素,而不是一个XML元素。

程序人生 1万+

从MySQL到数据仓库:手把手教你用Airflow实现自动化ETL流水线

本文详细介绍了如何利用Airflow构建从MySQL到数据仓库的自动化ETL流水线,涵盖增量抽取策略、PySpark转换优化和数据质量监控等实战细节。特别适合中小规模企业构建高效数据仓库,提升数据处理效率和质量。

rnn9storyteller的博客 829

STM32F103电压采集proteus仿真

基于HAL库,仿真单片机型号为stm32f103R6,代码keil5。通过单片机的ADC采集功能,测量四路电压,数据经由DMA传输,并将结果通过串口输出,结果比较确,误差在0.01V左右。目前仿真采集四路比较稳定,多了会乱码。proteus版本8.11安装包链接:https://pan.baidu.com/s/1yhNKLl1lGSU9KU0tTuAxcg?pwd=dxe8提取码:dxe8项目下载地址:.

weixin_42490599的博客 4768

Sencha Touch 使用Iframe 展示XML数据

Sencha Touch 使用Iframe 展示XML数据其实sencha touch 展示XML数据有很多种方式,笔者在开发ST应用的时候会结合cordova或者phoneGap来开发,因此使用cordova的inappbrower或者themeablebrowser也能够展示XML数据,而且效果更好。但是因为客户的独特需求,上面两种方式并不能实现我的目标,因此,我改用了iframe,但是实际上不

Eumenides_s的博客 1310

任务混部最少服务器数量计算问题

这里的并行度指的是该任务运行时会占用的服务器数量。要注意的是,一个服务器在每个时刻可以被任意任务使用,但同一时刻最多只能被一个任务占用,并且任务运行结束后会立即释放服务器(结束时刻不占用)。最后,我们从字典中找出服务器数量的最大值,这个最大值就是完成这批任务混部最少需要的服务器数量。对于每个任务,我们会遍历其对应的时间区间,将该任务的并行度累加到对应时刻的服务器数量上。任务混部的目标是让这批任务由同一批服务器承载运行,你需要计算完成这批任务混部最少需要多少服务器,以此来最大化控制资源成本。

m0_62153576的博客 108

xml文件怎么放到html中,xml中如何连接html文件

用户提问如题推荐答案方法一,数据绑定XML文件Empire BurlesqueBob DylanUSAColumbia10.901985Hide your heartBonnie TylorUKCBS Records9.901988Greatest HitsDolly PartonUSARCA9.901982Still got the bluesGary MoreUKVirgin redords1...

weixin_39925813的博客 1155

Autosar诊断实战系列05-Dcm之0x27加解密服务配置开发详解

UDS 0x27服务实战开发介绍,对解锁尝试次数及delay时间进一步解释。

initiallizer的博客 1994

HBase骚操作之数据加载方式BulkLoad

本文研究了一种HBase BulkLoad的入库方式,该方式利用HBase的数据信息按照特定格式存储在hdfs内这一原理,直接在HDFS中生成持久化的HFile数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。该方式配合MapReduce完成,高效便捷,而且不占用Region资源,增添负载,在大数据量写入时能极大的提高写入效率,并降低对Hbase节点的写入压力。HBase BulkLoad对于异构数据源的合并及大量数据一次性导入具有重要指导意义,相比HBase Put操作在性能上具有较高的优势

石榴姐yyds 7794

IFrame嵌入Html

iframe.mxml http://ns.adobe.com/mxml/2009"       xmlns:s="library://ns.adobe.com/flex/spark"       xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"      xmlns:local="*" >  

sjz168的专栏 3905

【EB-03】 AUTOSAR builder与EB RTE集成

打开EB工具后,在EB的步骤是:执行MultiTask(2)-> Mapping Component to Partitions(4)->Task Mapping(5)-> SvcAs_Trigger(7)-> Code Generation(8)如涉及新增BSW Module,也需要重复以上步骤。

libuping2023的博客 965

网页中显示xml,直接显示xml格式的文件

第一种方法 使用<pre></pre>包围代码(在浏览器中测试不行啊,但是在富编辑器中又可以,怪);使用<xmp></xmp>包围代码(官方不推荐,但是效果不错哦,在firefox和IE都可以);使用<textarea></textarea>包围代码(在富编辑器和浏览器中均可以 ); <pre>不...

817

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

关于用HTML显示XML文件内容的问题

前提概要: 大二下半学期了,该跟着项目组老师做项目管理,我分到了张利彪的项目组里,张老师并不告诉我们具体做什么,只是让我们私下里学习东西,我主要学习HTML和XML,让我们利用想象力并用上已有的手段做出来我们想做的东西,虽然不像其他的项目组老师分给同学们具体的内容,但感觉在一个只为学习而学习的环境下,充分开动自己的大脑去想一些不存在或者很少见的东西确实还是有点难度的。不过万事开头难嘛,再难还是要

Learning By Doing 4274

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

xml嵌入到html中的方法

把xml嵌入到html中的方法xml嵌入到网页中感觉不错xml嵌入网页中的方法object: deep: conclusion:

3743

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

怎么把XML的内容嵌入HTML,html - 如何将原始的html字符串嵌入到Text.XmlHtml节点结构中 - 堆栈内存溢出...

这是一个极端的情况。 我正在运行Haskell,Text.XmlHtml(0.2.3版)。 我从Pandoc(版本1.12)获取源数据。 我的源文件都是Markdown格式。当我在Markdown文件中直接拥有原始HTML时,将处理角落。 当然,这是Markdown格式所支持的,有时这是我获得所需的Table布局的唯一方法。 Pandoc只读取文件,但是当到达Html部分时,它发出的内容...

weixin_39647180的博客 278

【HTML/XML 11】XML和HTML的混合使用

导读:在前面介绍了很多关于XML和HTML的东西,他们其实各有各的好处,在很多时候都需要结合起来使用。现在已经有XML和HTML结合的产物:XHTML(可扩展超文本标记语言)。在本篇博客中,则主要介绍通过引入命名空间的方法,进行XML和HTML混合使用的例子。 一、在XML中使用HTML 1.1,代码 Angel测试XML中的HTML XML中的h1标签 HTML中的h

该怎么解释?我懒得解释 2543

前端 读取XML文件

Jquery读取下xml文件。 代码如下: html内容 &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; &lt;html xmlns="http://www.w3.org/1999...

cuishouming的博客 1万+

iframe渲染表单数据

iframe渲染表单数据 父层页面调用子层页面时,利用iframe的形式打开页面,父层与子层之间传递数据 父层页面 //layui窗口打开一个iframe layer.open({ type: 2 ,title: '修改账户' //url ,content: 'form.html' ,area: ['420px', '420px'] ,btn: ['修改', '取消'] //打开窗口成功后的操作 ,success:fu

JEROCHAN的博客 876

xml中加html源码,XML与HTML的结合(下)_xml

xml的嵌套处理一般情况下,我们从数据库中查询得到的结果集可能很大,所以从服务器返回到客户端时,数据会被分成若干个页面分别进行传递。此时,利用TABLE元素中的DATAPAGESIZE属性可以指定每个页面包含记录集条目的个数。例如:很显然,如果XML数据格式是对称的,则无论是映射到ADO记录集还是绑定到表格元素上,效果都会很好。而在实际应用中,XML数据为非对称的例子也很多,比如一本书的作者可能就...

weixin_28706541的博客 585

使用layer的iframe在IE浏览器下不显示并且报错XML5635: 仅文件开头允许 XML 声明

主要是XML格式错误 <%@ include file="/WEB-INF/layouts/taglib.jsp"%> 报这一行的错误 然后下一行我直接写div了,因为是弹出框,没有遵守html页面格式规范,加上 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www...

weixin_30693683的博客 410
上一篇: html 5公测草案发布 推动web标准与互操作性
下一篇: 揭开html 5工作草稿的神秘面纱
Labber
博客等级 码龄19年 26粉丝 1976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值