即用即查-XML数据标记语言参考手册.doc_第1页
即用即查-XML数据标记语言参考手册.doc_第2页
即用即查-XML数据标记语言参考手册.doc_第3页
即用即查-XML数据标记语言参考手册.doc_第4页
即用即查-XML数据标记语言参考手册.doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

即用即查XML 数据标记语言参考手册丛书特点:直击核心技术解惑网络开发 案头必备、内容实用 排版精准、图文并茂 光盘中提供了索引,方便快速查找本书讲述: 91 个XML 架构参考 90 个处理XML 文档的接口和方法 35 个XML 网络数据处理方法 46 个XSLT 参考 368 个实例源文件内容涵盖: XML 语法基础:14 个实例 名称空间:9 个实例 文档类型定义(DTD):12 个实例 约句准篇的规范化架构(Schema):71 个实例 随机访问XML 的文档对象模型(DOM):30 个实例 查询XML 数据之路(XPath):6 个实例 XML 应用程序编程接口(SAX):14 个实例 使用.NET 框架处理XML:29 个实例 从HTML 到XHTML:6 个实例 级联样式表(CSS)与XML:3 个实例 HTML、ASP 网页中的XML:11 个实例 网站摘要与RSS:6 个实例 XML 与简单对象访问协议(SOAP):4 个实例 可扩展样式表语言转换(XSLT):123 个实例 扩展XSLT 的功能:13 个实例 XML 设计技巧:17 个实例技术深度:(中)目标受众: 数据库管理员及应用开发者 系统设计师 从事Web 应用开发的人员 爱好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(十六进制形式的二进制数据)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 部分组成7.3.4 轴245 7.3.5 节点测试和函数246 7.3.6 谓项与操作符248 7.4 XPath 的轴252 7.4.1 self:(本节点轴)与“.”缩写形式7.4.2 attribute:(属性节点轴)与“”缩写形式7.4.3 child:(子节点轴,默认的XPath 轴)244 254 254 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 第6 章随机访问XML 的文档对象模型(DOM) XML 文档是一种结构较为严谨的数据形式,可以采用多种方式访问其中的数据。XML 文档对象模型(Document Object Model,DOM)就是其中一种。该模型将XML 文档加载到内存处理,将文档中各种内容均视为节点(Node),提供了一种随机访问并修改XML 文档的方法。6.1 基本知识XML 文档对象模型中有两个最重要的概念:一是所有XML 内容(元素、属性、文本内容等)都被视为节点;二是在节点之间可以随机“移动”,从一个节点可以访问邻近的其他节点。6.1.1 所有XML 内容皆可被视为节点XML 文档的所有一切都被视为节点(Node)。对于XML 文档而言:XML 文档本身是一个节点;文档中所包含的内容,如XML 声明、DOCTYPE 声明、注释、处理指令、根元素等,都是节点;根元素包含了属性、子元素,每个属性和子元素又是节点;元素、属性的文本内容也是节点。图6-1 演示了一份XML 文档与文档对象模型节点树(DOM tree)的关系。图中每个圆角矩形为一个节点,一共有12 个节点(注意:XML 文档本身也是一个节点)。图6-1 XML 文档与DOM 节点节点是DOM 对XML 数据的抽象(Abstraction)。XML 文档中,一个具体的XML 节点与面向对象编程语言中的一个对象(Object )对应。每个对象所属的类(Class)都实现相应的XML DOM 节点接口(Interface)。节点接口之间有继承关系,如元素对象首先实现元素接口,元素接口则从节点接口继承派生而来。元素接口有自己的特性,但又具有一般节点的共性。6.1.2 反映XML 层次型数据结构图6-2 表示了XML 文档中节点之间的层次型结构关系。图6-2 XML DOM 节点的层次结构对图6-2 中部分节点关系以文字叙述如下。 根节点(Root node):代表一份XML 文档,是整个文档对象模型的根节点,又称“文档节点”。此节点包含了文档中其他节点。 根元素(Root element):文档中的第1 个元素仅被文档节点包含,又称“文档元素”(Document element)。“我的电脑”元素就是文档中的根元素。 父子关系:包含当前节点并距离当前节点最近的节点,称为当前节点的“父节点”(Parent node);当前节点相对于父母节点而言,称为其“子节点”。“我的电脑”包含了“CPU”、“内存”、“硬盘”和“光驱”这4 个元素。对于这4 个被包含的元素而言,为其“父母节点”; 而这4 个元素则为“我的电脑”的子节点(Child nodes)。属性中的文本内容相对于属性而言,为其子节点,如“512MB”文本节点为“容量”属性的子节点。注意:虽然元素节点含有属性,但属性节点不属于元素节点的子节点。 兄弟关系:属于同一个父节点的节点,相互之间称为“兄弟节点”(Sibling nodes)。如“我的电脑”包含了“CPU”、“内存”、“硬盘”和“光驱”这4 个元素,这4 个元素之间就是兄弟节点。 前导、后继兄弟关系:出现在当前节点前,距离当前节点最近的兄弟节点,称为“前导兄弟节点”(Previous sibling node);出现在当前节点后,距离当前节点最近的兄弟节点,称为“后继兄弟节点”(Next sibling node)。对于“硬盘”元素而言,“内存”元素在文档中刚好出现在其前面,为其前导兄弟节点,而“光驱”元素刚好紧随其后,为其后继兄弟节点。 第一、最末子关系:对于“硬盘”元素而言,其子节点(Child nodes )有两个:“盘符”和“分区”,前者在其子节点中排位第一,故称为其“第一子节点”(First child node),而后者在其子节点中排位最末,故称为其“最末子节点”(Last child node)。对于“盘符”元素而言,其子节点只有1 个,是一个文本节点(其值为“C”)。文本节点是最小的单位,不具有子节点。 先代关系:所有包含当前节点的节点,如当前节点的父节点、父节点的父节点等,称为当前节点的“先代节点”(Ancestors)。文档节点和“我的电脑”元素节点就是“硬盘”元素的先代节点。 后代关系:所有被当前节点包含的节点,如当前节点的子节点、子节点的子节点等,称为当前节点的“后代节点”(Descendants)。“盘符”元素、“分区”元素以及这两个元素的文本子节点(“C”和“系统盘”)就是“硬盘”元素的后代节点。注意:先代节点列表和后代节点列表不能从访问文档对象模型的属性而直接得到,但可以通过遍历节点(如获取当前节点的父节点,再获取父节点的父节点,依此类推,可以访问到所有先代节点)而间接到达。每个DOM 实例节点都和相邻节点存在关联关系。以图6-2 为例,在JScript 中,假设当前节点currentNode 为图中的“硬盘”元素节点,则可以通过以下代码访问其他关联节点:var memory = currentNode.previousSibling; / 获取前导兄弟节点“内存”节点var partitionToken = currentNode.firstChild; / 获取第一子节点“盘符”节点var partitionName = currentNode.lastChild; / 获取最末子节点“分区”节点var diskContent = currentNode.childNodes; / 获取所有子节点列表(包含“盘符”和“分区”)var cdDrive = currentNode.ne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论