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中:

var xml  =   new  ActiveXObject( " MSXML2.DOMDocument " );
xml.load(
" filename.xml " );
var xsl 
=   new  ActiveXObject( " MSXML2.FreeThreadedDOMDocument " );
xsl.load(
" filename.xsl " );      
var xslTemplate 
=   new  ActiveXObject( " MSXML2.XSLTemplate " );
xslTemplate.stylesheet 
=  xsl;
var xslProcessor 
=  xslTemplate.createProcessor();   
xslProcessor.input 
=  xml;
xslProcessor.addParameter(
" ParamName " , paramValue);
xslProcessor.transform();

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


本文转自Silent Void博客园博客,原文链接:http://www.cnblogs.com/happyhippy/archive/2007/07/25/831576.html,如需转载请自行联系原作者

相关文章
|
JSON Java API
玩转Spring Boot之RestTemplate的使用
在java代码里想要进行restful web client服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。Spring Boot提供了一种简单便捷的内置模板类来进行操作,这就是RestTemplate。
5883 0
|
10月前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
Java 数据库
JUC工具类: Semaphore详解
信号量Semaphore是并发编程中的一种高级同步机制,它可以在复杂的资源共享场景中发挥重要作用。理解它的工作原理及正确的使用方法对实现高效且健壮的并发控制至关重要。
118 1
|
前端开发 API
vue3中Pinia的使用之actions
vue3中Pinia的使用之actions
|
测试技术 Linux Docker
【好玩的开源项目】Docker部署cook菜谱工具
【7月更文挑战第19天】Docker部署cook菜谱工具
249 1
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的马拉松报名系统微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的马拉松报名系统微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
190 1
|
存储 安全
【数据结构】顺序表(SeqList)(增、删、查、改)详解
【数据结构】顺序表(SeqList)(增、删、查、改)详解
|
移动开发 小程序 JavaScript
微信小程序学习实录5(H5嵌入小程序、map组件、地图调起功能、腾讯百度高德导航页、返回web-view页)
微信小程序学习实录5(H5嵌入小程序、map组件、地图调起功能、腾讯百度高德导航页、返回web-view页)
1062 0
|
存储 缓存 Unix
NPM 常用命令(二)
NPM 常用命令(二)
|
机器学习/深度学习 资源调度
区间预测 | MATLAB实现QRBiLSTM双向长短期记忆神经网络分位数回归时间序列区间预测
区间预测 | MATLAB实现QRBiLSTM双向长短期记忆神经网络分位数回归时间序列区间预测