XSLT是XSL(可扩展样式表语言)的派生产物,用来实现不同结构的XML文档之间的转换。本书首先介绍了XSLT的基本知识,接着全面深入地探讨了如何利用XSLT设计和构建复杂的数据驱动应用程序。主要涉及的内容包括:使用Xpath表达式定位数据、使用模板规则、创建XSLT结果树、使用XSLT中的变量和参数以及创建样式表输出等。最后还介绍了一些示例、编程工具及技术,以帮助读者更好地理解并运用XSLT。\r\n\r\n 本书适用于希望了解和使用XSLT的开发人员和管理人员。\r\n
\r\n
第1章 XML简介 \r\n\r\n 1. 1 XML历史简介 \r\n\r\n 1. 2 剖析xML文档 \r\n\r\n 1. 2. 1 XML声明 \r\n\r\n 1. 2. 2 注释 \r\n\r\n 1. 2. 3 标记 \r\n\r\n 1. 2. 4 元素 \r\n\r\n 1. 2. 5 属性 \r\n\r\n 1. 2. 6 实体 \r\n\r\n 1. 2. 7 良构的XML文档和有效的XML文档 \r\n\r\n 1. 3 国际化XML \r\n\r\n 1. 4 作为元语言的XML \r\n\r\n 1. 4. 1 XML专用语言和从XML派生的标记语言 \r\n\r\n 1. 4. 2 XHTML \r\n\r\n 1. 4. 3 主题领域标准:CML. MathML. MusicML \r\n\r\n 1. 5 与XML相关的W3C标准 \r\n\r\n 1. 5. 1 DTD \r\n\r\n 1. 5. 2 XML Schema \r\n\r\n 1. 5. 3 命名空间 \r\n\r\n 1. 5. 4 XLink \r\n\r\n 1. 5. 5 XPointer \r\n\r\n 1. 5. 6 XMIJ查询 \r\n\r\n 1. 5. 7 XPath \r\n\r\n 1. 5. 8 XSL和XSLT \r\n\r\n 1. 6 小结 \r\n\r\n 第2章 XSLT简介 \r\n\r\n 2. 1 什么是XSLT \r\n\r\n 2. 2 查找结构和含义 \r\n\r\n 2. 2. 1 结构化文档 \r\n\r\n 2. 2. 2 XML文档层次结构 \r\n\r\n 2. 2. 3 树和节点 \r\n\r\n 2. 2. 4 名字和命名空间 \r\n\r\n 2. 3 XSLT特性概述 \r\n\r\n 2. 3. 1 查找数据:XPath语言 \r\n\r\n 2. 3. 2 转换数据:XSLT模板 \r\n\r\n 2. 3. 3 创建XML元素. 属性和其他对象 \r\n\r\n 2. 3. 4 重用样式表逻辑 \r\n\r\n 2. 3. 5 执行条件处理与重复处理 \r\n\r\n 2. 3. 6 定义变量和参数 \r\n\r\n 2. 3. 7 创建链接文档各部分的键 \r\n\r\n 2. 3. 8 处理字符串类型. 数值型和布尔型数据 \r\n\r\n 2. 4 XSLT的工作方式 \r\n\r\n 2. 4. 1 模板处理 \r\n\r\n 2. 4. 2 表达式处理 \r\n\r\n 2. 4. 3 生成结果树 \r\n\r\n 2. 5 小结 \r\n\r\n 第3章 XML与XSLT应用程序 \r\n\r\n 3. 1 XML的强大功能 \r\n\r\n 3. 1. 1 文档开发和处理 \r\n\r\n 3. 1. 2 电子商务 \r\n\r\n 3. 2 扩展XML:用于转换的可扩展样式表语言 \r\n\r\n 3. 2. 1 生成表示形式 \r\n\r\n 3. 2. 2 重构xM比文档 \r\n\r\n 3. 3 XML/XSL应用程序的结构 \r\n\r\n 3. 3. 1 XML和XSLT处理工具 \r\n\r\n 3. 3. 2 单层应用程序体系结构 \r\n\r\n 3. 3. 3 n层应用程序体系结构 \r\n\r\n 3. 4 小结 \r\n\r\n 第4章 XSLT样式表的结构 \r\n\r\n 4. 1 通用样式表结构 \r\n\r\n 4. 2 XSLT版本和前向兼容模式 \r\n\r\n 4. 2. 1 顶层元素 \r\n\r\n 4. 2. 2 1. 0版本中未定义的属性 \r\n\r\n 4. 2. 3 模板中的元素 \r\n\r\n 4. 3 顶层样式表元素 \r\n\r\n 4. 3. 1 xsl:import和xsl:include \r\n\r\n 4. 3. 2 xSl:strip-Space和xsl:preserve-space \r\n\r\n 4. 3. 3 xsl:output \r\n\r\n 4. 3. 4 xsl:kev \r\n\r\n 4. 3. 5 xsl:decimal-format \r\n\r\n 4. 3. 6 xSl:namespace-alias \r\n\r\n 4. 3. 7 xsl:anribute-set \r\n\r\n 4. 3. 8 xsl:variable和xsl:param \r\n\r\n 4. 3. 9 xsl:template \r\n\r\n 4. 4 嵌入样式表 \r\n\r\n 4. 5 小结 \r\n\r\n 第5章 表达式 \r\n\r\n 5. 1 XSLT和XPath表达式概述 \r\n\r\n 5. 1. 1 寻址 \r\n\r\n 5. 1. 2 数据类型 \r\n\r\n 5. 1. 3 固有函数 \r\n\r\n 5. 2 编码XPath表达式 \r\n\r\n 5. 2. 1 使用定位路径寻址 \r\n\r\n 5. 2. 2 xPath和条件表达式 \r\n\r\n 5. 2. 3 生成字符串值 \r\n\r\n 5. 3 XPath函数 \r\n\r\n 5. 3. 1 节点集函数 \r\n\r\n 5. 3. 2 字符串函数 \r\n\r\n 5. 3. 3 布尔函数 \r\n\r\n 5. 3. 4 数值函数 \r\n\r\n 5. 4 小结 \r\n\r\n 第6章 模板规则 \r\n\r\n 6. 1 xSLT处理模型 \r\n\r\n 6. 2 定义和应用模板规则 \r\n\r\n 6. 3 应用冲突解决方案模板规则 \r\n\r\n 6. 4 重写模板规则 \r\n\r\n 6. 5 使用模式 \r\n\r\n 6. 6 使用内置模板规则 \r\n\r\n 6. 6. 1 节点和元素的递归处理 \r\n\r\n 6. 6. 2 模板模式处理 \r\n\r\n 6. 6. 3 文本和属性节点处理 \r\n\r\n 6. 6. 4 指令. 注释和命名空间节点处理 \r\n\r\n 6. 7 使用命名模板 \r\n
\r\n
Chris von See和Nitin Keskar是eForce公司的高级技术总监, 该公司为全球1000多家公司提供战略性的电子商务解决方案.
回顾XML的急速普及, 可以看到XML这样一个表面上非常简单的技术对计算机软件. 数据库/数据管理和B2B通信世界的广泛适用性和深远影响是令人惊讶的. 文档管理行业人员目睹了XML从SGML中的演化过程, 他们知道基于标记的可扩展标记语言可以提供强大的功能, 这种语言可以为构建数据提供一种高度结构化而且易于处理的方式, 它不仅仅只是位和字节的不可识别流, 而且还是一种语言, 能够存储关于数据意义的信息.
自从1998年2月XML发布以来, 整个范围的相关标准迅速地创建起来, 而且均带有与XML相联系的名字:XLink. XPath. XPointer. XSL. XML Query. XFragment. XML Information Set和其他许多标准. 有些标难, 例如xPath(XML路径语言), 自身或者作为其他技术和标准的组成部分都证明了具有非常强大的功能, 其他标准仍然没有发挥它们全部的潜能, 甚至永远都不会.
用于转换的可扩展样式表语言, 或者称为XSLT, 是可扩展样式表语言(XSL的产物, 用于实现不同结构的XML文档之间的转换. 在其第一个版本中已经证明了XSLT对于某些应用程序特别有用的, 虽然在理解和高效使用上仍然有些困难. XSLT是仅适于某些特定类型应用程序的一种技术吗?XSLT适合干什么呢?怎样才能最好地使用XSLT呢?如何将XSLT集成到其他的应用程序中以创建更大的系统呢?
本书读者对象
本书主要适用于那些希望了解XSLT是什么, 可以利用XSLT来做什么, 以及如何用XSLT来解决商业问题的应用程序开发者. 系统设计师和IT管理人员. 尽管越来越多的技术主题需要通晓XML概念. HTML和利用Java/C++程序设计, 但是即使您从未接触过XML, 想获得对XSLT的一般了解并非难事. 如果您不熟悉XML, 我们希望第1章能够为您提供足够的有关如何开始XSLT编程的背景资料.
本书涵盖内容
既然XML和XSLT间关系密切, 在开始学习XSLT编程前, 能够认识到XML的基础知识是至关重要的. 第1章, “XML简介”为读者了解本书其余部分提供了基础, 其中介绍了XML主要的基础知识, 用简洁的术语描述了这一强大的技术. 在这个背景之上, 第2章, “XSLT简介”根据XSLT的发展史与创建XSLT的原因, 讨论了XSLT如何工作, 并描述了能够在如今的软件库中创建一个强大工具所必需的关键特性.
第3章, “XML和XSLT应用程序”, 详细地研究了XSLT的应用程序. 特别地, 这一章讨论了XML最适合的企业级应用程序的类型. XSLT对XML的补充以及在这些应用程序中的流线型应用程序开发. 这一章还提供了一些在现实生活中使用XSLT的例子, 该章的最后, 学习完如何使用该工具后, 开始学习如何开发自己的XSLT应用程序.
第4章 “XSLT样式表的结构”, 讨论了XSLT样式表的结构. 不同于常规的编程工具XSLT并未用作一种面向过程的语言, 更恰当地说, 它依靠调用模板的结构指出XML文档的哪些部分需要被处理. 理解如何构建样式表以及如何通过XSLT使用模板, 这是正确使用该工具的关键.
第5章“表达式”介绍了强大的XML路径语言(XPath), 它是XML标准集中的一个关键部分, 在使用模板的处理过程中, XSLT利用XPath语言在输入XML文档中选择节点. XPath非常强大, 但是强大是以复杂性作为代价的. 我们一步步地讲解了这种路径语言, 到本章结束为止, 读者应该能够对XSLT样式表模板中的xPath表达式的使用有深刻的理解.
在第6章“模板规则”中, 我们讨论了一些影响XSLT模板工作方式的规则. 有些规则被构建到xSLT自身之中, 而其他的则主要依赖于样式表中模板之间的关系. 通过有效地使用(并操纵)这些规则, 读者可以执行各种有趣且有益的XSLT特性.
在第7章“创建XSLT结果树”中, 读者将了解到如何读入XML输入文档, 并利用样式表的各部分处理输入文档中特定的元素. 本章为读者介绍了XSLT所提供的实用工具, 可以从样式表中生成静态和动态的输出, 利用输入文档中的数据决定应该生成哪一种输出, 并控制模板中的控制流. 使用这些工具, 可以对输入XML文档实现非常强大的转换, 执行广泛的重组, 以及结合使用XSLT和XPath函数进行数据处理.
第8章“变量和参数”介绍了XSLT中变量和参数的概念. 变量和参数可以帮助开发普通的样式表, 在样式表被调用时,变量和参数可以通过提供附加的信息定制具体的处理过程, 它们允许在模板间共享数据, 从而结合其他的XSLT功能. 本章还描述了XSLT中的变量和参数与其他编程语言中变量和参数的区别.
第9章“创建样式表输出”介绍了如何通过XSLT样式表获得xML. HTML和输出文本. xSLT提供了内置的函数, 可以更加容易地控制输出文档的特性, 例如文档的编码, 并为自动生成编号和错误消息提供了工具.
为了能进行更加复杂的应用程序的开发, XSLT为排序数据. 通过属性和数据交叉引用元素. 利用单个样式表处理多个文档等过程提供了工具. 第10章“XSL/XSLT高效编程”讨论了这些特性, 并且进一步详细介绍了何时以及如何创建这些高级函数.
第11章“XSLT示例”给出了一些现实世界中如何使用XSLT的例子, 同时给出源代码. 这一章串联了本书的所有其他各章, 显示了如何集中利用XSLT的不同特性对目标xML文档执行强大的转换, 根据其他样式表生成样式表等.
由于XML在企业级应用程序中的广泛适用性, 我们认为讨论XSLT在这些环境中的相关内容有着重要意义. 第12章“企业级开发中的XSLT”更详细地解释了如何以及为什么将XSLT用于企业级应用程序. 这一章同样讨论了现实生活中有关XSLT开发的几个关键问题, 并提供了问题清单, 以便于在开发复杂的XSLT项目前仔细检查.
第13章“编程工具和技术”讨论了目前可用的几种XSLT工具. 尽管很多商业供应商支持XML, 但最流行的XSLT工具却在公开社区中. 本章不仅给出了最流行的工具, 也讨论了如何将这些工具与使用Java. C++和Perl开发的应用程序相结合, 并提供了可以找到这些内容和其他编程语言更多信息的网络资源.
既然XSLT l. 0是当前的W3C规范, 本书中讨论的示例均满足这一点. 然而XSLT和XPath版本2. 0的工作草案最近已经发布了, 我们期待着不久以后这一规范可以最终定案. 基于此点, 附录A为XSLT2和XPath2提供了一个简短的评述.
附录B对W3C工作组(WG)作了一个简单的回顾, 它们开发了XSL/XSLT. XML Protocol. HTML. DOM. HTTP. 密码学以及其他与Web技术相关的规范和推荐.
附录C为找到更多有关XSL和XSLT的信息提供了一个资源列表. 这些资源包括书籍和一些有益的Web站点.
最后, 术语表提供了关于XSLT和xML的术语定义.
如何阅读本书
本书假定读者至少有一定的XML基础, 但是不需要了解XSLT的任何知识. 如果您并不了解XML, 或者认为在开始学习XSLT前需要对相关内容进行复习, 我们建议您在接触到本书更多技术之前, 从第1章“XML简介”读起.
由于后面章节中的技术材料广泛地构建于前面各章基础之上, 我们建议读者能够循序渐进地阅读本书, 虽然跳到您目前最感兴趣的工具和技术的章节或许更有效些. 如果您只是一个XSLT的初学者, 可以考虑从第2章对XSLT的介绍和第13章对XSLT处理过程的描述开始. 如果您对XSLT已经相当地了解, 想寻找XSLT所提供的更详细的功能, 您可以查阅第2章一第7章, 然后跳到第11章阅读对具体示例的讨论. 如果您希望在学习XSLT语法之前了解XML和XSLT可以做什么, 那么, 第1章和第12章中的讨论是非常有益的.