XML和网络编程

# 今日内容

       1. XML

              1. 概念

              2. 语法

              3. 解析

## XML:

       1. 概念:Extensible Markup Language 可扩展标记语言

              * 可扩展:标签都是自定义的。 <user>  <student>

              * 功能

                     * 存储数据

                            1. 配置文件

                            2. 在网络中传输

              * xml与html的区别

                     1. xml标签都是自定义的,html标签是预定义。

                     2. xml的语法严格,html语法松散

                     3. xml是存储数据的,html是展示数据

              * w3c:万维网联盟

       2. 语法:

              * 基本语法:

                     1. xml文档的后缀名 .xml

                     2. xml第一行必须定义为文档声明

                     3. xml文档中有且仅有一个根标签

                     4. 属性值必须使用引号(单双都可)引起来

                     5. 标签必须正确关闭

                     6. xml标签名称区分大小写

              * 快速入门:

                     <?xml version='1.0' ?>

                     <users>

                            <user id='1'>

                                   <name>zhangsan</name>

                                   <age>23</age>

                                   <gender>male</gender>

                                   <br/>

                            </user>

                           

                            <user id='2'>

                                   <name>lisi</name>

                                   <age>24</age>

                                   <gender>female</gender>

                            </user>

                     </users>

                    

              * 组成部分:

                     1. 文档声明

                            1. 格式:<?xml 属性列表 ?>

                            2. 属性列表:

                                   * version:版本号,必须的属性

                                   * encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1

                                   * standalone:是否独立

                                          * 取值:

                                                 * yes:不依赖其他文件

                                                 * no:依赖其他文件

                     2. 指令(了解):结合css的

                            * <?xml-stylesheet type="text/css" href="a.css" ?>

                     3. 标签:标签名称自定义的

                            * 规则:

                                   * 名称可以包含字母、数字以及其他的字符

                                   * 名称不能以数字或者标点符号开始

                                   * 名称不能以字母 xml(或者 XML、Xml 等等)开始

                                   * 名称不能包含空格

                     4. 属性:

                            id属性值唯一

                     5. 文本:

                            * CDATA区:在该区域中的数据会被原样展示

                                   * 格式:  <![CDATA[ 数据 ]]>

      

              * 约束:规定xml文档的书写规则

                     * 作为框架的使用者(程序员):

                            1. 能够在xml中引入约束文档

                            2. 能够简单的读懂约束文档

                    

                     * 分类:

                            1. DTD:一种简单的约束技术

                            2. Schema:一种复杂的约束技术

                     * DTD:

                            * 引入dtd文档到xml文档中

                                   * 内部dtd:将约束规则定义在xml文档中

                                   * 外部dtd:将约束的规则定义在外部的dtd文件中

                                          * 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">

                                          * 网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">

                     * Schema:

                            * 引入:

                                   1.填写xml文档的根元素

                                   2.引入xsi前缀.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                                   3.引入xsd文件命名空间.  xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"

                                   4.为每一个xsd约束声明一个前缀,作为标识  xmlns="http://www.itcast.cn/xml"

                            <students   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                                   xmlns="http://www.itcast.cn/xml"

                                   xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd">

      

      

       3. 解析:操作xml文档,将文档中的数据读取到内存中

              * 操作xml文档

                     1. 解析(读取):将文档中的数据读取到内存中

                     2. 写入:将内存中的数据保存到xml文档中。持久化的存储

              * 解析xml的方式:

                     1. DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树

                            * 优点:操作方便,可以对文档进行CRUD的所有操作

                            * 缺点:占内存

                     2. SAX:逐行读取,基于事件驱动的。

                            * 优点:不占内存。

                            * 缺点:只能读取,不能增删改

             

              * xml常见的解析器:

                     1. JAXP:sun公司提供的解析器,支持dom和sax两种思想

                     2. DOM4J:一款非常优秀的解析器

                     3. Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

                     4. PULL:Android操作系统内置的解析器,sax方式的。

              * Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

                     * 快速入门:

                            * 步骤:

                                   1. 导入jar包

                                   2. 获取Document对象

                                   3. 获取对应的标签Element对象

                                   4. 获取数据

                     * 代码:

                             //2.1获取student.xml的path

                      String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();

                      //2.2解析xml文档,加载文档进内存,获取dom树--->Document

                      Document document = Jsoup.parse(new File(path), "utf-8");

                      //3.获取元素对象 Element

                      Elements elements = document.getElementsByTag("name");

             

                      System.out.println(elements.size());

                      //3.1获取第一个name的Element对象

                      Element element = elements.get(0);

                      //3.2获取数据

                      String name = element.text();

                      System.out.println(name);

              * 对象的使用:

                     1. Jsoup:工具类,可以解析html或xml文档,返回Document

                            * parse:解析html或xml文档,返回Document

                                   * parse​(File in, String charsetName):解析xml或html文件的。

                                   * parse​(String html):解析xml或html字符串

                                   * parse​(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象

                     2. Document:文档对象。代表内存中的dom树

                            * 获取Element对象

                                   * getElementById​(String id):根据id属性值获取唯一的element对象

                                   * getElementsByTag​(String tagName):根据标签名称获取元素对象集合

                                   * getElementsByAttribute​(String key):根据属性名称获取元素对象集合

                                   * getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合

                     3. Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用

                     4. Element:元素对象

                            1. 获取子元素对象

                                   * getElementById​(String id):根据id属性值获取唯一的element对象

                                   * getElementsByTag​(String tagName):根据标签名称获取元素对象集合

                                   * getElementsByAttribute​(String key):根据属性名称获取元素对象集合

                                   * getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合

                            2. 获取属性值

                                   * String attr(String key):根据属性名称获取属性值

                            3. 获取文本内容

                                   * String text():获取文本内容

                                   * String html():获取标签体的所有内容(包括字标签的字符串内容)

                     5. Node:节点对象

                            * 是Document和Element的父类

                    

              * 快捷查询方式:

                     1. selector:选择器

                            * 使用的方法:Elements    select​(String cssQuery)

                                   * 语法:参考Selector类中定义的语法

                     2. XPath:XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言

                            * 使用Jsoup的Xpath需要额外导入jar包。

                            * 查询w3cshool参考手册,使用xpath的语法完成查询

                            * 代码:

                                   //1.获取student.xml的path

                             String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();

                             //2.获取Document对象

                             Document document = Jsoup.parse(new File(path), "utf-8");

                    

                             //3.根据document对象,创建JXDocument对象

                             JXDocument jxDocument = new JXDocument(document);

                    

                             //4.结合xpath语法查询

                             //4.1查询所有student标签

                             List<JXNode> jxNodes = jxDocument.selN("//student");

                             for (JXNode jxNode : jxNodes) {

                                 System.out.println(jxNode);

                             }

                    

                             System.out.println("--------------------");

                    

                             //4.2查询所有student标签下的name标签

                             List<JXNode> jxNodes2 = jxDocument.selN("//student/name");

                             for (JXNode jxNode : jxNodes2) {

                                 System.out.println(jxNode);

                             }

                    

                             System.out.println("--------------------");

                    

                             //4.3查询student标签下带有id属性的name标签

                             List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");

                             for (JXNode jxNode : jxNodes3) {

                                 System.out.println(jxNode);

                             }

                             System.out.println("--------------------");

                             //4.4查询student标签下带有id属性的name标签 并且id属性值为itcast

                    

                             List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='itcast']");

                             for (JXNode jxNode : jxNodes4) {

                                 System.out.println(jxNode);

                             }

1.解析xml

1.创建xml.dom解析

1.标签创建

创建流程:

a.在内存中创建一个空的文档:doc=xml.dom.minidom.Document()

b.创建一个根节点:root=doc.createElement('节点名’)设置根节点的属性

c.将根节点添加到文档对象中:doc.appendChild(root)

d.创建根节点的子节点并添加到根节点:root.appendChild(子节点)

e.写出xm1文档:

doc.writexml(文件,indent="\n",addindent="\t",encoding='utf-8')

tips:所有节点创建都是文档创建,所有的节点添加都是appendChild()

import xml.dom.minidom
#在内存中创建一个空的文档:
doc=xml.dom.minidom.Document()
#创建一个根节点:
root=doc.createElement('pop')
#设置根节点的属性
root.setAttribute('id','pop')
#将根节点添加到文档对象
doc.appendChild(root)
#创建根节点的子节点并添加到根节点
data=[{ 'a':'aa','b':'bb'},{ 'a':'cc','b':'dd'}]
for i in data:
   
#创建节点pop
   
n_p = doc.createElement('pop')
   
#创建节点a
   
n_a=doc.createElement('a')
   
#创建a的文本节点
   
n_a.appendChild(doc.createTextNode(i['a']))
   
#创建节点b
   
n_b = doc.createElement('b')
   
#创建b的文本节点
   
n_b.appendChild(doc.createTextNode(str(i['b'])))
   
#ab添加至pop
   
n_p.appendChild(n_b)
    n_p.appendChild(n_a)
   
# 并添加到根节点
   
root.appendChild(n_p)
#写出xml文档
with open('1.xml','w',encoding='utf-8') as f:
    doc.writexml(f,
indent='\n',addindent='\t',encoding='utf-8')

 

2.属性创建
import xml.dom.minidom

#在内存中创建一个空的文档:

doc=xml.dom.minidom.Document()



#创建一个根节点:

root=doc.createElement('people')



#设置根节点的属性

root.setAttribute('id','p')



#将根节点添加到文档对象

doc.appendChild(root)



#创建根节点的子节点并添加到根节点

data=[{
   'a':'aa','b':'bb'},{
   'a':'cc','b':'dd'}]



for i in data:

    #创建节点person

    n_p = doc.createElement('person')

    #创建节点a

    n_p.setAttribute('a',i['a'])

    n_p.setAttribute('b',str(i['b']))



    root.appendChild(n_p)

#写出xml文档

with open('2.xml','w',encoding='utf-8') as f:

    doc.writexml(f,indent='\n',addindent='\t',encoding='utf-8')



3.解析
import xml.dom.minidom



#获取dom文件的整个树

dom_tree=xml.dom.minidom.parse('1.xml')



#获取所有节点

root =dom_tree.documentElement



#获取poeple节点--------------------------

people_list=root.getElementsByTagName('p')

for s in people_list:

    t_list=s.getElementsByTagName('title')[0]#返回的是NodeList所以用户索引获取

    print('名称:',t_list.childNodes[0].data)#获取文本节点的内容

    print('导演:',t_list.getAttribute('director'))#获取属性内容



    #获取players节点-----------------------

    ps_list=s.getElementsByTagName('players')[0]

    for p in ps_list.childNodes:

        #只处理元素节点

        if isinstance(p,xml.dom.minidom.Element):

            print(p.childNodes[0].data)



    #获取desc节点-------------------------------

    desc_list=s.getElementsByTagName('desc')[0]

    if desc_list:

       #print(desc_list)

       #print(desc_list.childNodes)

       print(desc_list.childNodes[1].data)



    print('*'*20)

2.创建xml.sax解析

1.标签解析

解析流程:

a.创建一个XMLReader:parser=xml.sax.make_parser()

parser.setFeature(xml.sax.handler.feature_namespaces,0)关闭命名空间解析

b.编写一个类继承xm1.sax.ContentHandler类,并重写startElement(开始).

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
译者序 作者简介 前言 第1章 XML简介 1 1.1 标记语言 1 1.2 XML的起源和目的 2 1.3 Web体系结构:过去与未来 4 1.3.1 传统Web体系结构 4 1.3.2 XML下的Web体系结构 5 1.4 XML基本特征 6 1.5 词汇表 8 1.5.1 科学词汇表 8 1.5.2 商业词汇表 9 1.5.3 法律词汇表 10 1.5.4 医学词汇表 11 1.5.5 计算机词汇表 11 1.6 XML技术的主要特性 12 1.6.1 格式正规的XML 12 1.6.2 文档类型定义 13 1.6.3 数据建模 14 1.6.4 文档对象模型 14 1.6.5 XML 简单API 14 1.6.6 命名空间和模式 14 1.6.7 链接和查询 15 1.6.8 转换XML 15 1.6.9 XML和数据库 16 1.6.10 服务器到服务器 16 1.6.11 电子商务与XML 17 1.6.12 使用样式 18 1.6.13 无线应用协议和WML 18 1.7 XML的应用程序举例 19 1.8 小结 19 第2章 XML语法 20 2.1 标记语法 20 2.1.1 字符 20 2.1.2 命名 21 2.2 文档部分 22 2.3 元素 23 2.3.1 起始标记 24 2.3.2 结束标记 24 2.3.3 空元素标记 24 2.3.4 标记:一个简单的例子 25 2.3.5 文档元素 25 2.3.6 子元素 26 2.3.7 元素嵌套 27 2.3.8 字符串 29 2.4 字符数据 29 2.5 属性 30 2.5.1 特殊属性 31 2.5.2 空白 33 2.5.3 行尾的处理 34 2.6 字符引用和实体引用 34 2.6.1 字符引用 34 2.6.2 实体引用 34 2.7 处理指令 35 2.8 注释 36 2.9 CDATA部分 37 2.10 文档结构 38 2.10.1 序言 38 2.10.2 尾声 43 2.11 XML语法小结 43 2.12 格式正规的文档 44 2.13 解析器 45 2.13.1 事件驱动的解析器 45 2.13.2 基于树的解析器 46 2.13.3 解析器基准测试 46 2.14 书籍目录应用程序 47 2.15 小结 49 第3章 文档类型定义 51 3.1 为何需要正式的结构 51 3.1.1 文档域 52 3.1.2 验证文档的有效性 52 3.2 编写DTD:通用原则 52 3.2.1 将DTD与XML文档相关联 53 3.2.2 基本标记声明 55 3.3 正式的DTD结构 55 3.3.1 实体 56 3.3.2 元素 58 3.3.3 属性 61 3.3.4 条件部分 67 3.4 DTD的缺点 69 3.5 用于图书目录问题的DTD 70 3.5.1 图书目录问题的正式定义 70 3.5.2 对象关系问题 77 3.5.3 进一步讨论 78 3.6 小结 79 第4章 数据建模与XML 80 4.1 信息建模 80 4.1.1 静态模型和动态模型 81 4.1.2 文档和数据 82 4.1.3 从何处开始 82 4.1.4 静态信息模型 83 4.1.5 动态建模:对数据进行哪些处理 87 4.2 设计XML文档 90 4.2.1 XML的两种角色 90 4.2.2 将信息模型映射到XML 93 4.3 模式语言和表示法 101 4.3.1 模式的作用 101 4.3.2 将DTD作为模式 103 4.3.3 XML模式建议 109 4.4 小结 110 第5章 文档对象模型 111 5.1 什么是文档对象模型 111 5.1.1 XML文档结构 111 5.1.2 为何使用DOM 113 5.1.3 DOM规范 115 5.1.4 现实世界中的DOM 116 5.1.5 特殊的XML DOM实例— HTML DOM 117 5.2 使用DOM 120 5.2.1 DOM API 120 5.2.2 客户端和服务器端 121 5.2.3 DOM在出版过程中的应用 122 5.3 使用DOM和XML的应用实例 125 5.3.1 简单的客户端实例 125 5.3.2 更复杂的编程实例 133 5.4 DOM和XML的未来 143 5.4.1 W3C的工作 143 5.4.2 应用 144 5.4.3 数据库、模式和DOM 144 5.5 小结 144 第6章 SAX 1.0: XML简易API 145 6.1 事件驱动接口 145 6.2 SAX的由来 148 6.3 SAX的高级特性 165 6.3.1 可选择的源输入 166 6.3.2 处理外部实体 168 6.3.3 选择解析器 169 6.4 一些SAX设计模式 171 6.5 SAX 2.0 187 6.5.1 可配置的接口 187 6.5.2 核心的特性和属性 188 6.6 小结 189 第7章 命名空间和模式 191 7.1 混合词汇表 192 7.1.1 分解问题 193 7.1.2 重用 193 7.1.3 多义性名称冲突 193 7.2 命名空间 195 7.3 定义和声明命名空间 196 7.3.1 声明一个命名空间 196 7.3.2 限定名 196 7.3.3 范围 197 7.4 在格式正规的书籍里使用命名空间 实例 199 7.5 模式 201 7.5.1 与DTD有关的问题 201 7.5.2 一个对创建模式的帮助 203 7.6 W3C在XML 模式方面的工作 209 7.6.1 DTD与XML 模式的比较 210 7.6.2 结构 211 7.6.3 数据类型 219 7.7 简化了的XML Data 222 7.7.1 MSXML对命名空间和模式的支持 228 7.7.2 数据类型 229 7.8 图书目录中的变化 230 7.8.1 为什么烦恼 230 7.8.2 重铸DTD 231 7.8.3 模式协调 236 7.9 小结 240 第8章 链接和查询 241 8.1 XML 信息集合 241 8.1.1 信息类型 241 8.1.2 信息集合的重要性 248 8.1.3 小结 250 8.2 链接 250 8.2.1 什么是链接 250 8.2.2 W3C规范:XLink 252 8.3 Xpointer 266 8.3.1 HTML指针 266 8.3.2 Xpointer 规范 267 8.4 W3C Xpath推荐标准 269 8.4.1 Location Step 269 8.4.2 XPointer对XPath的扩展 276 8.4.3 Xpointer错误 277 8.4.4 小结 277 8.5 XML程序段交换 278 8.5.1 什么是文档程序段 278 8.5.2 文档程序段的一些用途 279 8.5.3 问题:Bare文档程序段并不总 是充分的 281 8.5.4 解决办法:环境信息 283 8.5.5 回顾实例 285 8.5.6 如何传输程序段 287 8.5.7 小结 289 8.6 查询 289 8.6.1 什么是查询语言 289 8.6.2 关系型数据库和XML文档之间 的区别 291 8.6.3 XML查询语言的发展历史 295 8.6.4 使用Xpath和XSLT查询XML文档 298 8.6.5 查询语言展望 309 8.7 小结 309 第9章 转换 XML 310 9.1 为什么转换 XML 311 9.1.1 在不同词汇表之间转换 311 9.1.2 动态转换 312 9.1.3 不同的浏览器 312 9.2 XSL 313 9.3 XSLT 样式表命令 325 9.3.1 创建模板 325 9.3.2 处理空白 326 9.3.3 输出格式 326 9.3.4 合并样式表 327 9.3.5 嵌入样式表 328 9.4 使用XSLT的例子 328 9.4.1 命令的转换 329 9.4.2 循环 335 9.4.3 排序 336 9.4.4 条件处理 338 9.4.5 名称模板 341 9.4.6 编号方式 342 9.4.7 拷贝 344 9.5 使用DOM进行XML文档的转换 345 9.5.1 用DOM进行命令的转换 346 9.5.2 在运行时修改一个XSLT文档 349 9.6 XSL转换与DOM转换的比较 353 9.7 小结 354 第10章 XML和数据库 355 10.1 存储XML 355 10.1.1 持续性问题 355 10.1.2 文档管理 360 10.1.3 XML存储和数据库 362 10.1.4 结论 376 10.2 XML的交换 377 10.2.1 数据标准 377 10.2.2 查询标准 380 10.2.3 结论 388 10.2.4 你可能需要的标准 388 10.3 图书目录的例子 389 10.3.1 处理存在的数据和应用 389 10.3.2 图书目录模式 395 10.4 结论 420 第11章 服务器到服务器 421 11.1 XML的传送 421 11.1.1 基于FTP的XML传送 422 11.1.2 XML和消息队列 422 11.1.3 基于HTTP的XML 423 11.1.4 基于SMTP的XML 423 11.2 作为一种分布式组件模式的XML 424 11.2.1 消息传送和串行化 424 11.2.2 紧耦合系统和松耦合系统 428 11.2.3 通信方式 430 11.3 XML-RPC 431 11.3.1 为什么使用XML-RPC 432 11.3.2 XML-RPC适用于何处 433 11.3.3 XML-RPC规范—技术全瞻 434 11.3.4 XML-RPC的实现 440 11.3.5 书籍应用例子 444 11.3.6 到哪里去 464 11.4 SOAP 465 11.4.1 XML-RPC++ 465 11.4.2 实现 478 11.4.3 结论 493 11.5 WebDAV 493 11.6 小结 494 第12章 电子商务和XML 495 12.1 什么是电子商务 496 12.1.1 对客户直接销售 496 12.1.2 企业对企业交易 497 12.1.3 信息共享和内容联合 497 12.1.4 EDI—电子数据交换 498 12.2 在电子商务中应用XML 503 12.2.1 通常的错误概念 509 12.2.2 在电子商务中使用XML的感受 512 12.3 展望未来 513 12.3.1 发现和调解 514 12.3.2 容器 517 12.3.3 代理 519 12.3.4 模板 520 12.4 理论转化为实现 521 12.5 电子商务解决方案 521 12.6 行业方案 521 12.6.1 纵向行业解决方案的关键 522 12.6.2 旅游 523 12.7 人力资源 524 12.7.1 HR-XML 524 12.7.2 健康 532 12.8 cXML—纵向行业的一个详细 例子 535 12.8.1 为什么有cXML 535 12.8.2 cXML协议规范 536 12.8.3 消息传输 540 12.9 第1步—横向行业 546 12.9.1 ASC X12 546 12.9.2 XML-EDIFACT 547 12.9.3 电子商务XML工作组 549 12.10 第一个横向步骤 549 12.10.1 BizTalk标记规范 550 12.10.2 规范的目标和当前的限制 550 12.10.3 文档结构 551 12.10.4 一个用于Wrox书店的BizTalk 文档 557 12.10.5 BizTalk Jumpstart工具包简介 561 12.10.6 BizTalk服务器 562 12.11 小结 565 第13章 样式XML 567 13.1 解释的位置 567 13.2 客户端的XML转换 568 13.3 解释模型 568 13.3.1 视觉解释 569 13.3.2 语音解释 570 13.3.3 如何将样式表链接到XML文档上 571 13.3.4 规则语言 571 13.3.5 CSS 572 13.3.6 XSL 592 13.3.7 用XSL解释XML 594 13.3.8 DSSSL 611 13.3.9 Omnimark 614 13.4 小结 616 第14章 无线应用协议 617 14.1 新客户介绍 617 14.2 了解无线环境 621 14.2.1 服务 621 14.2.2 无线网络 622 14.2.3 WAP如何解决无线网络应用遇到 的问题 624 14.3 介绍WML 626 14.3.1 怎样将第一份文档传送到电话上 626 14.3.2 WML文档的结构 627 14.3.3 通用属性 629 14.3.4 WML包括什么 630 14.3.5 Meta信息 630 14.3.6 基本字符、表格和演示 631 14.3.7 使用计时器 633 14.3.8 事件处理器 634 14.3.9 使用变量 635 14.3.10 任务和菜单 637 14.3.11 客户端模板 641 14.3.12 表单数据 643 14.3.13 图像 646 14.4 在服务器上生成WML 646 14.5 WROX的WML应用 648 14.6 WML脚本 651 14.6.1 基本概念 652 14.6.2 字节码 652 14.6.3 如何从WML上调用脚本函数 652 14.7 脚本库 653 14.7.1 决定浏览器的状态—WMLBrowser 脚本库 653 14.7.2 Dialogs库 654 14.7.3 特定的语言函数 655 14.7.4 浮点数 655 14.7.5 字符串 656 14.7.6 URL 657 14.8 如何得到更多的信息 660 14.9 小结 660 第15章 实例研究1─数据双重性 662 15.1 商业需求 662 15.2 系统要求 662 15.3 设计时间:让我们开始吧 662 15.4 实现方法概述 663 15.5 建立数据库 665 15.6 提供XML功能的ASP 665 15.7 客户端页面 668 15.8 “以编号浏览”XSL样式表 676 15.9 “以名字浏览”XSL样式表 678 15.10 激活XSL样式表 679 15.11 问题:保持树的同步 680 15.12 小结 683 第16章 实例研究2—XML和分布式 应用程序 684 16.1 目前的弱点 684 16.2 构建网络应用程序的五条原则 685 16.2.1 从粗粒度服务构建应用程序 686 16.2.2 通过查询目录发现服务 687 16.2.3 将服务提供为自描述数据 688 16.2.4 服务是短暂的 689 16.2.5 服务必须可扩展,且能够降低对 外部的要求 690 16.3 商业实例 691 16.4 应用程序设计 692 16.4.1 应用程序的组织 694 16.4.2 程序员服务客户 694 16.4.3 服务 695 16.4.4 交换词汇表 696 16.5 实现 697 16.5.1 定位服务 698 16.5.2 管理数据绑定 699 16.6 输入和编辑程序员信息 700 16.6.1 客户端 700 16.6.2 服务器端 701 16.6.3 用于插入程序员信息的完整客户 端代码 704 16.6.4 用于插入程序员信息的完整服务器 端代码 705 16.7 搜索程序员信息 707 16.7.1 客户端 707 16.7.2 服务器端 709 16.8 清除程序员表单 710 16.9 输入程序员成果报告 711 16.9.1 客户端 711 16.9.2 服务器端 712 16.10 清除成果报告历史表单 714 16.11 获取程序员的成果历史 714 16.11.1 客户端 714 16.11.2 服务器端 716 16.12 经验教训 718 16.12.1 违反的开发原则 718 16.12.2 组件 718 16.12.3 重用的可能性 718 16.13 小结 719 第17章 实例研究3—图书目录信息 服务 720 17.1 图书目录信息服务 721 17.1.1 系统概述 721 17.1.2 创建BCIS 732 17.2 小结 764 第18章 实例研究4—SOAP 765 18.1 追根溯源 765 18.2 SOAP Opera 770 18.2.1 OPERA客户端 771 18.2.2 OPERA服务器 780 18.2.3 订单输入应用程序 793 18.2.4 对象 796 18.3 小结 809 附录A XML 1.0规范 810 附录B IE 5 XML文档对象模型 847 附录C SAX 1.0:XML简单API 887 附录D IE 5 XML模式和数据类型 906 附录E IE 5 XSL引用 915 附录F CSS属性 927 附录G 安装XT 939 附录H 支持与勘误 940

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十年人间~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值