书籍详情
即用即查XML数据标记语言参考手册
作者:左伟明
出版社:人民邮电出版社
出版时间:2007-07-01
ISBN:9787115161147
定价:¥69.00
购买这本书可以去
内容简介
本书是一本XML参考手册,涉及XML各方面的内容。本书注重与实际应用的结合,可以帮助读者快速掌握XML的用法。 全书共6篇,从XML的基本概念开始,介绍了XML语汇(DTD和架构)、查询和处理XML(DOM、SAX、.NET)、XML与万维网应用技术(XHTML、CSS、HTML、RSS、SOAP)、可扩展样式表语言转换(XSLT)等。 本书包含大量的实例,有助于读者理解并应用XML技术,提高在实际应用中的开发能力,适合数据库管理员及应用开发者、系统设计师、从事Web应用开发的人员阅读。
作者简介
暂缺《即用即查XML数据标记语言参考手册》作者简介
目录
第1篇 XML基础
第1章 XML基本概念 3
1.1 XML的特征 3
1.2 XML的“是”与“非” 5
1.3 XML的应用 7
1.3.1 作为表达语义的文档 7
1.3.2 作为数据的载体 7
1.3.3 作为应用程序的配置文件 8
1.3.4 用于异构系统间的交互 8
1.4 总结 9
1.5 参考内容 9
1.5.1 XML技术的网上链接 9
1.5.2 XML编辑工具 11
第2章 XML语法提要 13
2.1 XML语法 13
2.1.1 XML声明 13
2.1.2 元素 15
2.1.3 属性列表与属性 16
2.1.4 命名规则简介 17
2.1.5 名称空间、前缀、本地名和限定名 17
2.1.6 文本与字符数据 18
2.1.7 DOCTYPE声明 19
2.1.8 处理指令 19
2.1.9 注释 20
2.1.10 字符引用与实体引用 20
2.1.11 空白与“xml:space”属性 21
2.1.12 良好的格式 22
2.1.13 有效的文档 23
2.2 XML编码 23
2.2.1 编码字符集 23
2.2.2 统一码的实现方式 24
2.3 总结 24
2.4 参考内容 25
第3章 XML中的名称空间(namespace) 26
3.1 基本知识 26
3.1.1 名称空间用于标识不同领域的XML名称 27
3.1.2 名称空间的声明形式 27
3.1.3 名称空间的作用范围 28
3.1.4 名称空间模块化XML文档 29
3.1.5 要以URI区分名称空间 29
3.2 名称空间作用范围示例 30
3.3 总结 32
第2篇 XML的“语汇”
第4章 XML文档类型定义(DTD) 35
4.1 基本知识 35
4.1.1 规定XML文档可用的词汇和结构 35
4.1.2 验证文档 36
4.1.3 不采用DTD文档验证XML文档的场合 36
4.2 DTD的语法 36
4.2.1 XML声明 37
4.2.2 DOCTYPE(文档类型声明) 37
4.2.3 ELEMENT(元素) 40
4.2.4 ATTLIST(属性列表) 42
4.2.5 ENTITY(实体) 44
4.2.6 INCLUDE、IGNORE(包含与忽略) 48
4.2.7 NOTATION(表示法) 49
4.2.8 注释 49
4.3 总结 49
4.4 参考内容 49
第5章 约句准篇的规范化架构(Schema) 51
5.1 基本知识 51
5.1.1 DTD的局限性与XML架构 51
5.1.2 架构是XML文档 52
5.1.3 架构用于描述、约束XML文档的结构和内容 54
5.1.4 架构比DTD定义更复杂的数据类型 54
5.1.5 数据类型派生 55
5.1.6 取值空间、语词表达形式和规范表达形式的关系 56
5.1.7 验证与实例文档 57
5.1.8 架构以目标名称空间区分语汇集 57
5.1.9 以目标名称空间关联架构和XML文档 57
5.1.10 可能逐渐取代文档类型定义 60
5.2 使用架构验证XML文档的步骤 60
5.2.1 创建调用MSXML处理器验证XML文档的工具 60
5.2.2 使用验证工具验证文档 62
5.3 XML架构纵览 62
5.3.1 描述文档结构的元素 62
5.3.2 描述取值约束的元素 65
5.3.3 架构中的数据类型 65
5.4 数据类型参考 68
5.4.1 anyURI(任何URI) 69
5.4.2 base64Binary(Base64编码二进制数据) 69
5.4.3 boolean(逻辑真假值) 69
5.4.4 byte(1字节有符号整数) 70
5.4.5 date(日期) 70
5.4.6 dateTime(日期与时间) 71
5.4.7 decimal(十进制数) 71
5.4.8 double(双精度浮点数) 72
5.4.9 duration(持续时间) 73
5.4.10 ENTITIES(非解析实体列表) 73
5.4.11 ENTITY(非解析实体) 73
5.4.12 float(单精度浮点数) 74
5.4.13 gDay(天) 75
5.4.14 gMonth(月份) 75
5.4.15 gMonthDay(连续出现的某月某天) 75
5.4.16 gYear(年份) 76
5.4.17 gYearMonth(年份与月份) 76
5.4.18 hexBinary(十六进制形式的二进制数据) 77
5.4.19 ID(惟一标识符) 77
5.4.20 IDREF(惟一标识符引用) 77
5.4.21 IDREFS(惟一标识符引用列表) 78
5.4.22 int(4个字节有符号整数) 78
5.4.23 integer(整数) 78
5.4.24 language(自然语言标识符) 79
5.4.25 long(8个字节有符号整数) 79
5.4.26 Name(名称) 80
5.4.27 NCName(无前缀名称) 80
5.4.28 negativeInteger(负整数) 81
5.4.29 NMTOKEN(名称符号) 81
5.4.30 NMTOKENS(名称符号列表) 81
5.4.31 nonNegativeInteger(非负整数) 82
5.4.32 nonPositiveInteger(非正整数) 82
5.4.33 normalizedString(规范化字符串) 82
5.4.34 NOTATION(标记法) 83
5.4.35 positiveInteger(正整数) 84
5.4.36 QName(带限定名名称) 84
5.4.37 short(2个字节有符号整数) 85
5.4.38 string(字符串) 85
5.4.39 time(时间) 86
5.4.40 token(表征字符串) 86
5.4.41 unsignedByte(1个字节无符号整数) 86
5.4.42 unsignedInt(4个字节无符号整数) 87
5.4.43 unsignedLong(8个字节无符号整数) 87
5.4.44 unsignedShort(2个字节无符号整数) 88
5.5 取值约束参考 88
5.5.1 “value”、“fixed”和“id”属性 89
5.5.2 enumeration(枚举约束) 90
5.5.3 fractionDigits(小数位) 90
5.5.4 length(长度) 91
5.5.5 maxExclusive(非包含最大值) 91
5.5.6 maxInclusive(包含最大值) 92
5.5.7 maxLength(最大长度) 93
5.5.8 minExclusive(非包含最小值) 93
5.5.9 minInclusive(包含最小值) 94
5.5.10 minLength(最小长度) 94
5.5.11 pattern(模式) 95
5.5.12 totalDigits(位数) 96
5.5.13 whiteSpace(空白) 96
5.6 架构元素参考 96
5.6.1 all(全体关系) 97
5.6.2 annotation(注文) 98
5.6.3 any(任何元素) 99
5.6.4 anyAttribute(任何属性) 103
5.6.5 appinfo(应用程序信息) 105
5.6.6 attribute(属性) 106
5.6.7 attributeGroup(属性组) 109
5.6.8 choice(选择关系) 111
5.6.9 complexContent(复杂内容) 113
5.6.10 complexType(复杂类型) 115
5.6.11 documentation(文书注释) 119
5.6.12 element(元素) 119
5.6.13 extension(扩展类型) 125
5.6.14 field(约束关系字段) 129
5.6.15 group(元素组) 130
5.6.16 import(导入外部架构) 134
5.6.17 include(包含外部架构) 136
5.6.18 key(键约束) 138
5.6.19 keyref(键引用约束) 141
5.6.20 list(简单类型列表) 144
5.6.21 notation(标记法) 146
5.6.22 redefine(重定义包含类型) 147
5.6.23 restriction(约束) 150
5.6.24 schema(架构) 157
5.6.25 selector(约束关系选择子) 161
5.6.26 sequence(序列关系) 162
5.6.27 simpleContent(简单内容) 164
5.6.28 simpleType(简单类型) 165
5.6.29 union(取值空间并集) 166
5.6.30 unique(惟一键约束) 168
5.7 实例文档属性 169
5.7.1 noNamespaceSchemaLocation(无名称空间架构位置) 169
5.7.2 schemaLocation(架构位置) 169
5.7.3 nil(空值) 170
5.7.4 type(数据类型) 170
5.8 总结 170
5.9 参考内容 171
5.9.1 RELAX NG(下一代XML正规语言描述) 171
5.9.2 Schematron(基于断言的架构) 172
第3篇 查询与处理XML文档
第6章 随机访问XML的文档对象模型(DOM) 177
6.1 基本知识 177
6.1.1 所有XML内容皆可被视为节点 177
6.1.2 反映XML层次型数据结构 178
6.1.3 文档对象模型的优缺点 179
6.1.4 接口与实现 180
6.1.5 文档对象模型的冗余实现 181
6.2 文档对象模型的应用 181
6.2.1 调用DOM处理引擎 181
6.2.2 加载XML文档 183
6.2.3 处理文档节点 185
6.2.4 保存文档对象 188
6.2.5 验证文档 189
6.2.6 执行扩展样式表语言转换(XSLT) 192
6.2.7 执行XPath查询 192
6.3 微软的MSXML文档对象模型实现 193
6.3.1 MSXML文档对象模型的接口一览 193
6.3.2 IXMLDOMDocument接口、XMLDocument类和FreeThreadedDOMDocument类(文档) 194
6.3.3 IXMLDOMDocument2接口(扩展的文档结构) 201
6.3.4 IXMLDOMNamedNodeMap接口(具名节点映射) 204
6.3.5 IXMLDOMNode接口(节点) 207
6.3.6 IXMLDOMNodeList接口(节点列表) 219
6.3.7 IXMLDOMParseError接口(解析错误) 220
6.3.8 IXMLDOMElement接口(元素) 221
6.3.9 IXMLDOMAttribute接口(属性) 222
6.3.10 IXMLDOMCharacterData接口(字符数据) 223
6.3.11 IXMLDOMText接口(文本) 224
6.3.12 IXMLDOMComment接口(注释) 224
6.3.13 IXMLDOMCDATASection接口(CDATA片段) 224
6.3.14 IXMLDOMProcessingInstruction接口(处理指令) 225
6.3.15 IXMLDOMDocumentType接口(DOCTYPE声明) 226
6.3.16 IXMLDOMEntity接口(实体) 226
6.3.17 IXMLDOMNotation接口(标记法) 226
6.3.18 IXMLDOMEntityReference接口(实体引用) 227
6.3.19 IXMLDOMImplementation接口(DOM实现) 227
6.4 Java中的文档对象模型实现 227
6.4.1 JAXP的DOM接口 227
6.4.2 使用JAXP的XML DOM 228
6.5 总结 231
6.6 参考内容 231
第7章 查询XML数据之路(XPath) 233
7.1 基本知识 233
7.1.1 XPath体现了XML的层次结构和线性结构 233
7.1.2 XPath定位操作返回节点列表 235
7.1.3 根节点不是根元素 235
7.1.4 绝对定位和相对定位 235
7.2 使用MSXML文档对象模型执行XPath查询 235
7.3 XPath语法提要 240
7.3.1 多个定位步骤组合成为一个XML路径 240
7.3.2 XPath表达式的上下文 243
7.3.3 定位步骤由轴、节点测试和谓项3部分组成 244
7.3.4 轴 245
7.3.5 节点测试和函数 246
7.3.6 谓项与操作符 248
7.4 XPath的轴 252
7.4.1 self::(本节点轴)与“.”缩写形式 254
7.4.2 attribute::(属性节点轴)与“@”缩写形式 254
7.4.3 child::(子节点轴,默认的XPath轴) 254
7.4.4 descendant::(后代节点轴) 255
7.4.5 descendant-or-self::(后代或本节点轴)与“//”缩写形式 256
7.4.6 parent::(父节点轴)与“..”缩写形式 257
7.4.7 ancestor::(先代节点轴) 258
7.4.8 ancestor-or-self::(先代或本节点轴) 259
7.4.9 following-sibling::(后继兄弟节点轴) 259
7.4.10 preceding-sibling::(前导兄弟节点轴) 260
7.4.11 following::(后继节点轴) 260
7.4.12 preceding::(前导节点轴) 260
7.4.13 namespace::(名称空间轴) 261
7.5 节点集函数 262
7.5.1 count(节点集节点计数) 263
7.5.2 id(根据ID属性选择元素) 263
7.5.3 last(当前上下文大小) 265
7.5.4 local-name(不包含名称空间前缀的节点名称) 266
7.5.5 name(节点全名) 266
7.5.6 namespace-uri(返回名称空间URI) 266
7.5.7 position(当前节点在上下文中的位置) 266
7.6 字符串函数 267
7.6.1 concat(串联传入字符串) 267
7.6.2 contains(检查字符串1是否包含字符串2) 267
7.6.3 normalize-space(规范化传入字符串中的空白) 268
7.6.4 starts-with(检查字符串1是否以字符串2开始) 268
7.6.5 string(转换为字符串) 268
7.6.6 string-length(传入字符串中字符的个数) 269
7.6.7 substring(取传入字符串的一部分) 269
7.6.8 substring-after(某字符串之后的部分) 270
7.6.9 substring-before(某字符串之前的部分) 270
7.6.10 translate(替换、删除字符) 270
7.7 布尔函数 271
7.7.1 boolean(转换为布尔值) 271
7.7.2 false(返回布尔假值) 272
7.7.3 lang(检查“xml:lang”属性是否属于指定的语言或该语言的子集) 272
7.7.4 not(取反布尔值) 272
7.7.5 true(返回布尔真值) 273
7.8 数值函数 273
7.8.1 ceiling(不小于传入数值的最小整数) 273
7.8.2 floor(不大于传入数值的最大整数) 273
7.8.3 number(转换为数值) 273
7.8.4 round(四舍五入取整) 274
7.8.5 sum(节点转换成数值后求和) 274
7.9 节点类型测试 275
7.9.1 comment()(匹配注释节点) 275
7.9.2 node()(匹配任何节点) 275
7.9.3 processing-instruction()(匹配处理指令) 276
7.9.4 text()(匹配文本节点) 276
7.10 XML路径匹配示例 276
7.11 总结 278
7.12 参考内容 278
7.12.1 XPath 2.0的重大变化 278
7.12.2 XPath 2.0的新特性 279
第8章 简单XML应用程序编程接口(SAX) 281
8.1 基本知识 281
8.1.1 SAX解析器的特征 281
8.1.2 SAX接口一览 282
8.2 使用Java创建SAX处理程序 284
8.2.1 使用Eclipse创建新的Java方案 284
8.2.2 向Java方案添加SAX处理程序代码文件 285
8.2.3 运行第一个SAX处理程序 285
8.2.4 为读取器添加内容处理器 287
8.2.5 使用SAX处理文档时的注意事项 291
8.2.6 余论 291
8.3 SAX接口参考 291
8.3.1 XMLReader接口(读取器) 292
8.3.2 ContentHandler接口(内容处理器) 295
8.3.3 Attributes接口(属性列表) 297
8.3.4 Locator接口(定位器) 298
8.3.5 InputSource类(输入源) 299
8.3.6 ErrorHandler接口(错误处理器) 300
8.3.7 EntityResolver接口(实体解析器) 300
8.3.8 DTDHandler接口(文档类型定义处理器) 301
8.3.9 DefaultHandler类(默认处理器) 301
8.3.10 LexicalHandler接口(文词处理器) 302
8.3.11 DeclHandler接口(声明处理器) 302
8.3.12 XMLFilter接口(过滤器) 303
8.3.13 XMLFilterImpl类(XML过滤器实现) 311
8.4 总结 317
第9章 使用微软.NET框架处理XML 318
9.1 基本知识 318
9.1.1 内存中处理XML的形式 318
9.1.2 XmlReader与SAX的比较 319
9.1.3 使用流式XmlWriter将XML写入文件 320
9.1.4 XML数据文件与数据集的联系 320
9.1.5 从XML文档中推断架构 320
9.1.6 XML序列化和反序列化沟通面向对象编程领域 321
9.1.7 各种技术的整合 323
9.2 使用Visual Studio开发.NET XML项目 324
9.2.1 建立新的窗体项目 325
9.2.2 向窗体添加控件和代码 326
9.2.3 调试应用程序 329
9.2.4 小结 329
9.3 在内存中使用文档对象模型(DOM)处理文档 330
9.3.1 .NET文档对象模型中的类层次关系 330
9.3.2 XmlNodeType枚举(XML节点类型) 330
9.3.3 XmlNode抽象类(XML节点) 331
9.3.4 XmlDocument类(XML文档)与XmlNameTable类(XML名称表) 333
9.3.5 XmlNodeList类(Xml节点列表) 336
9.3.6 应用示例 337
9.4 在内存中使用XPath模型处理XML文档 341
9.4.1 在文档对象模型、XPath模型之间选择 342
9.4.2 XPathNavigator类(XPath导航器) 342
9.4.3 XPathNodeIterator类(XPath遍历器) 350
9.4.4 应用示例 351
9.5 使用XmlReader流式读取XML 354
9.5.1 XmlReaderSettings类(参与构造XmlReader) 355
9.5.2 XmlReader类(XML读取器) 357
9.5.3 使用读取器验证XML文档 366
9.6 使用XmlWriter流式写出XML 369
9.6.1 XmlWriterSettings类(参与构造XmlWriter) 370
9.6.2 XmlWriter类(XML编写器) 371
9.7 使用流式机制编写和提取XML内容(与SAX比较) 377
9.8 关系数据与XML之间的桥梁——数据集与XML数据文档 379
9.8.1 数据集的结构 380
9.8.2 将XML文档加载到数据集 380
9.8.3 从数据集写出XML文档 381
9.8.4 数据集与XML数据文档同步 382
9.9 使用.NET中的类和工具自动编写架构 387
9.9.1 使用XmlSchemaInference类推断架构 387
9.9.2 使用XSD.exe工具推断架构 390
9.10 面向对象编程模型与XML之间的桥梁——XML序列化和反序列化 390
9.10.1 使用XmlSerializer执行序列化 390
9.10.2 使用XmlSerializer执行反序列化 393
9.10.3 使用属性元数据控制XML序列化 396
9.11 总结 400
第4篇 XML与万维网
第10章 从HTML到XHTML 405
10.1 HTML的基本知识 405
10.1.1 HTML的基本组成部分 405
10.1.2 HTML中一般不能自定义语汇集 406
10.1.3 HTML的语法不严谨 406
10.2 XHTML的语法特征 407
10.3 扩展XHTML的语汇 411
10.4 使用HTML Tidy将HTML转换到XHTML 411
10.5 使用HyperMarkup将HTML转换为XHTML 413
10.5.1 安装HyperMarkup 413
10.5.2 HyperMarkup的原理 413
10.5.3 将HTML转换为XHTML 418
10.5.4 将HTML转换为XML片段或XML文档 418
10.5.5 定制XML生成器 419
10.6 总结 420
第11章 级联样式表(CSS)与XML 421
11.1 基本知识 421
11.1.1 使用“xml-stylesheet”处理指令指示浏览器用CSS呈现文档 421
11.1.2 内容与形式的分离 423
11.1.3 使用CSS呈现XML文档的局限 425
11.2 CSS匹配规则参考 425
11.2.1 选择子匹配元素 426
11.2.2 继承 426
11.2.3 后代选择子匹配后代元素 427
11.2.4 使用组合同时匹配多个元素 427
11.2.5 通用选择子通配所有元素 428
11.2.6 子代选择子匹配子元素 428
11.2.7 兄弟选择子匹配兄弟元素 429
11.2.8 第一子元素伪类匹配第一子元素 429
11.2.9 属性选择子匹配指定属性的元素 429
11.2.10 类选择子与ID选择子 430
11.3 总结 431
11.4 参考内容 431
第12章 HTML、ASP网页中的XML 433
12.1 HTML中的数据岛(Data Island) 433
12.1.1 数据岛在HTML中的声明形式 433
12.1.2 数据岛的属性与事件 434
12.1.3 应用示例:访问内嵌数据岛的数据 434
12.1.4 应用示例:访问外部XML数据,不刷新页面更新其显示内容 436
12.2 ASP、ASP.NET中的XML应用简介 440
12.3 AJAX(异步Java脚本与XML) 442
12.3.1 传统HTML表单交互机制的缺陷 442
12.3.2 使用XMLHTTPRequest异步回发请求 443
12.3.3 使用XML数据岛异步回发请求 445
12.3.4 使用IFrame异步回发请求 446
12.3.5 各种异步请求回发机制的利弊 446
12.4 总结 446
第13章 网站摘要与RSS 447
13.1 RSS的各个版本 447
13.2 RSS元素参考 448
13.2.1 RSS 2.0元素一览 448
13.2.2 RSS的根元素 448
13.2.3 channel(频道)元素及其子元素 448
13.2.4 item(项目)元素及其子元素 449
13.2.5 RSS 2.0示例 450
13.2.6 RSS 1.0与RSS 2.0的区别 451
13.2.7 RSS 1.0的完整示例 452
13.3 参考内容 453
第14章 XML与简单对象访问协议(SOAP) 455
14.1 基本知识 455
14.1.1 SOAP的应用场合 455
14.1.2 SOAP消息的封装 456
14.1.3 SOAP节点,以及请求与响应的消息交换模式 457
14.2 SOAP元素参考 458
14.2.1 Envelope(信函) 458
14.2.2 Header(报头) 458
14.2.3 Body(报文) 459
14.2.4 Fault(故障) 460
14.3 总结 461
14.4 参考内容 461
第5篇 可扩展样式表语言转换(XSLT)
第15章 可扩展样式表语言转换(XSLT) 465
15.1 基本知识 465
15.1.1 XSLT处理器在转换过程中处于核心位置 466
15.1.2 一次编写、多次重用 466
15.1.3 3种输出方式:XML、HTML和文本 467
15.1.4 XSLT中的模板驱动过程 467
15.1.5 3个内建模板规则 472
15.1.6 模板优先级问题 473
15.1.7 格式化显示XML文档 474
15.1.8 XSL转换与CSS格式化的比较 477
15.1.9 不要以编程语言或数据查询语言的准则要求XSL转换 479
15.2 编程调用XSLT处理器 479
15.2.1 在脚本中调用MSXML的XSLT处理器 479
15.2.2 使用.NET的XslCompiledTransform类执行XSL转换 483
15.2.3 在Java中使用Saxon执行XSL转换 486
15.3 XSLT语言参考:元素 488
15.3.1 XSLT元素纵览 488
15.3.2 本节示例所用的样本XML文档 491
15.3.3 apply-imports(应用导入的模板规则) 493
15.3.4 apply-templates(应用模板) 494
15.3.5 attribute(在标记语言输出中生成属性) 497
15.3.6 attribute-set(声明属性集) 500
15.3.7 call-template(调用具名模板) 502
15.3.8 choose(多条件匹配) 504
15.3.9 comment(在置标元素输出中生成注释) 508
15.3.10 copy(将当前节点复制到标记语言输出) 509
15.3.11 copy-of(选择节点,将其属性、后代节点复制到标记语言结果树) 510
15.3.12 decimal-format(声明十进制格式) 512
15.3.13 element(在标记语言输出中生成元素) 515
15.3.14 fallback(缺失特性处理) 516
15.3.15 for-each(处理节点集内的每个节点) 517
15.3.16 if(单条件匹配) 520
15.3.17 import(低优先级导入模板) 522
15.3.18 include(同等优先级包含模板) 523
15.3.19 key(建立XML节点索引) 524
15.3.20 message(在输出中生成消息文本) 528
15.3.21 namespace-alias(替换名称空间前缀) 529
15.3.22 number(生成编号) 530
15.3.23 otherwise(多条件匹配的默认条件) 536
15.3.24 output(声明输出方式) 536
15.3.25 param(声明XSLT文档或模板的参数) 539
15.3.26 preserve-space(保留指定元素列表的空白) 542
15.3.27 processing-instruction(在XML输出中生成处理指令) 544
15.3.28 sort(排序节点集) 545
15.3.29 strip-space(剪除指定元素列表的空白) 548
15.3.30 stylesheet(XSLT文档根元素) 548
15.3.31 template(声明具名模板或模板规则) 549
15.3.32 text(输出文本) 551
15.3.33 transform(XSLT文档根元素) 553
15.3.34 value-of(将选定节点的字符串形式作为文本节点插入到输出) 553
15.3.35 variable(声明样式表或模板的变量) 554
15.3.36 when(指定choose中的条件) 559
15.3.37 with-param(向目标模板传入参数) 559
15.4 XSLT语言参考:函数 559
15.4.1 current(返回当前节点) 560
15.4.2 document(获取外部文档) 562
15.4.3 element-aviable(指定名称的XSLT扩展元素是否可用) 564
15.4.4 format-number(将数值格式化为字符串) 564
15.4.5 function-available(检查XSLT处理器是否支持指定名称的函数) 564
15.4.6 generate-id(为节点生成惟一的标识符) 565
15.4.7 key(获取具有指定值的“key”元素索引节点) 567
15.4.8 system-property(查询XSLT处理器属性) 567
15.4.9 unparsed-entity-uri(获取非解析实体[NDATA]的URI) 567
15.5 总结 568
15.6 关于XSLT 2.0的参考内容 568
15.6.1 XSLT 2.0将采用XPath 2.0 569
15.6.2 使用临时树代替结果树片段 569
15.6.3 使用“for-each-group”元素分组XML节点 569
15.6.4 使用“function”元素自定义用于XPath表达式的函数 570
15.6.5 使用“result-document”元素生成多个结果文档 571
15.6.6 使用“analyze-string”和正则表达式替换字符串 573
15.6.7 架构支持 574
15.6.8 转换的开始点 574
15.6.9 节点比较规则与数据类型相关 574
15.6.10 “for-each”的节点处理转向序列处理 574
15.6.11 XHTML文档输出方式 574
15.6.12 “next-match”元素应用当前模板中被覆盖的模板 574
15.6.13 推荐使用“character-map”元素代替“disable-output-escaping”属性 575
15.6.14 格式化日期和时间的新函数 576
15.6.15 可以穿透模板的“隧道参数” 576
15.6.16 模板的模式 576
15.6.17 不需要使用显式的前缀来匹配默认名称空间 576
15.7 其他参考内容 577
15.7.1 XML查询(XQuery) 577
15.7.2 XSLT处理器 578
第16章 扩展XSLT的功能 579
16.1 基本知识 579
16.1.1 扩展方式和实现形式 579
16.1.2 在功能与可移植性之间权衡 580
16.2 XSLT处理器本身的扩展功能 580
16.2.1 EXSLT(XSLT扩展) 581
16.2.2 微软XSLT的扩展元素“msxsl:script” 582
16.3 向XSLT处理器传入外部参数 583
16.3.1 示例:将当前日期传入XSL转换 583
16.3.2 示例:将多份缓存的XML文档传入XSL以提高转换效率 584
16.4 向XSLT处理器传入扩展对象 588
16.5 总结 590
第6篇 XML设计
第17章 XML设计技巧 593
17.1 组织文档结构 593
17.1.1 选择最能表达含义的词汇作为元素或属性的名称 593
17.1.2 为元数据选择适当的位置 594
17.1.3 连接引用 596
17.1.4 为与文档相关的二进制数据选择适当的位置 598
17.1.5 使用名称空间和容器 599
17.1.6 使用一般化的扩展属性 600
17.2 使用关系数据库处理的考虑 602
17.2.1 使用线性结构代替层次结构 602
17.2.2 借助关系数据库存储和处理大型XML文档 603
17.3 总结 606
17.4 参考内容 607
第1章 XML基本概念 3
1.1 XML的特征 3
1.2 XML的“是”与“非” 5
1.3 XML的应用 7
1.3.1 作为表达语义的文档 7
1.3.2 作为数据的载体 7
1.3.3 作为应用程序的配置文件 8
1.3.4 用于异构系统间的交互 8
1.4 总结 9
1.5 参考内容 9
1.5.1 XML技术的网上链接 9
1.5.2 XML编辑工具 11
第2章 XML语法提要 13
2.1 XML语法 13
2.1.1 XML声明 13
2.1.2 元素 15
2.1.3 属性列表与属性 16
2.1.4 命名规则简介 17
2.1.5 名称空间、前缀、本地名和限定名 17
2.1.6 文本与字符数据 18
2.1.7 DOCTYPE声明 19
2.1.8 处理指令 19
2.1.9 注释 20
2.1.10 字符引用与实体引用 20
2.1.11 空白与“xml:space”属性 21
2.1.12 良好的格式 22
2.1.13 有效的文档 23
2.2 XML编码 23
2.2.1 编码字符集 23
2.2.2 统一码的实现方式 24
2.3 总结 24
2.4 参考内容 25
第3章 XML中的名称空间(namespace) 26
3.1 基本知识 26
3.1.1 名称空间用于标识不同领域的XML名称 27
3.1.2 名称空间的声明形式 27
3.1.3 名称空间的作用范围 28
3.1.4 名称空间模块化XML文档 29
3.1.5 要以URI区分名称空间 29
3.2 名称空间作用范围示例 30
3.3 总结 32
第2篇 XML的“语汇”
第4章 XML文档类型定义(DTD) 35
4.1 基本知识 35
4.1.1 规定XML文档可用的词汇和结构 35
4.1.2 验证文档 36
4.1.3 不采用DTD文档验证XML文档的场合 36
4.2 DTD的语法 36
4.2.1 XML声明 37
4.2.2 DOCTYPE(文档类型声明) 37
4.2.3 ELEMENT(元素) 40
4.2.4 ATTLIST(属性列表) 42
4.2.5 ENTITY(实体) 44
4.2.6 INCLUDE、IGNORE(包含与忽略) 48
4.2.7 NOTATION(表示法) 49
4.2.8 注释 49
4.3 总结 49
4.4 参考内容 49
第5章 约句准篇的规范化架构(Schema) 51
5.1 基本知识 51
5.1.1 DTD的局限性与XML架构 51
5.1.2 架构是XML文档 52
5.1.3 架构用于描述、约束XML文档的结构和内容 54
5.1.4 架构比DTD定义更复杂的数据类型 54
5.1.5 数据类型派生 55
5.1.6 取值空间、语词表达形式和规范表达形式的关系 56
5.1.7 验证与实例文档 57
5.1.8 架构以目标名称空间区分语汇集 57
5.1.9 以目标名称空间关联架构和XML文档 57
5.1.10 可能逐渐取代文档类型定义 60
5.2 使用架构验证XML文档的步骤 60
5.2.1 创建调用MSXML处理器验证XML文档的工具 60
5.2.2 使用验证工具验证文档 62
5.3 XML架构纵览 62
5.3.1 描述文档结构的元素 62
5.3.2 描述取值约束的元素 65
5.3.3 架构中的数据类型 65
5.4 数据类型参考 68
5.4.1 anyURI(任何URI) 69
5.4.2 base64Binary(Base64编码二进制数据) 69
5.4.3 boolean(逻辑真假值) 69
5.4.4 byte(1字节有符号整数) 70
5.4.5 date(日期) 70
5.4.6 dateTime(日期与时间) 71
5.4.7 decimal(十进制数) 71
5.4.8 double(双精度浮点数) 72
5.4.9 duration(持续时间) 73
5.4.10 ENTITIES(非解析实体列表) 73
5.4.11 ENTITY(非解析实体) 73
5.4.12 float(单精度浮点数) 74
5.4.13 gDay(天) 75
5.4.14 gMonth(月份) 75
5.4.15 gMonthDay(连续出现的某月某天) 75
5.4.16 gYear(年份) 76
5.4.17 gYearMonth(年份与月份) 76
5.4.18 hexBinary(十六进制形式的二进制数据) 77
5.4.19 ID(惟一标识符) 77
5.4.20 IDREF(惟一标识符引用) 77
5.4.21 IDREFS(惟一标识符引用列表) 78
5.4.22 int(4个字节有符号整数) 78
5.4.23 integer(整数) 78
5.4.24 language(自然语言标识符) 79
5.4.25 long(8个字节有符号整数) 79
5.4.26 Name(名称) 80
5.4.27 NCName(无前缀名称) 80
5.4.28 negativeInteger(负整数) 81
5.4.29 NMTOKEN(名称符号) 81
5.4.30 NMTOKENS(名称符号列表) 81
5.4.31 nonNegativeInteger(非负整数) 82
5.4.32 nonPositiveInteger(非正整数) 82
5.4.33 normalizedString(规范化字符串) 82
5.4.34 NOTATION(标记法) 83
5.4.35 positiveInteger(正整数) 84
5.4.36 QName(带限定名名称) 84
5.4.37 short(2个字节有符号整数) 85
5.4.38 string(字符串) 85
5.4.39 time(时间) 86
5.4.40 token(表征字符串) 86
5.4.41 unsignedByte(1个字节无符号整数) 86
5.4.42 unsignedInt(4个字节无符号整数) 87
5.4.43 unsignedLong(8个字节无符号整数) 87
5.4.44 unsignedShort(2个字节无符号整数) 88
5.5 取值约束参考 88
5.5.1 “value”、“fixed”和“id”属性 89
5.5.2 enumeration(枚举约束) 90
5.5.3 fractionDigits(小数位) 90
5.5.4 length(长度) 91
5.5.5 maxExclusive(非包含最大值) 91
5.5.6 maxInclusive(包含最大值) 92
5.5.7 maxLength(最大长度) 93
5.5.8 minExclusive(非包含最小值) 93
5.5.9 minInclusive(包含最小值) 94
5.5.10 minLength(最小长度) 94
5.5.11 pattern(模式) 95
5.5.12 totalDigits(位数) 96
5.5.13 whiteSpace(空白) 96
5.6 架构元素参考 96
5.6.1 all(全体关系) 97
5.6.2 annotation(注文) 98
5.6.3 any(任何元素) 99
5.6.4 anyAttribute(任何属性) 103
5.6.5 appinfo(应用程序信息) 105
5.6.6 attribute(属性) 106
5.6.7 attributeGroup(属性组) 109
5.6.8 choice(选择关系) 111
5.6.9 complexContent(复杂内容) 113
5.6.10 complexType(复杂类型) 115
5.6.11 documentation(文书注释) 119
5.6.12 element(元素) 119
5.6.13 extension(扩展类型) 125
5.6.14 field(约束关系字段) 129
5.6.15 group(元素组) 130
5.6.16 import(导入外部架构) 134
5.6.17 include(包含外部架构) 136
5.6.18 key(键约束) 138
5.6.19 keyref(键引用约束) 141
5.6.20 list(简单类型列表) 144
5.6.21 notation(标记法) 146
5.6.22 redefine(重定义包含类型) 147
5.6.23 restriction(约束) 150
5.6.24 schema(架构) 157
5.6.25 selector(约束关系选择子) 161
5.6.26 sequence(序列关系) 162
5.6.27 simpleContent(简单内容) 164
5.6.28 simpleType(简单类型) 165
5.6.29 union(取值空间并集) 166
5.6.30 unique(惟一键约束) 168
5.7 实例文档属性 169
5.7.1 noNamespaceSchemaLocation(无名称空间架构位置) 169
5.7.2 schemaLocation(架构位置) 169
5.7.3 nil(空值) 170
5.7.4 type(数据类型) 170
5.8 总结 170
5.9 参考内容 171
5.9.1 RELAX NG(下一代XML正规语言描述) 171
5.9.2 Schematron(基于断言的架构) 172
第3篇 查询与处理XML文档
第6章 随机访问XML的文档对象模型(DOM) 177
6.1 基本知识 177
6.1.1 所有XML内容皆可被视为节点 177
6.1.2 反映XML层次型数据结构 178
6.1.3 文档对象模型的优缺点 179
6.1.4 接口与实现 180
6.1.5 文档对象模型的冗余实现 181
6.2 文档对象模型的应用 181
6.2.1 调用DOM处理引擎 181
6.2.2 加载XML文档 183
6.2.3 处理文档节点 185
6.2.4 保存文档对象 188
6.2.5 验证文档 189
6.2.6 执行扩展样式表语言转换(XSLT) 192
6.2.7 执行XPath查询 192
6.3 微软的MSXML文档对象模型实现 193
6.3.1 MSXML文档对象模型的接口一览 193
6.3.2 IXMLDOMDocument接口、XMLDocument类和FreeThreadedDOMDocument类(文档) 194
6.3.3 IXMLDOMDocument2接口(扩展的文档结构) 201
6.3.4 IXMLDOMNamedNodeMap接口(具名节点映射) 204
6.3.5 IXMLDOMNode接口(节点) 207
6.3.6 IXMLDOMNodeList接口(节点列表) 219
6.3.7 IXMLDOMParseError接口(解析错误) 220
6.3.8 IXMLDOMElement接口(元素) 221
6.3.9 IXMLDOMAttribute接口(属性) 222
6.3.10 IXMLDOMCharacterData接口(字符数据) 223
6.3.11 IXMLDOMText接口(文本) 224
6.3.12 IXMLDOMComment接口(注释) 224
6.3.13 IXMLDOMCDATASection接口(CDATA片段) 224
6.3.14 IXMLDOMProcessingInstruction接口(处理指令) 225
6.3.15 IXMLDOMDocumentType接口(DOCTYPE声明) 226
6.3.16 IXMLDOMEntity接口(实体) 226
6.3.17 IXMLDOMNotation接口(标记法) 226
6.3.18 IXMLDOMEntityReference接口(实体引用) 227
6.3.19 IXMLDOMImplementation接口(DOM实现) 227
6.4 Java中的文档对象模型实现 227
6.4.1 JAXP的DOM接口 227
6.4.2 使用JAXP的XML DOM 228
6.5 总结 231
6.6 参考内容 231
第7章 查询XML数据之路(XPath) 233
7.1 基本知识 233
7.1.1 XPath体现了XML的层次结构和线性结构 233
7.1.2 XPath定位操作返回节点列表 235
7.1.3 根节点不是根元素 235
7.1.4 绝对定位和相对定位 235
7.2 使用MSXML文档对象模型执行XPath查询 235
7.3 XPath语法提要 240
7.3.1 多个定位步骤组合成为一个XML路径 240
7.3.2 XPath表达式的上下文 243
7.3.3 定位步骤由轴、节点测试和谓项3部分组成 244
7.3.4 轴 245
7.3.5 节点测试和函数 246
7.3.6 谓项与操作符 248
7.4 XPath的轴 252
7.4.1 self::(本节点轴)与“.”缩写形式 254
7.4.2 attribute::(属性节点轴)与“@”缩写形式 254
7.4.3 child::(子节点轴,默认的XPath轴) 254
7.4.4 descendant::(后代节点轴) 255
7.4.5 descendant-or-self::(后代或本节点轴)与“//”缩写形式 256
7.4.6 parent::(父节点轴)与“..”缩写形式 257
7.4.7 ancestor::(先代节点轴) 258
7.4.8 ancestor-or-self::(先代或本节点轴) 259
7.4.9 following-sibling::(后继兄弟节点轴) 259
7.4.10 preceding-sibling::(前导兄弟节点轴) 260
7.4.11 following::(后继节点轴) 260
7.4.12 preceding::(前导节点轴) 260
7.4.13 namespace::(名称空间轴) 261
7.5 节点集函数 262
7.5.1 count(节点集节点计数) 263
7.5.2 id(根据ID属性选择元素) 263
7.5.3 last(当前上下文大小) 265
7.5.4 local-name(不包含名称空间前缀的节点名称) 266
7.5.5 name(节点全名) 266
7.5.6 namespace-uri(返回名称空间URI) 266
7.5.7 position(当前节点在上下文中的位置) 266
7.6 字符串函数 267
7.6.1 concat(串联传入字符串) 267
7.6.2 contains(检查字符串1是否包含字符串2) 267
7.6.3 normalize-space(规范化传入字符串中的空白) 268
7.6.4 starts-with(检查字符串1是否以字符串2开始) 268
7.6.5 string(转换为字符串) 268
7.6.6 string-length(传入字符串中字符的个数) 269
7.6.7 substring(取传入字符串的一部分) 269
7.6.8 substring-after(某字符串之后的部分) 270
7.6.9 substring-before(某字符串之前的部分) 270
7.6.10 translate(替换、删除字符) 270
7.7 布尔函数 271
7.7.1 boolean(转换为布尔值) 271
7.7.2 false(返回布尔假值) 272
7.7.3 lang(检查“xml:lang”属性是否属于指定的语言或该语言的子集) 272
7.7.4 not(取反布尔值) 272
7.7.5 true(返回布尔真值) 273
7.8 数值函数 273
7.8.1 ceiling(不小于传入数值的最小整数) 273
7.8.2 floor(不大于传入数值的最大整数) 273
7.8.3 number(转换为数值) 273
7.8.4 round(四舍五入取整) 274
7.8.5 sum(节点转换成数值后求和) 274
7.9 节点类型测试 275
7.9.1 comment()(匹配注释节点) 275
7.9.2 node()(匹配任何节点) 275
7.9.3 processing-instruction()(匹配处理指令) 276
7.9.4 text()(匹配文本节点) 276
7.10 XML路径匹配示例 276
7.11 总结 278
7.12 参考内容 278
7.12.1 XPath 2.0的重大变化 278
7.12.2 XPath 2.0的新特性 279
第8章 简单XML应用程序编程接口(SAX) 281
8.1 基本知识 281
8.1.1 SAX解析器的特征 281
8.1.2 SAX接口一览 282
8.2 使用Java创建SAX处理程序 284
8.2.1 使用Eclipse创建新的Java方案 284
8.2.2 向Java方案添加SAX处理程序代码文件 285
8.2.3 运行第一个SAX处理程序 285
8.2.4 为读取器添加内容处理器 287
8.2.5 使用SAX处理文档时的注意事项 291
8.2.6 余论 291
8.3 SAX接口参考 291
8.3.1 XMLReader接口(读取器) 292
8.3.2 ContentHandler接口(内容处理器) 295
8.3.3 Attributes接口(属性列表) 297
8.3.4 Locator接口(定位器) 298
8.3.5 InputSource类(输入源) 299
8.3.6 ErrorHandler接口(错误处理器) 300
8.3.7 EntityResolver接口(实体解析器) 300
8.3.8 DTDHandler接口(文档类型定义处理器) 301
8.3.9 DefaultHandler类(默认处理器) 301
8.3.10 LexicalHandler接口(文词处理器) 302
8.3.11 DeclHandler接口(声明处理器) 302
8.3.12 XMLFilter接口(过滤器) 303
8.3.13 XMLFilterImpl类(XML过滤器实现) 311
8.4 总结 317
第9章 使用微软.NET框架处理XML 318
9.1 基本知识 318
9.1.1 内存中处理XML的形式 318
9.1.2 XmlReader与SAX的比较 319
9.1.3 使用流式XmlWriter将XML写入文件 320
9.1.4 XML数据文件与数据集的联系 320
9.1.5 从XML文档中推断架构 320
9.1.6 XML序列化和反序列化沟通面向对象编程领域 321
9.1.7 各种技术的整合 323
9.2 使用Visual Studio开发.NET XML项目 324
9.2.1 建立新的窗体项目 325
9.2.2 向窗体添加控件和代码 326
9.2.3 调试应用程序 329
9.2.4 小结 329
9.3 在内存中使用文档对象模型(DOM)处理文档 330
9.3.1 .NET文档对象模型中的类层次关系 330
9.3.2 XmlNodeType枚举(XML节点类型) 330
9.3.3 XmlNode抽象类(XML节点) 331
9.3.4 XmlDocument类(XML文档)与XmlNameTable类(XML名称表) 333
9.3.5 XmlNodeList类(Xml节点列表) 336
9.3.6 应用示例 337
9.4 在内存中使用XPath模型处理XML文档 341
9.4.1 在文档对象模型、XPath模型之间选择 342
9.4.2 XPathNavigator类(XPath导航器) 342
9.4.3 XPathNodeIterator类(XPath遍历器) 350
9.4.4 应用示例 351
9.5 使用XmlReader流式读取XML 354
9.5.1 XmlReaderSettings类(参与构造XmlReader) 355
9.5.2 XmlReader类(XML读取器) 357
9.5.3 使用读取器验证XML文档 366
9.6 使用XmlWriter流式写出XML 369
9.6.1 XmlWriterSettings类(参与构造XmlWriter) 370
9.6.2 XmlWriter类(XML编写器) 371
9.7 使用流式机制编写和提取XML内容(与SAX比较) 377
9.8 关系数据与XML之间的桥梁——数据集与XML数据文档 379
9.8.1 数据集的结构 380
9.8.2 将XML文档加载到数据集 380
9.8.3 从数据集写出XML文档 381
9.8.4 数据集与XML数据文档同步 382
9.9 使用.NET中的类和工具自动编写架构 387
9.9.1 使用XmlSchemaInference类推断架构 387
9.9.2 使用XSD.exe工具推断架构 390
9.10 面向对象编程模型与XML之间的桥梁——XML序列化和反序列化 390
9.10.1 使用XmlSerializer执行序列化 390
9.10.2 使用XmlSerializer执行反序列化 393
9.10.3 使用属性元数据控制XML序列化 396
9.11 总结 400
第4篇 XML与万维网
第10章 从HTML到XHTML 405
10.1 HTML的基本知识 405
10.1.1 HTML的基本组成部分 405
10.1.2 HTML中一般不能自定义语汇集 406
10.1.3 HTML的语法不严谨 406
10.2 XHTML的语法特征 407
10.3 扩展XHTML的语汇 411
10.4 使用HTML Tidy将HTML转换到XHTML 411
10.5 使用HyperMarkup将HTML转换为XHTML 413
10.5.1 安装HyperMarkup 413
10.5.2 HyperMarkup的原理 413
10.5.3 将HTML转换为XHTML 418
10.5.4 将HTML转换为XML片段或XML文档 418
10.5.5 定制XML生成器 419
10.6 总结 420
第11章 级联样式表(CSS)与XML 421
11.1 基本知识 421
11.1.1 使用“xml-stylesheet”处理指令指示浏览器用CSS呈现文档 421
11.1.2 内容与形式的分离 423
11.1.3 使用CSS呈现XML文档的局限 425
11.2 CSS匹配规则参考 425
11.2.1 选择子匹配元素 426
11.2.2 继承 426
11.2.3 后代选择子匹配后代元素 427
11.2.4 使用组合同时匹配多个元素 427
11.2.5 通用选择子通配所有元素 428
11.2.6 子代选择子匹配子元素 428
11.2.7 兄弟选择子匹配兄弟元素 429
11.2.8 第一子元素伪类匹配第一子元素 429
11.2.9 属性选择子匹配指定属性的元素 429
11.2.10 类选择子与ID选择子 430
11.3 总结 431
11.4 参考内容 431
第12章 HTML、ASP网页中的XML 433
12.1 HTML中的数据岛(Data Island) 433
12.1.1 数据岛在HTML中的声明形式 433
12.1.2 数据岛的属性与事件 434
12.1.3 应用示例:访问内嵌数据岛的数据 434
12.1.4 应用示例:访问外部XML数据,不刷新页面更新其显示内容 436
12.2 ASP、ASP.NET中的XML应用简介 440
12.3 AJAX(异步Java脚本与XML) 442
12.3.1 传统HTML表单交互机制的缺陷 442
12.3.2 使用XMLHTTPRequest异步回发请求 443
12.3.3 使用XML数据岛异步回发请求 445
12.3.4 使用IFrame异步回发请求 446
12.3.5 各种异步请求回发机制的利弊 446
12.4 总结 446
第13章 网站摘要与RSS 447
13.1 RSS的各个版本 447
13.2 RSS元素参考 448
13.2.1 RSS 2.0元素一览 448
13.2.2 RSS的根元素 448
13.2.3 channel(频道)元素及其子元素 448
13.2.4 item(项目)元素及其子元素 449
13.2.5 RSS 2.0示例 450
13.2.6 RSS 1.0与RSS 2.0的区别 451
13.2.7 RSS 1.0的完整示例 452
13.3 参考内容 453
第14章 XML与简单对象访问协议(SOAP) 455
14.1 基本知识 455
14.1.1 SOAP的应用场合 455
14.1.2 SOAP消息的封装 456
14.1.3 SOAP节点,以及请求与响应的消息交换模式 457
14.2 SOAP元素参考 458
14.2.1 Envelope(信函) 458
14.2.2 Header(报头) 458
14.2.3 Body(报文) 459
14.2.4 Fault(故障) 460
14.3 总结 461
14.4 参考内容 461
第5篇 可扩展样式表语言转换(XSLT)
第15章 可扩展样式表语言转换(XSLT) 465
15.1 基本知识 465
15.1.1 XSLT处理器在转换过程中处于核心位置 466
15.1.2 一次编写、多次重用 466
15.1.3 3种输出方式:XML、HTML和文本 467
15.1.4 XSLT中的模板驱动过程 467
15.1.5 3个内建模板规则 472
15.1.6 模板优先级问题 473
15.1.7 格式化显示XML文档 474
15.1.8 XSL转换与CSS格式化的比较 477
15.1.9 不要以编程语言或数据查询语言的准则要求XSL转换 479
15.2 编程调用XSLT处理器 479
15.2.1 在脚本中调用MSXML的XSLT处理器 479
15.2.2 使用.NET的XslCompiledTransform类执行XSL转换 483
15.2.3 在Java中使用Saxon执行XSL转换 486
15.3 XSLT语言参考:元素 488
15.3.1 XSLT元素纵览 488
15.3.2 本节示例所用的样本XML文档 491
15.3.3 apply-imports(应用导入的模板规则) 493
15.3.4 apply-templates(应用模板) 494
15.3.5 attribute(在标记语言输出中生成属性) 497
15.3.6 attribute-set(声明属性集) 500
15.3.7 call-template(调用具名模板) 502
15.3.8 choose(多条件匹配) 504
15.3.9 comment(在置标元素输出中生成注释) 508
15.3.10 copy(将当前节点复制到标记语言输出) 509
15.3.11 copy-of(选择节点,将其属性、后代节点复制到标记语言结果树) 510
15.3.12 decimal-format(声明十进制格式) 512
15.3.13 element(在标记语言输出中生成元素) 515
15.3.14 fallback(缺失特性处理) 516
15.3.15 for-each(处理节点集内的每个节点) 517
15.3.16 if(单条件匹配) 520
15.3.17 import(低优先级导入模板) 522
15.3.18 include(同等优先级包含模板) 523
15.3.19 key(建立XML节点索引) 524
15.3.20 message(在输出中生成消息文本) 528
15.3.21 namespace-alias(替换名称空间前缀) 529
15.3.22 number(生成编号) 530
15.3.23 otherwise(多条件匹配的默认条件) 536
15.3.24 output(声明输出方式) 536
15.3.25 param(声明XSLT文档或模板的参数) 539
15.3.26 preserve-space(保留指定元素列表的空白) 542
15.3.27 processing-instruction(在XML输出中生成处理指令) 544
15.3.28 sort(排序节点集) 545
15.3.29 strip-space(剪除指定元素列表的空白) 548
15.3.30 stylesheet(XSLT文档根元素) 548
15.3.31 template(声明具名模板或模板规则) 549
15.3.32 text(输出文本) 551
15.3.33 transform(XSLT文档根元素) 553
15.3.34 value-of(将选定节点的字符串形式作为文本节点插入到输出) 553
15.3.35 variable(声明样式表或模板的变量) 554
15.3.36 when(指定choose中的条件) 559
15.3.37 with-param(向目标模板传入参数) 559
15.4 XSLT语言参考:函数 559
15.4.1 current(返回当前节点) 560
15.4.2 document(获取外部文档) 562
15.4.3 element-aviable(指定名称的XSLT扩展元素是否可用) 564
15.4.4 format-number(将数值格式化为字符串) 564
15.4.5 function-available(检查XSLT处理器是否支持指定名称的函数) 564
15.4.6 generate-id(为节点生成惟一的标识符) 565
15.4.7 key(获取具有指定值的“key”元素索引节点) 567
15.4.8 system-property(查询XSLT处理器属性) 567
15.4.9 unparsed-entity-uri(获取非解析实体[NDATA]的URI) 567
15.5 总结 568
15.6 关于XSLT 2.0的参考内容 568
15.6.1 XSLT 2.0将采用XPath 2.0 569
15.6.2 使用临时树代替结果树片段 569
15.6.3 使用“for-each-group”元素分组XML节点 569
15.6.4 使用“function”元素自定义用于XPath表达式的函数 570
15.6.5 使用“result-document”元素生成多个结果文档 571
15.6.6 使用“analyze-string”和正则表达式替换字符串 573
15.6.7 架构支持 574
15.6.8 转换的开始点 574
15.6.9 节点比较规则与数据类型相关 574
15.6.10 “for-each”的节点处理转向序列处理 574
15.6.11 XHTML文档输出方式 574
15.6.12 “next-match”元素应用当前模板中被覆盖的模板 574
15.6.13 推荐使用“character-map”元素代替“disable-output-escaping”属性 575
15.6.14 格式化日期和时间的新函数 576
15.6.15 可以穿透模板的“隧道参数” 576
15.6.16 模板的模式 576
15.6.17 不需要使用显式的前缀来匹配默认名称空间 576
15.7 其他参考内容 577
15.7.1 XML查询(XQuery) 577
15.7.2 XSLT处理器 578
第16章 扩展XSLT的功能 579
16.1 基本知识 579
16.1.1 扩展方式和实现形式 579
16.1.2 在功能与可移植性之间权衡 580
16.2 XSLT处理器本身的扩展功能 580
16.2.1 EXSLT(XSLT扩展) 581
16.2.2 微软XSLT的扩展元素“msxsl:script” 582
16.3 向XSLT处理器传入外部参数 583
16.3.1 示例:将当前日期传入XSL转换 583
16.3.2 示例:将多份缓存的XML文档传入XSL以提高转换效率 584
16.4 向XSLT处理器传入扩展对象 588
16.5 总结 590
第6篇 XML设计
第17章 XML设计技巧 593
17.1 组织文档结构 593
17.1.1 选择最能表达含义的词汇作为元素或属性的名称 593
17.1.2 为元数据选择适当的位置 594
17.1.3 连接引用 596
17.1.4 为与文档相关的二进制数据选择适当的位置 598
17.1.5 使用名称空间和容器 599
17.1.6 使用一般化的扩展属性 600
17.2 使用关系数据库处理的考虑 602
17.2.1 使用线性结构代替层次结构 602
17.2.2 借助关系数据库存储和处理大型XML文档 603
17.3 总结 606
17.4 参考内容 607
猜您喜欢