zoukankan      html  css  js  c++  java
  • XSLT学习

    XSL 语言 

     XSL(eXtensible Stylesheet Language)是可扩展样式表语言,是一种用于以可读格式呈现 XML标准通用标记语言的子集)数据的语言。

    XSL与xml

      CSS = HTML 样式表

      HTML 使用预先定义的标签,每个标签的意义很容易被理解。

      HTML 中的 <table> 标签定义表格 - 并且浏览器清楚如何显示它。

      向 HTML 元素添加样式是很容易的。通过 CSS,很容易告知浏览器用特定的字体或颜色显示一个元素。

      XSL = XML 样式表

      XML 不使用预先定义的标签(我们可以使用任何喜欢的标签名),并且每个标签的意义并不都那么容易被理解。

      <table> 标签意味着一个 HTML 表格,一件家具,或是别的什么东西 - 浏览器不清楚如何显示它。

      XSL 可描述如何来显示 XML 文档!

     
    XSL与XSLT


    XSL - 不仅仅是样式表语言

    XSL 包括三部分:
    • XSLT - 一种用于转换 XML 文档的语言。
    • XPath - 一种用于在 XML 文档中导航的语言。
    • XSL-FO - 一种用于格式化 XML 文档的语言。

    (XSLT 指 XSL Transformation,专门用于进行XML数据转换(data transformation)。XSL是XSLT的前身,本来包含了XML数据表达(data presentation)和数据转换两个目的。由于两个目的截然不同,数据转换部分就逐渐从中独立出来成为一个新的建议(XSLT, W3C Recommendation 16 November 1999)。剩下的数据表达部分成为XSL-FO, XSL Formatting Object,目前还是草案。现在称XSL有人指XSLT,有的人指XSL-FO,所以要区分清楚。)

     

    Xslt简介

         Xslt是Extensible Stylesheet Language Transformations的缩写,用来将XML 文档转换到其它文档类型。

         XSLT用于将一种XML文档转换为另外一种XML文档,或者可被浏览器识别的其他类型的文档,比如HTML和XHTML。通常,XSLT是通过把每个XML元素转换为(X)HTML元素来完成这项工作的。通过XSLT,您可以向或者从输出文件添加或移除元素和属性。您也可重新排列元素,执行测试并决定隐藏或显示哪个元素。描述转化过程的一种通常的说法是,XSLT把XML源树转换为XML结果树。

    XSLT的本质类似于CSS,只不过它是专门用来处理XML文档,相当于XML样式表。XML只注重数据的表现内容,而不注重表现形式,XSLT就是用来表现数据的形式。

    Xslt功能

      1 解释XML标签

        这是XSLT最重要的作用。由于 XML 标签是用户定义的,XML 标签的意义是为了方便用户(而不是计算机)理解。比如在XML中定义一个Table标签,计算机不知道是要将它展现为一个表格,还是展现为一个桌子。所以就要使用XSLT,向计算机解释这个标签的意义。

      2 其他作用

    XSLT 还可以对 XML 进行下列操作:

    l  添加和删除元素

    l  添加和删除属性

    l  对元素进行重新排列或排序

    l  隐藏或显示某些元素

    l  查找或选择特定元素

    总的来说Xslt最主要的功能是转化,描述转化过程的一种通常的说法是,XSLT XML 源树转换为 XML 结果树。其他,还具有流程控制、条件选择、循环处理、元素排序等功能。

    Xslt语法

    1 Xslt声明

      声明:<xsl:stylesheet version="1.0" xmlns:xsl=http://www.w3.org/1999/XSL/Transform>

    2 Xslt元素

       Xslt元素一般都有Xls:前缀,因为存在于xmlns:xsl命名空间。

     常用的Xslt元素有:

    1. 1.       <xsl:template math="/"> </xsl:template>

    元素定义了一个模板。而 math="/" 属性则把此模板与 XML 源文档的根相联系。

    1. 2.       <xsl:apply-templates />

    可把一个模板应用于当前的元素或者当前元素的子节点.

    1. 3.       <xsl:value-of  select="[XPath expression]" />

    提取某个选定节点的值,并把值添加到转换的输出流中。[XPath expression]表示提取节点的XPath路径

    1. 4.       <xsl:for-each select="[XPath expression]">  </xsl:for-each>

    用于选取指定的节点集中的每个XML元素

    select可以使用设置过滤条件来进行查询:

    &gt;   大于

    &lt;   小于

    =     等于

    !=    不等于

    例如:<xsl:for-each select="catalog/cd[Price &gt; 10]">...</xsl:for-each>

    还可以使用XPath的模糊查询:

    例如:

    <xsl:for-each select="catalog/cd[contains(author='Bob.Dylan')]">...</xsl:for-each>

    如果是属性内容,则用这样的表达式:

    <xsl:for-each select="catalog/cd[contains(@author='Bob.Dylan')]">...</xsl:for-each>

    1. 5.       <xsl:sort select="[XPath expression]" />

    对结果进行排序,只要简单地在 XSL文件中的<xsl:for-each>元素内部添加一个 <xsl:sort>元素就可以了。

    1. 6.       <xsl:if test="expression"></xsl:if>

    在<xsl:for-each>内部添加,实现判断功能,test为条件表达式:

    <xsl:for-each select="catalog/cd">

        <xsl:if test="price &lt; 20">...</xsl:if>

    </xsl:for-each>

    1. 7.       <xsl:choose>

    包含在foreach循环中,多重条件判断语句。

    格式如下:

    <xsl:for-each select="catalog/cd">

      <xsl:choose>

        <xsl:when test="expression1">

          .....

        </xsl:when>

        <xsl:when test="expression2">

          .....

        </xsl:when>

        <xsl:otherwise>

          .....

        </xsl:otherwise>

       </choose>

    </xsl:for-each>

    1. 8.       <xsl:variable>

    声明一个变量,用于声明局部或全局的变量。如果被声明为顶层元素,则该变量是全局的,而如果在模板内声明,则变量是本地的。

    3 Xslt函数

    XSLT中使用的函数分为两类,一类是XSLT内置的函数,一类是XPath函数。内置函数是XSLT自带的函数,而XPath函数是XPath规范定义的函数。

    内置函数:

    XSLT含有超过100个内建的函数。这些函数用于字符串值、数值、日期和时间比较、节点和 QName操作、序列操作、逻辑值等,不过内置函数在我们的项目中用到的很少。内置函数的命名空间是:http://www.w3.org/2005/02/xpath- functions,默认前缀是fn。

    常用的内置函数有:

    current()         函数返回仅包含当前节点的节点集,通常,当前节点与上下文节点是相同的。在语法上<xsl:value-of select="current()"/>等同于<xsl:value-of select="."/>。后者用的是xpath方法。

    format-number()   比如:函数用于把数字转换为字符串。 <xsl:value-of select= 'format-number(500100, "###,###.00")' />

     

    XPath函数

    用到的xpath函数有:

    string(arg)    返回参数的字符串值

    compare(comp1,comp2)   字符串的比较

    concat(string,string,...)     字符串的拼接

    substring(string,start,len)   返回从 start 位置开始的指定长度的子字符串

    string-length(string)       返回指定字符串的长度

    position()     返回当前正在被处理的节点的 index 位置

    last()         返回在被处理的节点列表中的项目数目。

     

    4 Xslt模板

       XSL 样式表由一个或多套被称为模板(template)的规则组成。每个模板含有当某个指定的节点被匹配时所应用的规则。

    1. 模板的定义是<xsl:template> 元素,模板内部定义了该元素以什么方式显示出来。match 属性用于关联 XML元素和模板,也就是对这个元素使用这个模板。比如:

           <xsl:template match="/ns5:TemporaryPermitTable">

    1. 2.       模板的应用是<xsl:apply-templates /> 元素,可向当前元素或当前元素的子元素应用模板。select 属性表示它仅会处理匹配该属性的值的子元素。

     

       使用 select 属性来规定处理子节点的顺序。首先执行默认模板(<xsl:template match="/">),接下来依次处理每一个模板

    xsl:apply-templates总是包含在xsl:template元素中的。

  • 相关阅读:
    day1
    day0
    Scala编程快速入门系列(二)
    Scala编程快速入门系列(一)
    awk使用方法与案例介绍
    快速掌握Shell编程
    yum源配置的三种方法
    部署Kettle做ETL开发并使用Crontab制作调度系统
    大数据平台Hive数据迁移至阿里云ODPS平台流程与问题记录
    RDD概念、特性、缓存策略与容错
  • 原文地址:https://www.cnblogs.com/tech-bird/p/3616933.html
Copyright © 2011-2022 走看看