zoukankan      html  css  js  c++  java
  • xlst

    XSL :扩展样式表语言(EXtensible Stylesheet Language)。

    XSL 包括三部分:

    XSLT:一种用于转换 XML 文档的语言。

    XPath:一种用于在 XML 文档中导航的语言。

    XSL-FO:一种用于格式化 XML 文档的语言。

                 

    XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。

    把文档声明为 XSL 样式表的根元素是 <xsl:stylesheet> 或 <xsl:transform>。

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

    或者:<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/">

    <table border="1">

        <tr bgcolor="#9acd32">

          <th align="left">Title</th>

          <th align="left">Artist</th>

        </tr>

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

        <tr>

          <td><xsl:value-of select="title"/></td>

          <td><xsl:value-of select="artist"/></td>

        </tr>

        </xsl:for-each>

        </table>

    </xsl:template>

    在html文档中引用<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>

     

     

    match="/" 定义整个文档

    <xsl:template> 元素用于构建模板。

    <xsl:stylesheet>,定义此文档是一个 XSLT 样式表文档(连同版本号和 XSLT 命名空间属性)。

    <xsl:value-of> 元素用于提取某个选定节点的值。如:

    <xsl:value-of select="catalog/cd/title"/>

    select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录

    <xsl:for-each> 元素允许您在 XSLT 中进行循环。如:<xsl:for-each select="catalog/cd[artist='Bob Dylan']">

    =  (等于)

    != (不等于)

    &lt; (小于)

    &gt; (大于)

     

    <xsl:sort> 元素用于对结果进行排序。如:<xsl:sort select="artist"/>

    <xsl:if> 元素用于放置针对 XML 文件内容的条件测试。

    语法

    <xsl:if test="expression">

      ...

      ...如果条件成立则输出...

      ...

    </xsl:if>

     

    XSLT <xsl:choose> 元素用于结合 <xsl:when> <xsl:otherwise> 来表达多重条件测试。

    <xsl:choose> 元素

    语法

    <xsl:choose>

      <xsl:when test="expression">

        ... 输出 ...

      </xsl:when>

      <xsl:otherwise>

        ... 输出 ....

      </xsl:otherwise>

    </xsl:choose>

    <xsl:apply-templates> 元素可把一个模板应用于当前的元素或者当前元素的子节点。

     

    使用样式表必须要求浏览器支持xslt,可以通过使用 JavaScript,我们可以进行浏览器确认测试,根据浏览器和使用者的需求来使用不同的样式表

    XSLT 的设计目的之一就是使一种格式到另一种格式的转换成为可能,同时支持不同类型的浏览器以及不同的用户需求。并向所有类型的浏览器返回可读的数据。

    <script type="text/javascript">

    // Load XML

    var xml = new ActiveXObject("Microsoft.XMLDOM")

    xml.async = false

    xml.load("cdcatalog.xml")

    // Load XSL

    var xsl = new ActiveXObject("Microsoft.XMLDOM")

    xsl.async = false

    xsl.load("cdcatalog.xsl")

    // Transform

    document.write(xml.transformNode(xsl))

    </script>

    标签:

    1、<xsl:apply-imports> 元素可应用来自导入样式表中的模版规则。

    导入样式表中的模版规则的优先级要比主样式表中的模版规则要低。

    如:<xsl:import href="standard.xsl"/>

    <xsl:template match="message">

      <div style="border:solid blue">

      <xsl:apply-imports/>

      </div>

    </xsl:template>

    2、<xsl:apply-templates> 元素可向当前元素或当前元素的子元素应用模板。

    Select:可选。规定要处理的节点。星号选取整个节点集。如果省略该属性,则将选取当前节点的所有子节点。

    3、<xsl:attribute> 元素用于向元素添加属性。注释:<xsl:attribute> 元素会替换名称相同的已有属性。

    Name:必需。规定属性的名称。

    Namespace:可选。为属性定义命名空间的 URI。

    <xsl:attribute-set name="font">

      <xsl:attribute name="fname">Arial</xsl:attribute>

      <xsl:attribute name="size">14px</xsl:attribute>

      <xsl:attribute name="color">red</xsl:attribute>

    </xsl:attribute-set>

    4、xsl:attribute> 元素用于向元素添加属性。

    5、<xsl:call-template> 元素可调用一个指定的模板。

    Name:必需。规定被调用的模板名称。

    6、<xsl:comment> 元素用于在结果树中创建注释节点。

    7、<xsl:copy> 元素可创建当前节点的一个副本(拷贝)。

    注释:当前节点的 Namespace 节点会被自动复制,但是当前节点的子节点和属性不会被自动复制!

    use-attribute-sets: 可选。如果该节点是元素,则该属性是应用到输出节点的属性集列表,由空格分隔

    8、<xsl:copy-of> 元素可创建当前节点的一个副本。注释:当前节点的 Namespace 节点、子节点以及属性都会被自动复制!

    9、<xsl:decimal-format> 元素定义了当通过 format-number() 函数把数字转换为字符串时,所要使用的字符和符号。

    name

    name

    可选。为此格式规定名称。

    decimal-separator

    char

    可选。规定小数点字符。默认是 "."。

    grouping-separator

    char

    可选。规定千的分隔字符。默认是 ","。

    infinity

    string

    可选。规定用来表示无穷大的字符串。默认是 "Infinity"。

    minus-sign

    char

    可选。规定表示负数的字符。默认是 "-"。

    NaN

    string

    可选。规定当值不是数字时使用的字符串。默认是 "NaN"。

    percent

    char

    可选。规定百分比符号的字符。默认是 "%"。

    per-mille

    char

    可选。规定千分号的字符。默认是 "‰"。

    zero-digit

    char

    可选。规定数字 0 的字符。默认是 "0"。

    digit

    char

    可选。规定字符,该字符用于指示需要使用数字的地方。默认是 #。

    pattern-separator

    char.

    可选。规定字符,该字符用于分隔格式模式中的正负次模式。默认是 ";"。

    如:

    <xsl:decimal-format name="euro" decimal-separator="," grouping-separator="."/>

    <xsl:template match="/">

    <xsl:value-of select="format-number(26825.8, '#.###,00', 'euro')"/>

    </xsl:template>

    10、<xsl:element> 元素用于在输出文档中创建元素节点。

    属性

    描述

    name

    name

    必需。规定要创建的元素的名称(可以使用表达式为 name 属性赋值,这个表达式是在运行时进行计算的,比如:<xsl:element name="{$country}" />)

    namespace

    URI

    可选。规定元素的命名空间 URI。(可以使用表达式为 namespace 属性赋值,这个表达式是在运行时进行计算的,比如:<xsl:element name="{$country}" namespace="{$someuri}"/>)

    use-attribute-sets

    namelist

    可选。空格分隔的属性集,该属性集包含了需要向元素添加的属性。

    11、<xsl:fallback> 元素规定了在 XSL 处理程序不支持 XSL 元素时,所执行的替代代码。

    12、<xsl:import> 元素是顶层元素,用于把一个样式表中的内容倒入另一个样式表中。

    注释:被导入的样式的优先级低于导出的样式表

    13、<xsl:include> 元素是顶层元素(top-level element),把一个样式表中的样式表内容包含到另一个样式表中。

    注释:被包含的样式表(included style sheet)拥有与包含的样式表(including style sheet)相同的优先级。

    注释:该元素必须是 <xsl:stylesheet> 或 <xsl:transform> 的子节点。

    href

    URI

    必需。规定要包含的样式表的 URI。

    14、<xsl:key> 元素是顶层元素,它可声明一个命名的键(即为 XML 文档中指定的元素分配的名称和值对)。

    此键通过 key() 函数在样式表中使用,帮助您有效地在复杂的 XML 文档中访问分配的元素。。

    注释:键不必是唯一的!

    属性

    描述

    name

    name

    必需。规定键的名称。

    match

    pattern

    必需。定义该键被应用到哪个节点。

    use

    expression

    必需。指定要作为该键的值使用的表达式。

    键值可以是下列任一值:属性、子元素或匹配元素的内容。

    15、<xsl:message> 元素可向输出写一条消息。该元素主要用于报告错误。

    该元素能够包含几乎任何其他的 XSL 元素(<xsl:text> 、<xsl:value-of> 等等)。

    terminate 属性允许您选择在错误发生时,是否应终止转换。

    16、<xsl:namespace-alias> 元素用于在输出中把样式表中的命名空间替换为不同的命名空间,换句话说,使用其他前缀替换与给定命名空间关联的前缀。

    注释:<xsl:namespace-alias> 是顶层元素(top-level element),且必须是 <xsl:stylesheet> 或 <xsl:transform> 的子元素。

    属性

    描述

    stylesheet-prefix

    prefix

    #default

    必需。规定您希望更改的命名空间。

    result-prefix

    prefix

    #default

    必需。为输出规定期望的命名空间。

    17、<xsl:number> 元素用于测定在源中当前节点的整数位置。它也用于将格式化的数字插入结果树。

    属性

    描述

    count

    expression

    可选。XPath 表达式,规定要计算的节点。

    level

    single

    multiple

    any

    可选。控制如何分配序号。

    值可以是:

    single (默认)

    multiple

    any (Netscape 6 不支持)

    from

    expression

    可选。XPath 表达式,规定从何处开始计数。

    value

    expression

    可选。规定用户提供的数字,用于代替产生的序号。

    format

    formatstring

    可选。定义数字的输出格式。可以使用的值

    lang

    languagecode

    可选。规定用于编号的语言字母表。

    letter-value

    alphabetic traditional

    可选。消除使用字母的编号序列之间的歧义。值 "alphabetic" 指定字母序列;值 "traditional" 指定其他序列。默认值为 "alphabetic"。

    grouping-separator

    character

    可选。规定使用什么字符来分隔组或数字。默认是逗号。

    grouping-size

    number

    可选。规定分组的大小。默认是 3。

    式标记

    生成的序列

    1

    1 2 3 4 5 ... 10 11 12 ...

    01

    01 02 03 ... 19 10 11 ... 99 100 101...

    a

    a b c . .

    A

    A B C ...Z AA AB AC...

    i

    i ii iii iv v vi vii viii ix x...

    I

    I II III IV V VI VII VIII IX X...

             

    18、<xsl:output> 元素定义了输出文档的格式。

    注释:<xsl:output> 是顶层元素(top-level element),必须是 <xsl:stylesheet> 或 <xsl:transform> 的子节点。

    method

    xml

    html

    text

    name

    可选。定义输出的格式。默认是 XML。Netscape 6 仅支持 "html" 和 "xml"。

    version

    string

    可选。设置输出格式的 W3C 版本号。(仅在 method="html" or method="xml" 时使用)。

    encoding

    string

    可选。设置输出中编码属性的值。

    omit-xml-declaration

    yes

    no

    可选。 "yes" 规定在输出中省略 XML 声明 (<?xml...?>)。 "no" 规定应在输出中包含 XML 声明。默认是 "no"。

    standalone

    yes

    no

    可选。规定 XSLT 处理器是否应输出独立文档声明;该值必须为 yes 或 no。默认是 "no"。Netscape 6 不支持该属性。

    doctype-public

    string

    可选。规定 DTD 中要使用的公共标识符。即输出中 DOCTYPE 声明的 PUBLIC 属性的值。

    doctype-system

    string

    可选。规定 DTD 中要使用的系统标识符。即输出中 DOCTYPE 声明的 SYSTEM 属性的值。

    cdata-section-elements

    namelist

    可选。一个空格分隔的元素列表,这些元素的文本内容应作为 CDATA 部分来输出。

    indent

    yes

    no

    可选。在输出结果树时是否要增加空白;该值必须为 yes 或 no。Netscape 6 不支持该属性。

    media-type

    string

    可选。定义输出的 MIME 类型(数据的媒体类型)。默认是 "text/xml"。Netscape 6 不支持该属性。

    19、<xsl:param> 元素用于声明局部或全局参数。

    注释:如果在模板内声明参数,就是局部参数,如果作为顶层元素来声明,就是全局参数

    属性

    描述

    name

    name

    必需。规定参数的名称。

    select

    expression

    可选。规定 XPath 表达式,该表达式是参数的默认值。

    20、<xsl:preserve-space> 元素用于定义保留空白的元素。

    <xsl:strip-space> 元素用于定义删除空白的元素。

    注释:保留空白是默认的设置,所以只有当使用 <xsl:strip-space> 元素使才有必要使用 <xsl:preserve-space> 元素。

    注释:<xsl:preserve-space> 元素和 <xsl:strip-space> 元素都是顶层元素(top-level element)。

    21、<xsl:processing-instruction> 元素可向输出写一条处理指令,即生成处理指令节点。

    name

    process-name

    必需。规定处理指令的名称。

    22、<xsl:sort> 元素用于对结果进行排序。

    注释:<xsl:sort> 总是位于 <xsl:for-each> 或 <xsl:apply-templates> 内部。

    select

    XPath-expression

    可选。规定节点的排序关键字,即根据哪个节点或节点集来排序。

    lang

    language-code

    可选。规定排序所用的语言。

    data-type

    text

    number

    qname

    可选。规定被排序的数据的数据类型。默认是 "text"。

    order

    ascending

    descending

    可选。规定排序顺序。默认是 "ascending"。

    case-order

    upper-first

    lower-first

    可选。规定是否首先按大写字母顺序进行排序。

    23、<xsl:stylesheet> 和 <xsl:transform> 元素是完全同义的元素。都被用来定义样式表的根元素。

    version

    version

    必需。规定样式表的 XSLT 版本。

    extension-element-prefixes

    list

    可选。扩展元素的命名空间前缀列表,用空格分隔。

    Netscape 6 不支持该属性。

    exclude-result-prefixes

    list

    可选。不应再输出中出现的命名空间前缀列表,用空格分隔。

    id

    name

    可选。样式表的唯一 id。

    Netscape 6 不支持该属性。

    24、<xsl:template> 元素包含了当匹配指定节点时要应用的规则。

    match 属性用于把模板关联到某个 XML 元素。match 属性也能用于为 XML 文档的全部分支定义模板(比如,match="/" 定义了整个文档)。

    注释:<xsl:template> 是顶层元素(top-level element)。

    name

    name

    可选。为模板定义名称。

    注释:如果省略该属性,则必须设置 match 属性。

    match

    pattern

    可选。模板的匹配模式。

    注释:如果省略该属性,则必须设置 name 属性。

    mode

    mode

    可选。为模板规定模式。

    priority

    number

    可选。模板的优先级编号。

    25、<xsl:text> 元素用于向输出写文本,即通过样式表生成文本节点。

    disable-output-escaping

    yes

    no

    可选。 默认值为 "no"。如果值为 "yes",通过实例化 <xsl:text> 元素生成的文本节点在输出时将不进行任何转义。 比如如果设置为 "yes",则 "<" 将不进行转换。如果设置为 "no",则被输出为 "&lt;"。 Netscape 6 不支持该属性。

    26、<xsl:stylesheet> 和 <xsl:transform> 元素是完全同义的元素。都被用来定义样式表的根元素。

    27、<xsl:value-of> 元素可提取选定节点的值。

    <xsl:value-of> 元素可用于选取某个 XML 元素的值,并把它输出。

    注释:select 属性(必选)的值是一个 XPath 表达式。

    select

    expression

    必需。XPath 表达式,规定了从哪个节点/属性来提取值。

    disable-output-escaping

    yes

    no

    默认值为 "no"。如果值为 "yes",通过实例化 <xsl:text> 元素生成的文本节点在输出时将不进行任何转义。 比如如果设置为 "yes",则 "<" 将不进行转换。如果设置为 "no",则被输出为 "&lt;"。

    28、<xsl:variable> 元素用于声明局部或全局的变量。

    注释:如果被声明为顶层元素,则该变量是全局的,而如果在模板内声明,则变量是本地的。

    注释:一旦您设置了变量的值,就无法改变或修改该值!

    提示:您可以通过 <xsl:variable> 元素的内容或通过 select 属性,向变量添加值!

    name

    name

    必需。规定变量的名称。

    select

    expression

    可选。定义变量的值。

    29、<xsl:with-param> 元素定义了传递给模板的参数的值。

    <xsl:with-param> 元素的 name 属性的值必须与 <xsl:param> 元素中的 name 相匹配,否则将忽略 <xsl:with-param> 元素,。<xsl:call-template> 和 <xsl:apply-templates> 中均允许使用 <xsl:with-param> 元素。

    name

    name

    必需。规定参数的名称。

    select

    expression

    可选。定义参数的值的 XPath 表达式。

    XQuery 1.0、XPath 2.0 以及 XSLT 2.0 共享相同的函数库。

    名称

    描述

    current()

    返回当前节点作为唯一成员的节点集。

    document()

    用于访问外部 XML 文档中的节点。

    element-available()

    检测 XSLT 处理器是否支持指定的元素。

    format-number()

    把数字转换为字符串。

    function-available()

    检测 XSLT 处理器是否支持指定的函数。

    generate-id()

    返回唯一标识指定节点的字符串值。

    key()

    检索以前使用 <xsl:key> 语句标记的元素。

    node-set

    将树转换为节点集。产生的节点集总是包含单个节点并且是树的根节点。

    system-property()

    返回系统属性的值。

    unparsed-entity-uri()

    返回未解析实体的 URI。

  • 相关阅读:
    HDU 1698 Just a Hook (区间更新+延迟标记)
    HDU 1754 I Hate It 线段树
    HDU 1847 Good Luck in CET-4 Everybody! (sg函数)
    博弈汇总
    Codeforces cf 713A Sonya and Queries
    hihoCoder 1082 : 然而沼跃鱼早就看穿了一切
    hihoCoder 1298 : 数论五·欧拉函数
    hdu 5821 Ball
    hdu 5818 Joint Stacks(栈的模拟)
    hdu 5802 Windows 10
  • 原文地址:https://www.cnblogs.com/selfimprove/p/4582612.html
Copyright © 2011-2022 走看看