Xslt

751 views

Published on

慢慢转,我不着急

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Xslt

  1. 1. XSL & XSLT EXtensible Stylesheet Language EXtensible Stylesheet Language Transformation
  2. 2. Previous <ul><li>XML( EX tensible M arkup L anguage) 可扩展的标记语言 </li></ul>What You Should Already Know XML 被设计用来传输和存储数据。 HTML 被设计用来显示数据。 XML 被设计为传输和存储数据 ( 格式化数据 ) ,其焦点是数据的内容。 HTML 被设计用来显示数据,其焦点是数据的外观。 HTML 旨在显示信息,而 XML 旨在传输信息。 XML 是一种 标记语言 ,很类似 HTML XML 的设计宗旨是 传输数据 ,而非显示数据 XML 标签没有被预定义。您需要 自行定义标签 。 XML 被设计为具有 自我描述性 。 XML 是 W3C 的推荐标准
  3. 3. XSLT 我将有以下一段描述: <ul><li><?xml version=“1.0” charset=‘utf-8’ ?> </li></ul><ul><li><animal> </li></ul><ul><ul><li><head> </li></ul></ul><ul><ul><li><eye>2</eye> </li></ul></ul><ul><ul><li><nose>1</nose> </li></ul></ul><ul><ul><li><mouse>1</mouse> </li></ul></ul><ul><ul><li></ head > </li></ul></ul><ul><ul><li><body> </li></ul></ul><ul><ul><li><arm>2</arm> </li></ul></ul><ul><ul><li><leg>2</leg> </li></ul></ul><ul><ul><li><tail>0</tail> </li></ul></ul><ul><ul><li></body> </li></ul></ul><ul><li></animal> </li></ul>XSLT_1 Ta 有着 <xsl:value-of select=“eye”/> 只有神的大眼睛,闪烁着坚毅的目光。 Ta 有着 <xsl:value-of select=“nose”/> 只标致的鼻子,不算高但是很耐看。 Ta 有着 <xsl:value-of select=“mouse”/> 张很 MAN 的小嘴,叼上根烟卷,给力。 <xsl:choose> <xsl:when tail=“ 0 &quot;> Ta handsome 且 健康正常 </xsl:when> <xsl:otherwise> 不幸的, Ta 在进化的战斗中落下残疾 </xsl:otherwise> </xsl:choose> XSLT_2 Ta 有着 <xsl:value-of select=“eye”/> 只炯炯有神的大眼神,曾经有网友感慨:哥苦练装酷 20 年,不及 Ta 一半的杀伤力 , 哥被这 Ta 彻底打败了,泪奔中…… Ta 有着 <xsl:value-of select=“nose”/> 只黑色的小鼻子,标致的很。 Ta 有着 <xsl:value-of select=“mouse”/> 张沮丧的小嘴,看着让人心疼。 <xsl:choose> <xsl:when tail=“ 0 &quot;> Ta 低垂的的小尾巴,一样让人觉得忧郁 </xsl:when> <xsl:otherwise> 很抱歉这张图上没有,我不敢乱讲 </xsl:otherwise> </xsl:choose>
  4. 4. XSLT <ul><li>万维网联盟 (W3C) 开始发展 XSL 的原因是:存在着对于基于 XML 的样式表语言的需求。 </li></ul><ul><li>CSS = HTML 样式表 </li></ul><ul><li>XSL = XML 样式表 </li></ul><ul><li>XSL - 不仅仅是样式表语言 </li></ul>HTML 使用预先定义的标签,标签的意义 很容易被理解 。 HTML 元素中的 <table> 元素定义表格 - 并且浏览器清楚如何显示它。 向 HTML 元素添加样式是很容易的。通过 CSS ,很容易告知浏览器 用特定的字体或颜色显示一个元素。 XML 不使用预先定义的标签(我们可以使用任何喜欢的标签名),并且 这些标签的意义 并不都那么容易被理解 。 <table> 元素意味着一个 HTML 表格,一件家具,或是别的什么东西 - 浏 览器不清楚如何显示它。 XSL 可描述如何来显示 XML 文档! XSL 包括三部分: XSLT 一种用于转换 XML 文档的语言。 XPath 一种用于在 XML 文档中导航的语言。 XSL-FO 一种用于格式化 XML 文档的语言。 This Tutorial is About XSLT
  5. 5. <ul><li>XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。 </li></ul><ul><li>什么是 XSLT ? </li></ul><ul><li>XSLT = XSL 转换 </li></ul>XSLT XSLT 指 XSL 转换( XSL Transformations )。 XSLT 是 XSL 中最重要的部分。 XSLT 可将一种 XML 文档转换为另外一种 XML 文档。 XSLT 使用 XPath 在 XML 文档中进行导航。 XPath 是一个 W3C 标准。 XSLT 是 XSL 中最重要的部分。 XSLT 用于将一种 XML 文档转换为另外一种 XML 文档,或 者可被浏览器识别的其他类型的文档,比如 HTML 和 XHTML 。 通常, XSLT 是通过把每个 XML 元素转换为 (X)HTML 元素来完成这项工作的。
  6. 6. XSLT <ul><li>XSLT 使用 Xpath </li></ul><ul><li>它如何工作? </li></ul><ul><li>XSLT 是 W3C 标准 </li></ul><ul><li>几乎所有主要的浏览器均支持 XML 和 XSLT 。 </li></ul>…… 通过 XSLT ,您可以向或者从输出文件添加或移除元素和 属性。 您也可重新排列元素,执行测试并决定隐藏或显示哪个元 素,等等。 描述转化过程的一种通常的说法是, XSLT 把 XML 源树转 换为 XML 结果树。 XSLT 使用 XPath 在 XML 文档中查找信息。 XPath 被用来 通过元素和属性在 XML 文档中进行导航。 在转换过程中, XSLT 使用 XPath 来定义源文档中可匹配 一个或多个预定义模板的部分。一旦匹配被找到, XSLT 就会把源文档的匹配部分转换为结果文档 XSLT 在 1999 年 11 月 16 日被确立为 W3C 标准 。
  7. 7. XSLT <ul><li>正确的样式表声明 </li></ul>把文档声明为 XSL 样式表的根元素是 <xsl:stylesheet> 或 <xsl:transform> 。 注释: <xsl:stylesheet> 和 <xsl:transform> 是完全同义的, 均可被使用! 根据 W3C 的 XSLT 标准,声明 XSL 样式表的正确方法是: 如需访问 XSLT 的元素、属性以及特性,我们必须在文档 顶端声明 XSLT 命名空间。 xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; 指向了 官方的 W3C XSLT 命名空间。如果您使用此命名空间,就 必须包含属性 version=&quot;1.0&quot; 。
  8. 8. <ul><li>我们现在要把下面这个 XML 文档( &quot;cdcatalog.xml&quot; )转换为 XHTML : </li></ul><ul><li>在 Internet Explorer 和 Firefox 中查看 XML 文件: </li></ul>XSLT 打开 XML 文件(通常通过点击某个链接) - XML 文档会 以颜色化的代码方式来显示根元素及子元素。点击元素左 侧的加号或减号可展开或收缩元素的结构。如需查看原始 的 XML 源文件(不带有加号和减号),请在浏览器菜单中 选择“查看页面源代码”。
  9. 9. XSLT <ul><li>创建 XSL 样式表 </li></ul>然后创建一个带有转换模板的 XSL 样式表( &quot;cdcatalog.xsl&quot; ):
  10. 10. XSLT <ul><li>把 XSL 样式表链接到 XML 文档 </li></ul>
  11. 11. XSLT <ul><li>View the result </li></ul>
  12. 12. XSLT <ul><li>XSL 样式表由一个或多套被称为模板( template )的规则组成。 </li></ul><ul><li>每个模板含有当某个指定的节点被匹配时所应用的规则。 </li></ul><ul><li>好了,让我们看一下上一节中的 XSL 文件的简化版本: </li></ul><xsl:template> 元素 <xsl:template> 元素用于构建模板。 match 属性用于关联 XML 元素和模板。 match 属性也可用来 为整个文档定义模板。 match 属性的值是 XPath 表达式(举 例, match=&quot;/&quot; 定义整个文档)。
  13. 13. XSLT <ul><li>代码解释: </li></ul>由于 XSL 样式表本身也是一个 XML 文档,因此它总是由 XML 声明起始: 下一个元素, <xsl:stylesheet> ,定义此文档是一个 XSLT 样式表文档(连同 版本号和 XSLT 命名空间属性)。 <xsl:template> 元素定义了一个模板。而 match=&quot;/&quot; 属性则把此模板与 XML 源文档的根相联系。 <xsl:template> 元素内部的内容定义了写到输出结果的 HTML 代码。 最后两行定义了模板的结尾,及样式表的结尾。 以上转换的结果类似这样 : <xsl:value-of> 元素 <xsl:value-of> 元素用于提取某个选定节点的值。 <xsl:value-of> 元素用于提取某个选定节点的值,并把值添加到转换的输出 流中:
  14. 14. XSLT 注释: select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。 上面的转换结果类似这样:
  15. 15. XSLT <ul><li><xsl:for-each> 元素 </li></ul><xsl:for-each> 元素允许您在 XSLT 中进行循环。 <xsl:for-each> 元素可用于选取指定的节点集中的每个 XML 元素。 注释: select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。
  16. 16. XSLT <ul><li>结果过滤 </li></ul><ul><li>通过在 <xsl:for-each> 元素中添加一个选择属性的判别式,我们也可以 </li></ul><ul><li>过滤从 XML 文件输出的结果。 </li></ul><ul><li><xsl:for-each select=&quot;catalog/cd[artist='Bob Dylan']&quot;> </li></ul><ul><li>合法的过滤运算符 : </li></ul><ul><ul><li>=  ( 等于 ) </li></ul></ul><ul><ul><li>!= ( 不等于 ) </li></ul></ul><ul><ul><li>&lt; ( 小于 ) </li></ul></ul><ul><ul><li>&gt; ( 大于 ) </li></ul></ul><ul><ul><li>上面的转换结果类似这样: </li></ul></ul>
  17. 17. XSLT <ul><li><xsl:sort> </li></ul><xsl:sort> 元素用于对结果进行排序。 在何处放置排序信息 如需对结果进行排序,只要简单地在 XSL 文件中的 <xsl:for-each> 元素内部添加一个 <xsl:sort> 元素: 注释: select 属性指示需要排序的 XML 元素。 上面的转换结果类似这样:
  18. 18. XSLT <ul><li><xsl:if> 元素 </li></ul><xsl:if> 元素用于放置针对 XML 文件内容的条件测试。 语法 在何处放置 <xsl:if> 元素 如需添加有条件的测试,请在 XSL 文件中的 <xsl:for-each> 元素内 部添加 <xsl:if> 元素: 注释:必选的 test 属性的值包含了需要求值的表达式。
  19. 19. XSLT <ul><li><xsl:choose> 元素 </li></ul>语法 在何处放置选择条件 要插入针对 XML 文件的多重条件测试,请向 XSL 文件添加 <xsl:choose> 、 <xsl:when> 以及 <xsl:otherwise> :
  20. 20. XSLT <ul><li>上面的代码会在 CD 的价格高于 10 时向 &quot;Artist&quot; 列添加粉色的背景颜色。 </li></ul><ul><li>上面的转换结果类似这样: </li></ul>
  21. 21. XSLT <ul><li>这是另外一个包含两个 <xsl:when> 元素的例子: </li></ul><ul><li>上面的代码会在 CD 的价格高于 10 时向 &quot;Artist&quot; 列添加粉色的背景颜色,并在 CD 的价格高于 9 且低于等于 10 时向 &quot;Artist&quot; 列添加灰色的背景颜色。 </li></ul><ul><li>上面的转换结果类似这样: </li></ul>
  22. 22. XSLT <ul><li><xsl:apply-templates> 元素 </li></ul><ul><li><xsl:apply-templates> 元素可把一个模板应用于当前的元素或者当前元素的子节点。 </li></ul><ul><li>假如我们向 <xsl:apply-templates> 元素添加一个 select 属性,此元素就会仅仅处理与属性值匹配的子元素。我们可以使用 select 属性来规定子节点被处理的顺序。 </li></ul><ul><li>请看下面的 XSL 样式表: </li></ul>
  23. 23. XSLT <ul><li>谁来为我们做这些? </li></ul>客户端(浏览器) 在前面,我们学习过如何在浏览器中使用 XSLT 来完成 XML 到 XHTML 的转化。我们创建了一段使用 XML 解析器来进行转化的 JavaScript 。 JavaScript 解决方案无法工作于没有 XML 解析器的浏览器。为了让 XM L 数据适用于任何类型的浏览器,我们必须在服务器上对 XML 文档进行转换 ,然后将其作为 XHMTL 发送到浏览器。
  24. 24. XSLT <ul><li>谁来为我们做这些? </li></ul>服务器端
  25. 25. Thank you! 宁宇

×