zoukankan      html  css  js  c++  java
  • xsl教程学习笔记

    一 . Hello world 尝试:

    Hello.xml:

    <?xml version="1.0" encoding="UTF-8"?>
        <?xml-stylesheet type="text/xsl" href="test.xsl"?>
    <FistNode>
    Hello,World
    </FistNode>

    test.xsl:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
        <xsl:template match="/">
            <html>
               <head>
                   <title>First node</title>
               </head>
               <body>
                   <p>
                      <xsl:value-of select="/FistNode"/>
                   </p>
               </body>
            </html>
        </xsl:template>
    </xsl:stylesheet>

    运行结果:

    Hello,World

    二 . XSLT元素列表

    元素名 含义
    xsl:apply-imports 调用重新模板规则
    xsl:apply-template 指示XSLT处理器根据每个选定节点的类型和上下文 找到合适的模板
    xsl:attribute 创建一个属性节点并将其附加到输出元素上
    xsl:attribute-set 定义命名的属性集
    xsl:call-template 按名称调用模板
    xsl:choose 提供多个与<xsl:otherwise> 元素 和 <xsl:when> 元素有关的条件测试
    xsl:comment 在输出中生成注释
    xsl:copy 将当前节点从源复制到输出
    xsl:copy-of 将子树和结果树片段插入结果树
    xsl:decimal-fomat 声明一个小数格式,用于控制formate-number 函数所使用的格式模式解释
    xsl:element 在输出中创建指定名称的元素
    xsl:fallback 调用可以 为遇到的新的元素的行为 提供合适的替代行为的 模板
    xsl:for-each 重复应用模板,对接点集中的每个节点应用模板
    xsl:if 允许简单条件模板片段
    xsl:import 导入另外一个xslt文件
    xsl:include 包含另一个xsl文件
    xsl:key 声明一个命名的键,用于XPath表达式中的Key()函数
    xsl:message 将文本消息发送到消息缓冲区或者对话框
    xsl:namespace-alias 使用其他前缀替换 与给定命名空间关联的前缀
    xsl:number 将和格式化的数字插入结果树
    xsl:otherwise 提供多个与<xsl:choose>元素和<xsl:when>元素有关的条件测试
    xsl:ouput 指定在序列化结果树时使用的选项
    xsl:param 声明一个命名参数,在<xsl:stylesheet>元素或者<xsl:template>元素中使用.允许制定默认值
    xsl:preserve-space 文档中保留空白
    xsl:sort 指定<xsl:for-each>或者<xsl:apply-template>所选节点列表的排序条件
    xsl:stylesheet 指定xslt文件的文档元素.文档元素包含其他XSLT元素
    xsl:template 定义一个可以再次使用的模板,用于为特定类型和上下文的节点生成所需要的输出
    xsl:text 在输出中生成文本
    xsl:transform 执行与<xsl:stylesheet>相同的功能
    xsl:value-of 将选定节点的值作为文本插入
    xsl:variable 指定表达式中绑定的值
    xsl:when 提供多个与<xsl:choose>元素和<xsl:otherwise>有关的测试条件
    xsl:with-param 将参数传递给模板
    xsl:strip-space 从文档中删除空白

    三 xsl:template 和 xsl:apply-template

    模板有2部分构成:匹配模式 和 执行.

    匹配模式 指定了采用哪个模板 xsl:template

    执行 指定了如何输出 xsl:apply-template

    1.xsl:template语法

    <xsl:template natch=pattern name=qname priority=number mode=qname>
    <!—执行内容à
    </xsl:template>

    name:唯一的名称,便于引用

    match:原节点模式 与name 必有其一  

    priority :-9-9的数字

    mode :允许多次处理某个元素, 每次产生不同的结果. 有match就不可以有mode. 

    eg: test.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <company>
        <department>
            <name language="Chinese">Tech Department</name>
            <leader>Zhang San</leader>
            <quantity>20</quantity>
            <target>software develop</target>
        </department>
        <department>
            <name language="Chinese">Sale Department</name>
            <leader>Li Si</leader>
            <quantity>20</quantity>
            <target>Sale work</target>
        </department>
    </company>

    (1)匹配所有的部门

    <xsl:template match=”department”></xsl:template>

    (2)匹配所有的领导和所有的人数元素

    <xsl:template match=”leader|quantity”></xsl:template>

    (3)匹配所有父节点为 部门的 领导元素

    <xsl:template match=”department//leader”></xsl:template>

    (4)匹配根节点

    <xsl:template match=”/”></xsl:template>

    2.xsl:apply-templates

    语法:

    <xsl:apply-templates select=node set-expression mode=qname></xsl:apply-templates>

    用来 表示 哪个节点被模板具体处理.可以理解为 调用子函数 select用来选择确切的节点名字. xsl:apply-templates 总是在 xsl: template中

    (1)模板匹配整个文档(根节点), 具体执行时 处理根节点下的所有部门元素.

    <xsl:template match=”/”>
        <xsl:apply-template select=”department”/>
    </xsl:template>

    (2)模板匹配 部门 节点. 具体执行时 部门下所有的子元素都将被处理

    <xsl:template match=”para”>
        <p><xsl:apply-template /></p>
    </xsl:template>

    四 xsl:value-of

    用来将 文档中的元素 文本 写入到 输出文档中.

    1.提取出部门中每个领导人的名字

    <xsl:template match=”department”>
        < xsl:value-of select=”leader”/>
    </xsl:template>
  • 相关阅读:
    Android 经典文章
    Android 性能优化概念(1)
    spring mvc 多线程并发
    Java 线程并发
    Android MVC理解(1)
    写给25岁的你和25岁自己
    Android github 优秀项目
    Spring MVC
    Android View, Window,Activity概念区分(2)
    Android 屏幕相关概念(1)
  • 原文地址:https://www.cnblogs.com/jiangshuai52511/p/8358227.html
Copyright © 2011-2022 走看看