即用即查XML数据标记语言参考手册

即用即查XML数据标记语言参考手册
作 者: 左伟明
出版社: 人民邮电出版社
丛编项: 即用即查系列
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 计算机技术
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《即用即查XML数据标记语言参考手册》作者简介

内容简介

本书是一本XML参考手册,涉及XML各方面的内容。本书注重与实际应用的结合,可以帮助读者快速掌握XML的用法。 全书共6篇,从XML的基本概念开始,介绍了XML语汇(DTD和架构)、查询和处理XML(DOM、SAX、.NET)、XML与万维网应用技术(XHTML、CSS、HTML、RSS、SOAP)、可扩展样式表语言转换(XSLT)等。 本书包含大量的实例,有助于读者理解并应用XML技术,提高在实际应用中的开发能力,适合数据库管理员及应用开发者、系统设计师、从事Web应用开发的人员阅读。

图书目录

第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