疯狂XML讲义

出版时间:2009-11  出版社:电子工业出版社  作者:李刚  页数:492  
Tag标签:无  

前言

  自从1998年问世以来,XML已经广泛应用于各种开发平台、各种编程语言中,并衍生出大量新的标记语言:如SVG(Scalable Vector Graphics)、SMIL(Synchronized Multimedia Integration Language)等,这些都充分说明了XML强大的生命力和广泛的引用前景。  对于大部分Java开发者而言,使用XML最多的地方还是配置文件,不管是Java Web应用的初学者,还是Struts、Spring等开源框架的学习者,几乎每天都会接触到大量的XML文档。因此大部分开发者都会把XML文档和配置文件等同起来,但实际上XML的应用是非常广泛的。本书系统而深入地介绍了XML以及XML相关方面的内容,并通过实际案例示范了XML在实际开发中的应用,本书将带领读者系统而深入地掌握XML的相关知识。  本书大部分章节后都提供了相应的编程习题,供学习者巩固所学、将理论融入实际开发之用。关于这些编程习题的解题思路和参考答案可登录http://www.crazyit.org获取。  本书有什么特点  本书写作过程中大量参考了http://www.w3c.org站点中关于DTD、XML Schema、XSLT、XPath、XQuery等技术的最新规范。也参考了微软MSDN里关于XML的内容,主要由http://msdn.microsoft.com/zh-cn/library/ms256177.aspx和http://msdn.microsoft.com/zh-cn/library/ms256177 (VS.80).aspx两个页面提供。  本书希望系统、深入地介绍XML以及相关技术,希望读者能通过本书更全面地掌握、使用XML的相关知识。归纳起来,本书大致有如下3个特点:  1.知识全面、专业性强  本书并不是一本关于XML基础的图书,本书系统而深入地介绍了XML相关知识,不仅包括DTD、XML Schema等基础内容,也包括XSLT、XPath、XQuery、DOM、SAX、JDOM和dom4j等高级内容。除此之外,还介绍了XML在实际企业开发中一个重要的应用方向:Web Services,并介绍了Java领域的Web Services框架CXF的用法。这些知识点覆盖了XML相关的绝大部分内容,专业性非常强。  2.案例实际、实用性强  本书前面各章讲解各小知识点时,不仅介绍了它们的基本语法,还提供了与之对应的小范例,希望读者能理论结合实际,边读边练,通过编码来掌握相应的知识。本书除了介绍XML及其相关知识之外,更重点介绍了如何将XML知识融入实际应用开发,例如书中最后两个案例,都是XML在实际企业开发中极好的范例。  3.深入浅出、易读性强  本书与疯狂Java体系的其他图书一样,即使在介绍专业性极强的知识时,也尽量使用深入浅出的类比来帮助读者理解它们,然后配合针对性很强、重点突出的小示例来说明这些知识,降低初学者的学习难度。通过这种案例驱动的讲解方式,让读者阅读时更容易理解各知识点的功能;接下来又能迅速将所学知识应用于实际开发。  本书创作感言  动手写作本书之前,博文视点的朱沭红老师已经善意地提醒笔者:关于XML的书都很难卖,可能大家都觉得XML太简单了。想一想也是,几乎所有学习Java开发的读者都应该接触过XML文档:当你开始学习JSP开发时,你就得写web.xml配置文件;当你学习Struts时,你又得写struts-config.xml配置文件。几乎所有Java学习者都接触过XML文档,所以大家可能觉得XML如此简单,怎么可能需要一本书来介绍呢?  很多人可能觉得XML非常简单,因为他们每天都会接触XML文档,但如果再深入问一下:XML除了做配置文件之外,还能干什么?他们往往一无所知。  他们知道XML可以做配置文件,但可能不知道XML配置文件的结构是由DTD、Schema控制的——因为我经常看到有人问web.xml文件能包含哪些元素?如何将JSP文件配置成一个Servlet?等等诸如此类的问题,如果他知道阅读web.xml文件对应的DTD、Schema,那他就不会再存在这些疑问了。  他们可能不知道XML还可以作为一种轻量级的持久化解决方案,就像数据库一样,应用程序可以用类似于SQL的XQuery来查询XML文档中的信息。他们可能不知道XML可以直接作为表现层来代替传统的HTML……  后来我觉得,如果确实存在上面这些情况,那我就更应该有这样一本书:全面而深入地来介绍XML的相关知识,希望可以让大家掌握XML的全貌。作为配置文件只是XML的功能之一,而XML的作用远不止这些。  最后我和朱沭红老师达成一个共识:出版一本图书除了考虑经济上的回报之外,更多地应该考虑一本书对社会价值的作用。就我以一个老程序员的眼光来看,XML不管是对于Java平台、还是其他如.NET平台都具有非常重要的作用。就像做B/S开发的程序员,你可以选择Java、PHP或者其他,但你无法回避JavaScript;XML也是如此,它不仅对于Java平台是有用的,而且对于其他开发平台也是有用的。  由于XML技术有着广泛的用途,而广大Java学习者、开发者又对其重视不够,因而我们觉得出版这样一本书也许可以让大家对XML投以更多的目光,那这本书的价值也就体现出来了。  本书写给谁看  本书是疯狂Java体系丛书之一,学习本书无须任何XML基础,但DOM、SAX、dom4j、JDOM解析部分包含了大量Java编程,因此建议先阅读疯狂Java体系的《疯狂Java讲义》一书。如果时间允许,建议读者按照本书所附的学习线路图,遵循学习规律进行学习。

内容概要

  《疯狂XML讲义》主要以XML为核心,深入地介绍了XML的各种相关知识。《疯狂XML讲义》作为疯狂Java体系图书之一,依然保持该体系图书系统、全面的特点:不仅详细介绍了XML,文档的各种知识,还通过案例示范了实际开发中如何应用XML知识。  《疯狂XML讲义》主要分为五个部分。第一部分介绍了XML、DTD、XML Schema等基础知识,这些知识主要教读者如何定义有效的XML文档,这部分内容是深入学习后面知识的基础,也是每个使用XML的开发者都应该掌握的基础。第二部分介绍了CSS、XSLT和XPath等知识,通过使用CSS或XSLT,可直接将XML文档当成视图技术。第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4i和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过X Query可以查询XML,文档中的数据,就像使用SQL查询关系数据库的数据一样。第四部分介绍了Web Services和CXF,其中CXF是Java领域的主流Web Services框架,简单易用。第五部分则提供了两个综合性案例:基于XML的电子公告系统和电子拍卖系统,让读者将前面所学应用到实际项目中。尤其是电子拍卖系统,它是一个包含5个表,表之间具有复杂关联映射的系统,该案例采用目前最流行、最规范的轻量级Java EE架构,将整个应用分为领域对象层、DAO层和业务逻辑层,然后用CXF将业务逻辑组件包装成Web Services,从而可以将现有的Java EE项目与其他平台的、其他语言的异构项目进行整合,具有极好的指导价值和借鉴意义。  《疯狂XML讲义》大部分章节后都提供了相应的编程习题,供开发者巩固所学,将理论融入实际开发之用。关于这些编程习题的解题思路和参考答案可登录http://www.crazyit.org获取。  《疯狂XML讲义》是疯狂Java体系丛书之一,学习《疯狂XML讲义》无须任何XMI,基础,但DOM、SAX、dora4i、JDOM解析部分包含了大量Java编程,因此建议先认真阅读疯狂Java体系的《疯狂Java讲义》一书。

作者简介

  李刚,从事近10年的Java EE应用开发。  曾任LITEON公司的J2EE技术主管,负责该公司的企业信息化平台的架构设计。  曾任广州电信、广东龙泉科技等公司的技术培训导师  2007年3月26日的《电脑报》专访人物。  疯狂Java实洲营创始人,疯狂Java体系图书作者,曾任东方标准广州中心软件教学总监,曾兼任广东技术师范学院计算机科学系的兼职副教授。  培训的学生已在华为、立信、普信、网易、电信盈科、中企动力等公司就职。  国内知名的高端IT技术作家,已出版《疯狂Java讲义》、《轻量级Java EE企业应用实战》、《疯狂Aiax讲义》、《Struts 2.1权威指南》、《Ruby On Rails敏捷开发最佳实践》等著作。

书籍目录

第1章 XML概述 11.1 XML的起源 21.1.1 标记语言 21.1.2 XML的基本概念 31.1.3 XML和HTML 31.2 XML的优势 41.2.1 简单易用的标记语言 41.2.2 严格的格式 51.2.3 数据逻辑和显示逻辑分离 51.3 XML和Java EE 61.3.1 配置描述 6指定Web组件的配置信息是不是只能采用web.xml文件呢? 71.3.2 简化的数据交换 71.3.3 Web Services 81.4 XML的编辑工具 81.4.1 普通文本编辑工具 81.4.2 XMLSpy简介 91.4.3 使用XMLSpy编辑1.4.3 XML文档 91.4.4 Stylus Studio简介 111.4.5 使用Stylus Studio编辑1.4.5 XML文档 111.5 XML的竞争对手 121.5.1 Java的Annotation 121.5.2 轻量级的数据交换格式1.5.2 ——JSON 151.6 本章小结 17第2章 XML文档规则 182.1 XML文档的分类 192.1.1 格式不良好的XML文档 192.1.2 格式良好但无效的2.1.2 XML文档 202.1.3 有效的XML文档 222.2 XML文档的整体结构 222.2.1 有且仅有一个根元素 222.2.2 元素必须合理结束 232.2.3 元素之间必须合理嵌套 242.2.4 元素的属性必须有值 242.3 XML声明 26UTF-8不是兼容Unicode吗?那UTF-8也应该支持中文啊,为什么上面的XML文档会出现字符集错误的情况呢? 272.4 XML元素的基本规则 282.4.1 合法的标签名 282.4.2 嵌套子元素 292.4.3 空元素 292.5 字符数据 302.5.1 使用实体引用 312.5.2 使用CDATA标记 322.6 注释 332.7 处理指令 332.8 W3C对于属性的使用建议 352.9 换行处理 362.10 本章小结 36本章练习 36第3章 DTD详解 373.1 XML语义约束 38我一直有一个疑问:XML太“随意”了,我们想怎样定义元素都可以,想怎样嵌套子元素也行,想怎样定义属性也行,真的是这样吗?383.2 引入DTD 393.2.1 内部DTD 393.2.2 外部DTD 403.2.3 公用DTD 413.3 DTD文档的结构 413.3.1 验证XML文档的有效性 423.4 定义元素 423.4.1 定义任意类型的元素 433.4.2 定义空元素 443.4.3 定义字符串内容的元素 453.4.4 定义混合内容 453.5 定义子元素 473.5.1 有序的子元素 473.5.2 互斥的子元素 483.5.3 子元素出现的频率 483.5.4 组合子元素 493.5.5 无序的子元素 51上面的DTD中明明定义了、、和4个元素之间具有互斥关系,它们怎么可以同时出现呢?523.6 定义元素属性 533.6.1 对属性的约束规则 533.6.2 定义属性类型 553.7 定义实体 573.7.1 定义实体 573.7.2 定义参数实体 593.7.3 外部实体 603.7.4 外部参数实体 613.8 定义符号 613.8.1 未解析实体 62XML文档里的内容不是应该由XML解析器负责处理吗?如果XML解析器不负责处理,那这些数据岂不是就失去作用了? 623.8.2 ENTITY和ENTITIES3.8.2 类型的属性 633.8.3 NOTATION类型的属性 633.9 使用XMLSpy创建DTD 643.10 本章小结 65本章练习 65第4章 XML Schema基本语法 664.1 DTD和Schema 674.1.1 Schema概述及其优势 674.1.2 Schema在Java EE里的应用 684.2 XML Schema入门 694.2.1 XML Schema根元素 694.2.2 在XML中引用无命名4.2.2 空间的Schema 704.2.3 在XML中引用有命名4.2.3 空间的Schema 714.3 Schema中的注释 724.4 理解Schema的数据类型 724.5 Schema内置类型 744.5.1 字符串及相关类型 764.5.2 数值类型 774.5.3 日期、时间类型 784.5.4 boolean类型 804.5.5 anyURI类型 804.5.6 二进制数据 814.6 使用限制派生新类型 814.6.1 指定基类型的两种方式 824.6.2 指定类型的两种方式 844.6.3 范围约束 864.6.4 长度约束 864.6.5 精度约束 864.6.6 枚举约束 874.6.7 正则表达式约束 884.6.8 空白处理 884.7 使用派生列表类型 914.7.1 限制列表类型 924.8 使用派生联合类型 944.8.1 限制联合类型 964.9 列表和联合结合使用 974.10 阻止派生新的简单类型 984.10.1 使用final属性 984.10.2 为约束指定fixed属性 994.11 合并多个Schema 1004.11.1 使用include元素 1004.11.2 使用redefine元素 1014.11.3 使用import元素 1024.12 XMLSpy中关于Schema的4.12 操作 1034.12.1 创建新的Schema 1034.12.2 为XML创建Schema 1044.12.3 为XML分配Schema 1044.13 本章小结 105第5章 XML Schema高级知识 1065.1 使用anyType定义任意类型 1075.2 定义复杂类型 1085.2.1 定义复杂类型的方式 1095.2.2 扩展简单类型 109既然派生复杂类型的方式有两种,那接下来是不是应该介绍“限制简单类型来派生复杂类型”了? 1105.2.3 包含属性的两种方式 1115.2.4 扩展包含简单内容的复杂5.2.4 类型 1125.2.5 使用派生类型的另一种方式 114在上面的Schema中先定义了一个book_ Type类型,然后扩展该类型增加了一个price属性,为何不在定义book_Type类型时一次性添加isbn、name和price三个属性,而非要一次一次地添加呢?这样做有实际意义吗? 1145.2.6 限制包含简单内容的复杂类型 1155.2.7 限制anyType派生新类型 116为什么没有通过扩展anyType来派生新类型呢? 1175.2.8 包含子元素的两种方式 1205.2.8 空元素类型 1235.2.9 混合内容类型 1245.3 复杂类型的进一步派生 1255.3.1 限制空元素类型 1255.3.2 扩展空元素类型 1265.3.3 限制包含子元素的类型 1275.3.4 扩展包含子元素的类型 1285.3.5 限制混合内容类型 1315.3.6 扩展混合内容类型 1335.4 阻止派生新的类型 1335.5 通配符 1355.5.1 元素通配符 1355.5.2 属性通配符 1375.6 元素替换 1385.6.1 阻止自己被替换 1395.6.2 阻止指定派生类型的替换 1415.7 抽象元素和抽象类型 1435.7.1 抽象元素 1435.7.2 抽象类型 1445.8 一致性约束 1455.8.1 key约束 1475.8.2 unique约束 1495.8.3 keyref约束 1505.9 元素组与属性组 1525.10 定义符号 1535.11 本章小结 154本章练习 155如何确定一个XML元素所在的命名空间呢? 157第6章 命名空间详解 1566.1 使用命名空间 1576.2 Schema的命名空间支持 1596.2.1 在Schema中使用命名空间 1596.2.2 命名空间对XML文档的作用 1626.2.3 为属性使用命名空间限定 1666.2.4 命名空间对一致性约束的影响 1686.2.5 局部元素和局部属性的强制限定 1706.3 命名空间和DTD 1746.4 本章小结 176第7章 使用CSS显示XML文件 1777.1 样式单简介 1787.1.1 显示XML的两种常用样式单 1787.1.2 样式单的优势 1787.2 CSS的基本用法 1797.2.1 CSS基本语法 1797.2.2 引入外部样式文件 1807.2.3 使用内部CSS样式 1817.2.4 使用内联样式 1837.3 对XML文档有效的CSS7.3 选择器 1847.4 使用CSS显示XML 1867.5 本章小结 187第8章 使用XSLT显示XML 1888.1 XSL概述 1898.2 XSLT入门 1898.2.1 XSLT转换入门 189XSLT为什么不直接将XML根元素当成根元素呢? 1928.2.2 使用template元素定义模板 1928.2.3 使用apply-templates处理子节点 1938.2.4 使用value-of输出节点内容 1968.2.5 匹配节点的模式 1988.2.6 mode属性 2008.3 XSLT转换分类 2028.3.1 客户端转换和服务器端转换 2028.3.2 Xalan处理器 2028.3.3 Saxon处理器 205我发现用Saxon进行实时转换和用Xalan进行实时转换的JSP页面代码完全相同,这是为什么呢? 2078.4 XSLT的内置模板规则 2088.5 流程控制元素 2098.5.1 分支处理 2098.5.2 循环控制 2118.5.3 排序控制 2138.6 控制空白的处理方式 2158.7 创建结果树 2158.7.1 创建元素和属性 2168.7.2 创建文本 2218.7.3 创建处理指令 2228.7.4 创建注释 2228.7.5 复制 2238.7.6 输出格式化数值 2258.8 变量和参数 2308.8.1 为变量和参数指定值 2318.8.2 全局和局部的变量和参数 2328.8.3 改变参数值 2348.9 使用命名模板 2358.10 包含和导入 2388.10.1 使用import导入 2388.10.2 使用include包含 2398.10.3 解决模板定义冲突 2418.11 XSLT 1.1的fallback支持 2418.12 指定输出格式 2428.12.1 转换XML文档的相关格式 2428.12.2 转换HTML文档的相关格式 2448.13 XSLT的内置函数 2458.13.1 使用system-property函数 2458.13.2 使用current函数返回当前8.13.2 节点集 2468.13.3 使用element-available和8.13.3 function-available 函数 2468.13.4 使用unparsed-entity-uri函数 2478.13.5 使用document 函数处理多个源8.13.5 XML文档 2488.13.6 使用format-number 函数 2508.13.7 使用key函数 2518.13.8 使用generate-id函数 2548.14 XSLT 2.0的常用新功能 2558.14.1 分组 2558.14.2 多文档输出 2578.14.3 字符映射 2598.14.4 元素的改进 2608.14.5 数据类型绑定 2608.14.6 正则表达式支持 2618.14.7 用户自定义函数 2638.15 使用XMLSpy管理XSLT8.15 操作 2648.16 本章小结 265本章练习 265第9章 XPath语言详解 2669.1 XPath语言简介 2679.1.1 XPath节点 2679.1.2 XPath基本概念 2689.1.3 节点关系 2689.2 绝对路径和相对路径 2699.2.1 XPath基路径 2699.3 XPath基础语法 2709.3.1 轴(axis) 2719.3.2 节点测试(node-test) 2719.3.3 限定谓语(predicate) 2729.3.4 简化写法 2729.4 运算符和表达式 2739.4.1 算术运算符 2739.4.2 比较运算符 2749.4.3 逻辑运算符 2749.4.4 组合多个路径的运算符 2759.5 XPath 2.0新增的表达式 2759.5.1 for表达式 2759.5.2 if表达式 2789.5.3 some/every判断表达式 2799.6 XPath 2.0的类型支持 2809.7 内置函数库 2819.7.1 字符串相关函数 2819.7.2 数值相关函数 2839.7.3 日期和时间相关函数 2849.7.4 boolean值相关函数 2879.7.5 节点相关函数 2879.7.6 序列相关函数 2889.8 本章小结 290第10章 DOM、SAX和JAXP解析 29110.1 DOM、SAX和JAXP概述 292接口的实现不是类吗,怎么接口的实现还是接口啊? 29410.2 JAXP的DOM支持 29710.2.1 XML文档和DOM模型 29710.2.2 DOM树中的对象类型 29810.2.3 DOM解析器 29910.2.4 使用DTD验证XML文档 30010.2.5 使用DOM解析XML文档 30210.2.6 使用DOM创建XML文档 30410.2.7 使用DOM修改XML文档 30710.2.8 解析DTD信息 308如果我想获取DTD中的元素定义、属性定义等信息该怎么办? 31110.2.9 DOM和命名空间 31010.3 JAXP的SAX支持 31210.3.1 SAX的处理机制 31210.3.2 SAX解析器和监听器 313为何XMLReader在调用时不需要传入SAX解析事件的监听器呢?SAX解析不是总是基于事件机制的吗? 314XMLReader和SAXParser到底什么关系?我们到底应该用哪个呢? 31610.3.3 使用DTD验证XML的有效性 31610.3.4 使用SAX解析XML文档 31710.3.5 SAX和命名空间 32010.4 DOM和SAX的比较 32310.5 使用XML Schema验证XML10.5 文档 32410.5.1 SchemaFactory和验证 324上面的SchemaFactory的newInstance()方法中怎么还有一个schemaLanguage参数,它代表什么呢? 32610.5.2 获取节点的类型信息 32810.6 浏览器对DOM的支持 33010.7 本章小结 334本章练习 334第11章 使用dom4j处理XML文档 33511.1 dom4j简介 33611.1.1 dom4j的封装和优势 33611.1.2 下载和安装dom4j 33711.2 dom4j常用API 33811.3 使用dom4j访问XML文档 33911.3.1 验证XML文档 33911.3.2 使用dom4j解析XML文档 34011.3.3 使用访问者模式遍历XML文档 34211.4 使用dom4j创建XML文档 34411.5 修改XML文档 34511.6 使用dom4j获取命名空间信息 34611.7 本章小结 34911.3.3 本章练习 349第12章 使用JDOM处理XML文档 35012.1 JDOM简介 35112.1.1 JDOM常用API 35112.1.2 下载和安装JDOM 35212.2 使用JDOM访问XML文档的12.3 实例 35212.2.1 验证XML文档的有效性 35312.2.2 使用JDOM解析XML文档 35412.3 使用JDOM创建XML文档 35612.4 修改XML文档 35712.5 使用JDOM获取命名空间信息 35812.6 选择dom4j还是JDOM 36112.7 本章小结 361本章练习 361第13章 XQuery详解 36213.1 XQuery简介 36313.1.1 XQuery和XPath的关系 36313.1.2 XQuery和XSLT的关系 36313.2 使用XQuery 36413.2.1 使用XMLSpy查看XQuery13.2.1 结果 36513.2.2 使用Saxon执行XQuery查询 36613.3 基本表达式13.3 (Primary Expressions) 36713.3.1 直接量(Literal) 36713.3.2 变量引用 36713.3.3 圆括号表达式 36713.3.4 上下文项表达式 36713.3.5 函数调用 36713.4 序列表达式 36813.4.1 构造序列 36813.4.2 过滤表达式 36813.4.3 组合节点序列 36913.5 算术表达式 37013.6 比较表达式 37013.6.1 值比较 37113.6.2 通用比较 37113.6.3 节点比较 37113.7 逻辑表达式 37213.8 构造器 37313.8.1 直接构造 37313.8.2 计算构造 37313.9 FLWOR表达式 37313.9.1 for、let和return子句 37413.9.2 where子句 37513.9.3 order by子句 37613.10 if表达式 37613.11 some/every判断表达式 37713.12 与序列类型有关的表达式 37813.12.1 instance of 37813.12.2 typeswitch 37813.12.3 cast 37813.12.4 castable 37913.13 模块和序言 37913.13.1 序言 38013.13.2 版本声明 38013.13.3 模块声明 38013.13.4 设置器(setter) 38113.13.5 导入设置 38213.13.6 命名空间声明 38413.13.7 默认命名空间声明 38413.13.8 变量声明 38513.13.9 函数声明 38613.13.10 选项声明 38713.14 使用XQJ执行XQuery 38813.14.1 XQJ和JDBC的类比性 388JDBC API和接口我都知道,但JDBC实现好像很少听说啊? 38913.14.2 XQJ的编程步骤 38913.15 本章小结 392第14章 Web Services详解 39314.1 XML和Web Services 39414.1.1 Web Services概述 39414.1.2 Web Services平台概述 39514.1.3 Web Services的广泛应用 39614.2 SOA和云计算 39814.2.1 SOA和Web Services 39814.2.2 云计算和Web Services 39914.3 XML和SOAP协议 40014.3.1 SOAP基本语法 40014.3.2 Header元素 40114.3.3 Body元素 40314.3.4 Fault元素 40314.4 XML和WSDL 40414.4.1 WSDL基本语法 40414.4.2 portType元素 40914.4.3 binding元素 41114.4.4 service元素 41214.4.5 WSDL和UDDI 41314.5 使用CXF开发Web Services 41314.5.1 CXF概述 41414.5.2 下载和安装CXF 41414.5.3 使用CXF开发Web Services 415是否必须将Web Services服务接口的.class文件复制到客户端呢? 42214.5.4 动态客户端 42114.5.5 整合Spring开发Web Services 4234.5.6 为Web Services增加权限控制 42514.6 本章小结 429第15章 基于XML的电子公告系统 43015.1 系统设计 43115.1.1 系统组件的交互关系 43115.2 设计XML文档 43115.2.1 保存状态的XML文档 43215.2.2 定义XML Schema 43415.3 定义XSLT样式单 43615.3.1 为公告列表定义样式单 43615.3.2 为用户评论设计样式单 43815.4 实现控制器 44115.4.1 添加公告 44115.4.2 查看评论列表 444为什么不直接将XML文档保存在Web应用根路径下呢?这样不是就可以让浏览者直接访问这些XML文档了么 44615.4.3 添加评论 44515.5 本章小结 447本章练习 447第16章 Web Services案例——电子拍卖系统 44816.1 系统功能简介和架构设计 44916.1.1 系统功能简介 44916.1.2 系统架构设计 45016.2 持久层设计 45016.2.1 系统实体 45116.2.2 系统E-R图和数据表 45116.2.3 实现Hibernate PO 45316.2.4 管理SessionFactory 46116.3 实现系统DAO层 46216.3.1 DAO的基础配置 46416.3.2 实现系统DAO组件 46416.3.3 配置系统DAO组件 47016.4 实现业务逻辑层 47116.4.1 定义业务逻辑组件接口 47116.4.2 依赖注入DAO组件 47316.4.3 业务逻辑组件中的异常处理 47416.4.4 处理用户竞价 47616.4.5 判断拍卖物品状态 47816.4.6 事务管理 48016.4.7 配置业务层组件 48116.5 使用CXF提供Web Services 48316.5.1 启用CXF支持 48416.5.2 实现Web Services 48516.5.3 测试Web Services 49016.6 本章小结 491本章练习 492

章节摘录

  从图1.4中可以看出,由于不同计算机系统使用不兼容的格式来保存数据,从而导致不同系统之间数据交换存在障碍,但XML以纯文本格式对数据进行存储,因此提供了一种独立于软件和硬件的数据交换方式。  通过使用XML文档,开发人员可以在不兼容的系统之间交换数据,从而轻松解决不兼容系统之间数据交换的这个难题。  从图1.4中可以看出,任何系统都可以使用XML来保存程序状态,因此XML文档还是一种轻量级的持久化机制,XML文档以文本格式保存数据,这使得XML可以在不损失数据的情况下,更容易扩展或升级到新操作系统或新应用程序。  1.3.3 Web Services  Web Services是Java EE应用的一个重要方面,Web Services使用基于XML的消息处理作为数据通讯方式,消除了不同组件模型、操作系统和编程语言之间存在的差异,使异构系统能作为单个计算机网络协同运行。简而言之,Web Services是异构系统整合的重要方式。  不仅如此,当前一些前沿的技术概念,如SOA(面向服务的架构)和云计算等,都意图整合不同平台、不同系统的软件服务,而普通软件用户只需按通用规则使用这些软件服务即可。这些前沿的技术概念底层大都会选择以Web Services作为支撑。  Web Services建立在一些通用协议的基础上,如SOAP、WSDL和UDDI等,而这些协议都需要以XML作为支撑。

编辑推荐

  1.知识全面、专业性强《疯狂XML讲义》并不是一本关于XML基础的图书,《疯狂XML讲义》系统而深入地介绍了XML相关知识,不仅包括DTD、XML Schema等基础内容,也包括XSLT、X Path、X Query、DOM、SAX、JDOM和dom4j等高级内容。除此之外。还介绍了XML.在实际企业开发中一个重要的应用方向:Web Services。并介绍了Java领域的Web Services框架CXF的用法。这些知识点覆盖了XML相关的绝大部分内容,专业性非常强。  2.案例实际、实用性强  《疯狂XML讲义》前面各章讲解各小知识点时,不仅介绍了它们的基本语法,还提供了与之对应的小范例,希望读者能理论结合实际。边读边练,通过编码来掌握相应的知识。《疯狂XML讲义》除了介绍XML.及其相关知识之外,更重点介绍了如何将XML知识融入实际应用开发,例如书中最后两个案例。都是XML在实际企业开发中极好的范例。  3.深入浅出、易读性强  《疯狂XML讲义》与疯狂Java体系的其他图书一样,即使在介绍专业性极强的知识时,也尽量使用深入浅出的类比来帮助读者理解它们,然后配合针对性很强、重点突出的小示例来说明这些知识。降低初学者的学习难度。通过这种案例驱动的讲解方式。让读者阅读时更容易理解各知识点的功能;接下来又能迅速将所学知识应用于实际开发。  疯狂源自梦想  技术成就辉煌

图书封面

图书标签Tags

评论、评分、阅读与下载


    疯狂XML讲义 PDF格式下载


用户评论 (总计0条)

 
 

 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7