XSL 百科名片
XSL
百科名片
引自:百度百科 http://baike.baidu.com/view/45861.htm
XSL是指可扩展样式表语言 (EXtensible Stylesheet Language),是一种用于以可读格式呈现 XML 数据的语言。
XSL简介
XSL 之于 XML ,就像 CSS 之于 HTML。它是指可扩展样式表语言 (EXtensible Stylesheet Language)。这是一种用于以可读格式呈现 XML 数据的语言。 xsl是一种标记语言,表示如何将xml文档的内容装换成另一种形式的文档。 通过为xml写xsl来使得xml显示成不同的格式 XSL 实际上包含两个部分: * XSLT – 用于转换 XML 文档的语言 * XPath – 用于在 XML 文档中导航的语言 XSLT 是指 XSL 转换 (XSL Transformation),它是 XSL 最重要的部分。 XSLT 可以将 XML 文档转换为其它 XML 文档、XHTML 输出或简单的文本。这通常是通过将每个 XML 元素转换为 HTML 元素来完成的。由于 XML 标签是用户定义的,浏览器不知道如何解释或呈现每个标签,因此必须使用 XSL。XML 标签的意义是为了方便用户(而不是计算机)理解。 XSLT 还可以对 XML 树进行下列操作: * 添加和删除元素 * 添加和删除属性 * 对元素进行重新排列或排序 * 隐藏或显示某些元素 * 查找或选择特定元素XSL 语法
您可能还记得 XML 概述文章中提到过,所有 XML 文档都是以 XML 声明开头。XSL 样式表也是一样。任何 XSL 文档的第一行实际上都是 XML 声明: <?xml version="1.0" encoding="ISO-8859-1"?>XSL 是否与 XML 相同
既是又不是。说是,是因为它们遵循相同的语法规则(只有少许差异,下面我将会讲到)。说不是,是因为它们的用途不同:XML 用于承载数据,而 XSL 则用于设置数据的格式。 在 XML 声明之后,就是 XSL 声明,例如: <xsl:stylesheet> 或 <xsl:transform> 但是,在大多数实际情况下,XSL 声明看起来要稍微复杂一些: <xsl:stylesheet xmlns:xsl="http://www w3 org/1999/XSL/Transform" version="1.0"> 这是因为,根据 W3C 联盟的建议,它还包含命名空间和 XSL 规范的版本。 XSL 声明与 XML 声明的不同之处在于,XML 声明只写一行,而且没有结束标签,而 XSL 声明必须包含结束标签,该标签表示 XSL 样式表结束: </xsl:stylesheet> 请注意,这并不与 XML 语法规则冲突:XSL 样式表是完全有效的 XML 文档,因为它有一个根元素,由 <xsl:stylesheet> 标签指定。XSL用途
XSL 在设计时有几个目标用途,这些用途使它成为某些开发情况下的完美解决方案,而对另一些开发情况则毫无用处。 XSL 专门用于处理 XML 文档,并且遵循 XML 语法。因此,它只能在支持 XML 的应用程序中与 XML 结合使用。最合适使用 XML 和 XSL 的情况是:Web 门户、新闻聚合器、社区网站或其它任何需要向各种设备及大量客户端提供信息的 Web 应用程序。 XSLT 是一种基于模式匹配的语言。它会查找匹配特定条件的节点,然后应用相应的规则。因此,它不具备大多数编程语言的计算能力。例如,XSL 无法在运行时更改变量的值。它不应该用于从使用复杂公式的动态数据源(例如在线商店)来计算值。Web 编程语言更适于此用途。 XSL 不能代替或补充 CSS。它不应(也不能)用于设置 HTML 的样式。但是,您可以将其用于需要频繁重新设计可视化效果、频繁更换布局以及以灵活格式处理数据的网站。 XSL 不是内容管理工具。它不应(也不能)用于更改 XML 文档的内容或者编辑信息。但是,您可以将 XML 和 XSL 用于需要处理几种不同格式文档的内容管理系统。 它起始于 XSL,结束于 XSLT、XPath 以及 XSL-FO。 起始于 XSL XSL 指扩展样式表语言(EXtensible Stylesheet Language)。 万维网联盟 (W3C) 开始发展 XSL 的原因是:存在着对于基于 XML 的样式表语言的需求。 CSS = HTML 样式表 HTML 使用预先定义的标签,标签的意义很容易被理解。 HTML 元素中的 元素定义表格 - 并且浏览器清楚如何显示它。 向 HTML 元素添加样式是很容易的。通过 CSS,很容易告知浏览器用特定的字体或颜色显示一个元素。 XSL = XML 样式表 XML 不使用预先定义的标签(我们可以使用任何喜欢的标签名),并且这些标签的意义并不都那么容易被理解。 元素意味着一个 HTML 表格,一件家具,或是别的什么东西 - 浏览器不清楚如何显示它。 XSL 可描述如何来显示 XML 文档! XSL - 不仅仅是样式表语言 XSL 包括三部分: XSLT 一种用于转换 XML 文档的语言。 XPath 一种用于在 XML 文档中导航的语言。 XSL-FO 一种用于格式化 XML 文档的语言。XSL应用
数据库技术领域,具体为一种快速执行可扩展样式表单语言转换(XSLT)的方法。该方法首先通过构造转换树,将XML文档的结构信息和XSLT转换要求 结构起来,然后从转换树建立流处理模型;扫描XML源文档,通过流处理模型,将一个XSLT转换程序转换成很多个事件处理器,对应于扫描过程中触发的每一 类事件,都有一个对应的事件的输出片断被添加到已产生的结果文档后面;扫描结束后,即得到最终完整的结果文档。本发明方法完全避免了现有转换引擎需要预先 将整个源文档载入内存的缺点,减少了内存消耗,大大提高了执行效率。即使对于非常大的XML数据,也能通过一趟扫描完成转换过程。 1、一种快速执行XSLT转换的方法,其特征在于通过一个流处理模型来执行XSLT转换,具体 步骤如下:(1)首先通过构造转换树,将XML源文档的结构信息和XSLT转换要求结合起来,其步骤为:构造XML文档类型定义的DTD树T;考察 XSLT转换程序L的每一条转换规则r,在T中找到r的匹配节点n;继续考察r的输出模板序列中的每一个元素o,如果o是一个常数字符串,为树T创建一个叶子节点n’, 添加一条从n到n’的边;如果o是调用模板命令,从树T中找到o的选中节点n’,同样添加一条从n到n’的边;(2)从转换树建立流处理模型,它是一个递 归过程,其步骤为:对转换树的任一节点n,end(n),start(n)初始值为空串;如果n是叶子节点,则令 end(n):=pcdata+end(n);以c1,c2,...,cp表示节点n下面所有来自于DTD树的孩子节点,以d1,d2,...,dq表示 节点n下面所有来自于XSLT转换程序的孩子节点,如果d1是一个常数字符串节点,则令start(n):=start(n)+d1,并且设置计数器i为 2,否则,设置计数器i为1;当i不大于q的时候,重复以下步骤:假设c是位于从节点n到节点di这条路径上的n的孩子节点,如果从n到c的边没有被星号 标记,并且di+1是常数串节点,则令end(c):=end(c)+di+1和i:=i+2,否则令i:=i+1;如果di+1是常数串节点,假设c′ 是位于从节点n到节点di+2这条路径上的n的孩子节点,则令start(c′):=di+1+start(c′)和i:=i+2,否则令i:=i+1; 对每一个孩子节点dj,递归调用以上过程;(3)扫描XLM源文档,通过流处理模型,将一个XSLT转换程序转化成很多个事件处理器;在从头到尾读XML 取源文档的过程中会触发很多事件,对每一类事件,都有一个对应的输出片断;最开始的时候,结果文档为空,随着对源文档的扫描过程的进行,相应事件的输出片 断被逐渐添加到已产生的结果文档的后面;在扫描过程结束后,用户马上就可以得到最终完整的结果文档;其中,end(n)为元素结束事件的输出片 段,start(n)为元素开始事件的输出片段,pcdata为当前叶子节点的PCDATA值。 [1]- 参考资料
-
- 1
- 扩展阅读:
-
-
1
万维网技术教程 http://www.w3course.net
-
2
xsl的图书上
-
1