XSLT学习笔记


1. 样式声明:
<xsl:stylesheet>或<xsl:transform>

 



2. XSLT常用元素:

2.1 <xsl:template>:创建模板
    Match属性的作用是使模板和XML元素相关联
    e.g.:<xsl:template match="\">......</xsl:template>

2.2 <xsl:value-of>:选取XML元素,并添加到已被转换的输出流中
    e.g.:<xsl:value-of select = "xpath"/>

2.3 <xsl:for-each>:循环
2.4 <xsl:sort>:对结果进行排序
    e.g.:<xsl:for-each select ="catalog/cd["article='Bob']">
            <xsl:sort select="article"/>
            .....
         </xsl:for-each>
   在我实际练习时,发现如果select属性中若要带参数,需要按照如下语法:<xsl:sort select="*[name()=$param1Name]" order="{$para2Name}"/>

2.5 <xsl:if>:相当于if-then
    <xsl:if test="price>10">
        ......
    </xsl:if>

2.6 <xsl:choose>:相当于if-then-else
    <xsl:choose>
       <xsl:when test="expression">
           ......
       </xsl:when>
       <xsl:otherwise>
           ......
       </xsl:otherwise>
    </xsl:choose>

 

3. XSLT常用函数
3.1 current():返回当前节点
    e.g.:<xsl:value-of select="current()"/>
    等效于:<xsl:value-of select="."/>

3.2 document():访问一个外部的XML文档的节点
    e.g.:<xsl:value-of select="document('other.xml')/root/xpath"/>
    实际应用中,貌似document后面的接的Xpath中不能带参数变量,例如这样会出现解析错误:"document('other.xml')/root/$paramName/ChildNode"

3.3 element-available():测试指定的元素是否能被XSLT处理器支持
    e.g.:<xsl:when test="element-available('xsl:comment')">
             判断是否支持注释
         </xsl:when>

3.4 format-number():数字转换为字符串
    e.g.:<value-of select="format-number(500,'#.00')"/>

3.5 function-available():测试是否支持该函数
    e.g.:<xsl:if test="function-availabel('current')">
             ......
         </xsl:if>

3.6 generate-id():返回自增独立唯一标识,类似于SQL中的identity(1,1)

3.7 key():使用由<xsl:key>指定的索引[index],从当前文档中返回一个节点组;
    e.g.: <xsl:for-each select="key('string','object')">
              ......
          </xsl:for-each>

3.8 system-property():返回通过name属性指定的系统属性值
    e.g.:<xsl:value-of select="system-property('xsl:version')"/>

3.9 unprased-entity-uri():返回未解析实体的URI.

 

4. JS传参数给XSLT:
JS中:

None.gifvar xml = new ActiveXObject("MSXML2.DOMDocument");
None.gifxml.load(
"filename.xml");
None.gifvar xsl 
= new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
None.gifxsl.load(
"filename.xsl");      
None.gifvar xslTemplate 
= new ActiveXObject("MSXML2.XSLTemplate");
None.gifxslTemplate.stylesheet 
= xsl;
None.gifvar xslProcessor 
= xslTemplate.createProcessor();   
None.gifxslProcessor.input 
= xml;
None.gifxslProcessor.addParameter(
"ParamName", paramValue);
None.gifxslProcessor.transform();

XSLT中:
<param name="ParamName"></param>
用$ParamName取得参数的值   

转载于:https://www.cnblogs.com/happyhippy/archive/2007/07/25/831576.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

职场:人生从没有最佳时机!一个离职客服人员的领悟

每个人都有感到失落迷惘的时候。 人生用专制又霸道的方式运行着&#xff0c;每当我们心想一切尘埃落定、生活稳固的时候&#xff0c;生活总爱给我们惊喜&#xff0c;粉碎我们短暂的安逸&#xff0c;让我们不得不重新思考。 「我走对路了吗?」 「我能够赚更多钱、爬到更高的地位…

VS Code 的常用快捷键

VS Code 的常用快捷键和插件 一、vs code 的常用快捷键 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1、注释&#xff1a; a) 单行注释&#xff1a;[ctrlk,ctrlc] 或 ctrl/ b) 取消…

vue-axios interceptors

import axios from axios import cookie from js-cookie const options {baseURL: window.location.protocol process.env.BASE_API,headers: {},timeout: 20000 } const fetch axios.create(options)// request拦截器 fetch.interceptors.request.use(config > {if (coo…

数据结构排序法之鸡尾酒排序法he快速排序法

鸡尾酒排序&#xff0c;也叫定向冒泡排序&#xff0c;是冒泡排序的一种改进。此算法与冒泡排序的不同处在于从低到高然后从高到低&#xff0c;而冒泡排序则仅从低到高去比较序列里的每个元素。他可以得到比冒泡排序稍微好一点的效能。 // 两两互换 void swap (int* a, int i, …

VSCode 多开、环境对比

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 多开&#xff1a; 第一种&#xff1a;win10的开始菜单&#xff0c;在vscode图标右键选择“新开窗口”&#xff0c;这样就多了一个vscode…

前言_工作两年自我感触

17年大学毕业&#xff0c;到今天整整工作两年&#xff0c;从前端到数据分析&#xff0c;从上家公司&#xff08;简称A&#xff09;到现公司&#xff0c;想趁着今天是参加工作两年的纪念日&#xff0c;回忆过往&#xff0c;结合现状有感而发。 刚毕业的时候&#xff0c;啥都学&a…

数据结构排序法之堆排序he归并排序

堆排序&#xff08;Heapsort&#xff09;是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构&#xff0c;并同时满足堆性质&#xff1a;即子结点的键值或索引总是小于&#xff08;或者大于&#xff09;它的父节点。 堆排序的时间&#xff0c;主要由建…

超详细设置 Idea 类注释模板和方法注释模板

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 网上找了一下&#xff0c;没有很详细且正确介绍Idea配置注释模板的&#xff0c;于是结合多篇文章自己琢磨整理出如下。 设置类注释模板…

手动创建两个文本文件text1.txt和text2.txt,按要求创建text3.txt

实现在text1.txt和text2.txt文件中除去首行和末尾对应的数据&#xff0c;要求三个文本内容如下&#xff1a; text1 text2 text3begin begin begin10 11 12 15 16 17 …

感情

团结 共患难的感情转载于:https://www.cnblogs.com/yyjh/p/11139749.html

谁抢走了中国男人的老婆?

“老夫少妻”、“包二奶”、“洋媳妇”、“单身贵族”、“丁克家庭”都是当今最时髦的词汇。这看似“你情我愿”的现象背后竟隐藏着巨大隐患! 目前中国男女比例是119&#xff1a;100&#xff0c;某些地区已达130&#xff1a;100;中国将有5百万以上光棍&#xff0c;这对中国社会…

latex 幻灯片演示模板

http://zzg34b.w3.c361.com/templet/slide.htm转载于:https://www.cnblogs.com/binterminator/articles/1621647.html

Linux 文件系统编程之系统调用和标准I/O库

系统调用 访问设备驱动程序的底层函数主要有&#xff1a; open:打开文件或者设备。 read:从打开的文件或者设备里面读取数据。 write:向文件或者设备写数据。 close:关闭文件或者设备。 open系统调用&#xff1a; #include <fcntl.h> #include <sys/types.h> #in…

mysql 索引:类型 、创建

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一个简单的对比测试 以我去年测试的数据作为一个简单示例&#xff0c;20多条数据源随机生成200万条数据&#xff0c;平均每条数据源都重…

水调歌头·中秋

转载于:https://www.cnblogs.com/divineka/archive/2004/09/04/39560.html

代码面试最常用的10大算法

摘要&#xff1a;面试也是一门学问&#xff0c;在面试之前做好充分的准备则是成功的必须条件&#xff0c;而程序员在代码面试时&#xff0c;常会遇到编写算法的相关问题&#xff0c;比如排序、二叉树遍历等等。 在程序员的职业生涯中&#xff0c;算法亦算是一门基础课程&#…

fork与vfork的区别

fork与vfork的区别 1.vfork保证子进程先运行&#xff0c;在它调用exec或exit之后父进程才可能被调度运行。如果在调用这两个函数之前子进程依赖于父进程的进一步动作&#xff0c;则会导致死锁。 2.fork要拷贝父进程的进程环境&#xff1b;而vfork则不需要完全拷贝父进程的进程…

IDEA 2018 集成 MyBatis Generator 插件 详解、代码生成

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1、修改maven的pom文件 只需要将如下依赖添加到pom.xml文件中即可。&#xff08;注意此处是以plugin的方式&#xff0c;放在<plugins…

MongoDB监控及报警

转载请注明出处&#xff1a;https://www.cnblogs.com/shining5/p/11142357.html MongoDB监控及报警 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库&#xff0c;其使用go语言开发。基本原理是通过HTTP协议周期性抓取被监控组件的状态&#xff0c;任意组件只要提…

umask命令:设置文件的默认权限掩码

今天接触到了掩码&#xff0c;从博客上总结了一些关于掩码解释比较全面的分析&#xff0c;和大家分享下。 文件权限是linux系统中的一种安全机制&#xff0c;通过设置不同的权限&#xff0c;可以达到限制用户操作的目的&#xff0c;有效地保证了文件的完整性。 默认的情况下&…