Xslt
Upcoming SlideShare
Loading in...5
×
 

Xslt

on

  • 611 views

慢慢转,我不着急

慢慢转,我不着急

Statistics

Views

Total Views
611
Views on SlideShare
611
Embed Views
0

Actions

Likes
0
Downloads
3
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Xslt Xslt Presentation Transcript

  • XSL & XSLT EXtensible Stylesheet Language EXtensible Stylesheet Language Transformation
  • Previous
    • XML( EX tensible M arkup L anguage) 可扩展的标记语言
    What You Should Already Know XML 被设计用来传输和存储数据。 HTML 被设计用来显示数据。 XML 被设计为传输和存储数据 ( 格式化数据 ) ,其焦点是数据的内容。 HTML 被设计用来显示数据,其焦点是数据的外观。 HTML 旨在显示信息,而 XML 旨在传输信息。 XML 是一种 标记语言 ,很类似 HTML XML 的设计宗旨是 传输数据 ,而非显示数据 XML 标签没有被预定义。您需要 自行定义标签 。 XML 被设计为具有 自我描述性 。 XML 是 W3C 的推荐标准
  • XSLT 我将有以下一段描述:
    • <?xml version=“1.0” charset=‘utf-8’ ?>
    • <animal>
      • <head>
      • <eye>2</eye>
      • <nose>1</nose>
      • <mouse>1</mouse>
      • </ head >
      • <body>
      • <arm>2</arm>
      • <leg>2</leg>
      • <tail>0</tail>
      • </body>
    • </animal>
    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> View slide
  • XSLT
    • 万维网联盟 (W3C) 开始发展 XSL 的原因是:存在着对于基于 XML 的样式表语言的需求。
    • CSS = HTML 样式表
    • XSL = XML 样式表
    • XSL - 不仅仅是样式表语言
    HTML 使用预先定义的标签,标签的意义 很容易被理解 。 HTML 元素中的 <table> 元素定义表格 - 并且浏览器清楚如何显示它。 向 HTML 元素添加样式是很容易的。通过 CSS ,很容易告知浏览器 用特定的字体或颜色显示一个元素。 XML 不使用预先定义的标签(我们可以使用任何喜欢的标签名),并且 这些标签的意义 并不都那么容易被理解 。 <table> 元素意味着一个 HTML 表格,一件家具,或是别的什么东西 - 浏 览器不清楚如何显示它。 XSL 可描述如何来显示 XML 文档! XSL 包括三部分: XSLT 一种用于转换 XML 文档的语言。 XPath 一种用于在 XML 文档中导航的语言。 XSL-FO 一种用于格式化 XML 文档的语言。 This Tutorial is About XSLT View slide
    • XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。
    • 什么是 XSLT ?
    • XSLT = XSL 转换
    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 元素来完成这项工作的。
  • XSLT
    • XSLT 使用 Xpath
    • 它如何工作?
    • XSLT 是 W3C 标准
    • 几乎所有主要的浏览器均支持 XML 和 XSLT 。
    …… 通过 XSLT ,您可以向或者从输出文件添加或移除元素和 属性。 您也可重新排列元素,执行测试并决定隐藏或显示哪个元 素,等等。 描述转化过程的一种通常的说法是, XSLT 把 XML 源树转 换为 XML 结果树。 XSLT 使用 XPath 在 XML 文档中查找信息。 XPath 被用来 通过元素和属性在 XML 文档中进行导航。 在转换过程中, XSLT 使用 XPath 来定义源文档中可匹配 一个或多个预定义模板的部分。一旦匹配被找到, XSLT 就会把源文档的匹配部分转换为结果文档 XSLT 在 1999 年 11 月 16 日被确立为 W3C 标准 。
  • XSLT
    • 正确的样式表声明
    把文档声明为 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; 。
    • 我们现在要把下面这个 XML 文档( &quot;cdcatalog.xml&quot; )转换为 XHTML :
    • 在 Internet Explorer 和 Firefox 中查看 XML 文件:
    XSLT 打开 XML 文件(通常通过点击某个链接) - XML 文档会 以颜色化的代码方式来显示根元素及子元素。点击元素左 侧的加号或减号可展开或收缩元素的结构。如需查看原始 的 XML 源文件(不带有加号和减号),请在浏览器菜单中 选择“查看页面源代码”。
  • XSLT
    • 创建 XSL 样式表
    然后创建一个带有转换模板的 XSL 样式表( &quot;cdcatalog.xsl&quot; ):
  • XSLT
    • 把 XSL 样式表链接到 XML 文档
  • XSLT
    • View the result
  • XSLT
    • XSL 样式表由一个或多套被称为模板( template )的规则组成。
    • 每个模板含有当某个指定的节点被匹配时所应用的规则。
    • 好了,让我们看一下上一节中的 XSL 文件的简化版本:
    <xsl:template> 元素 <xsl:template> 元素用于构建模板。 match 属性用于关联 XML 元素和模板。 match 属性也可用来 为整个文档定义模板。 match 属性的值是 XPath 表达式(举 例, match=&quot;/&quot; 定义整个文档)。
  • XSLT
    • 代码解释:
    由于 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> 元素用于提取某个选定节点的值,并把值添加到转换的输出 流中:
  • XSLT 注释: select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。 上面的转换结果类似这样:
  • XSLT
    • <xsl:for-each> 元素
    <xsl:for-each> 元素允许您在 XSLT 中进行循环。 <xsl:for-each> 元素可用于选取指定的节点集中的每个 XML 元素。 注释: select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。
  • XSLT
    • 结果过滤
    • 通过在 <xsl:for-each> 元素中添加一个选择属性的判别式,我们也可以
    • 过滤从 XML 文件输出的结果。
    • <xsl:for-each select=&quot;catalog/cd[artist='Bob Dylan']&quot;>
    • 合法的过滤运算符 :
      • =  ( 等于 )
      • != ( 不等于 )
      • &lt; ( 小于 )
      • &gt; ( 大于 )
      • 上面的转换结果类似这样:
  • XSLT
    • <xsl:sort>
    <xsl:sort> 元素用于对结果进行排序。 在何处放置排序信息 如需对结果进行排序,只要简单地在 XSL 文件中的 <xsl:for-each> 元素内部添加一个 <xsl:sort> 元素: 注释: select 属性指示需要排序的 XML 元素。 上面的转换结果类似这样:
  • XSLT
    • <xsl:if> 元素
    <xsl:if> 元素用于放置针对 XML 文件内容的条件测试。 语法 在何处放置 <xsl:if> 元素 如需添加有条件的测试,请在 XSL 文件中的 <xsl:for-each> 元素内 部添加 <xsl:if> 元素: 注释:必选的 test 属性的值包含了需要求值的表达式。
  • XSLT
    • <xsl:choose> 元素
    语法 在何处放置选择条件 要插入针对 XML 文件的多重条件测试,请向 XSL 文件添加 <xsl:choose> 、 <xsl:when> 以及 <xsl:otherwise> :
  • XSLT
    • 上面的代码会在 CD 的价格高于 10 时向 &quot;Artist&quot; 列添加粉色的背景颜色。
    • 上面的转换结果类似这样:
  • XSLT
    • 这是另外一个包含两个 <xsl:when> 元素的例子:
    • 上面的代码会在 CD 的价格高于 10 时向 &quot;Artist&quot; 列添加粉色的背景颜色,并在 CD 的价格高于 9 且低于等于 10 时向 &quot;Artist&quot; 列添加灰色的背景颜色。
    • 上面的转换结果类似这样:
  • XSLT
    • <xsl:apply-templates> 元素
    • <xsl:apply-templates> 元素可把一个模板应用于当前的元素或者当前元素的子节点。
    • 假如我们向 <xsl:apply-templates> 元素添加一个 select 属性,此元素就会仅仅处理与属性值匹配的子元素。我们可以使用 select 属性来规定子节点被处理的顺序。
    • 请看下面的 XSL 样式表:
  • XSLT
    • 谁来为我们做这些?
    客户端(浏览器) 在前面,我们学习过如何在浏览器中使用 XSLT 来完成 XML 到 XHTML 的转化。我们创建了一段使用 XML 解析器来进行转化的 JavaScript 。 JavaScript 解决方案无法工作于没有 XML 解析器的浏览器。为了让 XM L 数据适用于任何类型的浏览器,我们必须在服务器上对 XML 文档进行转换 ,然后将其作为 XHMTL 发送到浏览器。
  • XSLT
    • 谁来为我们做这些?
    服务器端
  • Thank you! 宁宇