参考

http://blog.51cto.com/cnn237111/1345998

https://www.w3.org/TR/2017/REC-xslt-30-20170608/

声明

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

根据 W3C 的 XSLT 标准,声明 XSL 样式表的正确方法是:

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

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

   <xsl:template match="???">

  match 属性用于关联 XML 元素和模板.match 属性也可用来为整个文档定义模板.match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档).

<xsl:value-of>

<xsl:value-of> 元素用于提取某个选定节点的值,并把值添加到转换的输出流中.

   <xsl:value-of select="???"/>

  select 属性的值是一个 XPath 表达式.

<xsl:for-each>

<xsl:for-each> 元素可用于选取指定的节点集中的每个 XML 元素.

   <xsl:for-each select="???">...</xsl:for-each>

  select 属性的值是一个 XPath 表达式.

<xsl:sort>

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

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

   <xsl:sort select="???"/>

  select 属性指示需要排序的 XML 元素.

<xsl:if>

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

   <xsl:if test="expression">...如果条件成立则输出...</xsl:if>

  必选的 test 属性的值包含了需要求值的表达式.

<xsl:choose>

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

   <xsl:choose>

     <xsl:when test="expression">... 输出...</xsl:when>   

     <xsl:otherwise>... 输出....</xsl:otherwise>

   </xsl:choose>

<xsl:apply-templates>

http://blog.51cto.com/cnn237111/1345998

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

<xsl:apply-templates/>总是包含在<xsl:template />中,当转换软件遇到这个语句时,就会对 <xsl:apply-templates/>所匹配的元素进行转换(所匹配的元素由select属性设置,该值是一个XPath中的路径表达式,并且和<xsl:template />中的match相关)。

<xsl:apply-templates/>在对元素应用模板的时候,会去文档中查看是否存在一个对应的模板(即该模板定义了如何转换 <xsl:apply-templates/>匹配的元素)。所谓处理转换,实际上就是把XML文档中的值,代入模板,并输出代入后的模板内容,类似变量赋值。

Demo

employee.xml

 <?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="employee.xsl"?>
<employees>
<employee sn="E-200402100001">
<name>zhangsan</name>
<age>25</age>
<monthly_pay mode="cash">
1200.00
</monthly_pay>
<country>
<en>CHN</en>
<chinese>ZhongGuo</chinese>
</country>
</employee>
<employee sn="E-200402100006">
<name>lisi</name>
<age>28</age>
<monthly_pay mode="cash">
1600.00
</monthly_pay>
<country>
<en>CHN</en>
<chinese>ZhongGuo</chinese>
</country>
</employee>
<employee sn="E-200503220001">
<name>wangwu</name>
<age>30</age>
<monthly_pay mode="credit_card">
3500.00
</monthly_pay>
<country>
<en>CHN</en>
<chinese>ZhongGuo</chinese>
</country>
</employee>
</employees>

employee.xsl

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>employees info</title>
</head>
<body>
<xsl:apply-templates select="//employee"/>
</body>
</html>
</xsl:template>
<xsl:template match="employee">
<xsl:for-each select=".">
<xsl:value-of select="name"/>
<xsl:if test="age &gt; 27">
-- <xsl:value-of select="age"/>
</xsl:if>
<br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

结果

XML--XSL的更多相关文章

  1. XSLT可扩展样式表语言转换 System.Xml.Xsl、XslCompiledTransform类

    XML文件 books.xml: <?xml version="1.0" encoding="utf-8" ?> <bookstore> ...

  2. JavaEE XML XSL转换(XSLT)

    XSL转换(XSLT) @author ixenos 定义: XSL转换机制可以指定将XML文档转换为其他格式的规则,例如,txt纯文本.XHTML或其他任何XML格式. 用途: XSLT通常用来将某 ...

  3. C++builder XML XSL 代码生成

    void __fastcall TFrmGenCode::XSLTxml1Click(TObject *Sender) { // XSLT转换xml文件格式 _di_IXMLDocument xml; ...

  4. IE 弹出"Unable to do xml/xsl" Processing

    解决方法:

  5. XML通过XSL格式化的那点事(XML到自定义节点折叠显示)

    引言 有时我们想看下系统生成的XML文件(如XML格式的Project文件),如果文件结构简单,我们浏览器看起来还比较方便,但是随着XML schema复杂后就变得让人头疼啦,单独写一个程序去做展现又 ...

  6. 使用XSL解析XML输出HTML(XSL学习笔记一)

    最近项目用到 XSL + XML,XML大家应该很熟悉,XSL暂且不解释,先看效果,如果想学习XSL的内容,可以先访问: https://www.w3school.com.cn/xsl/xsl_lan ...

  7. C# XML技术总结之XDocument 和XmlDocument

    引言 虽然现在Json在我们的数据交换中越来越成熟,但XML格式的数据还有很重要的地位. C#中对XML的处理也不断优化,那么我们如何选择XML的这几款处理类 XmlReader,XDocument ...

  8. C#执行XSL转换

    xsl 可方便的将一种格式的xml,转换成另一种格式的xml,参考下面的代码: using System; using System.IO; using System.Text; using Syst ...

  9. XML 文档和数据

    .NET Framework 4.5 其他版本 .NET Framework 提供了一组全面而集成的类,可用来方便地生成可以识别 XML 的应用程序. 通过以下命名空间中的类,可以分析和编写 XML, ...

  10. xml结构

    一.XmlHelper using System; using System.Collections.Generic; using System.Linq; using System.Web; usi ...

随机推荐

  1. 洛谷P4427 [BJOI2018]求和

    \(\Large\textbf{Description: } \large{一颗n个节点的树,m次询问,每次查询点i到点j的路径上所有节点点深度的k次方的和并对998244353取模(1\leq n, ...

  2. JS写一个漂亮的音乐播放器

    先放上效果图: 正如图中所展示的播放器那样,我们用HTML+CSS+JS将这个效果实现出来. HTML页面布局 <div class="music"> <div ...

  3. uboot如何启动内核

    2.7.1.uboot和内核到底是什么 2.7.1.1.uboot是一个裸机程序 (1)uboot的本质就是一个复杂点的裸机程序.和我们在ARM裸机全集中学习的每一个裸机程序并没有本质区别. 2.7. ...

  4. 056、Java中continue的用法

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  5. python --- unittest如何传cookies

    1. #将CookieJar转为字典: cookies = requests.utils.dict_from_cookiejar(r.cookies) #将字典转为CookieJar: cookies ...

  6. springboot#interceptor

    _ 拦截器相对与过滤器Filter 而言,拦截器是spring中的概念.过滤器是servlet中的概念.在spring中肯定是优先使用拦截器Interceptor的. public class My1 ...

  7. Mysql 存储过程造测试数据

    1.Mysql 存储过程造测试数据 -- 创建一个用户表 CREATE TABLE `sys_user` ( -- `id` CHAR (32) NOT NULL DEFAULT '' COMMENT ...

  8. 159-PHP strstr函数,取最后几个字符和除去最后几个字符

    <?php $str='programming'; //定义一个字符串 $res=substr($str,-4); //处理字符串 echo "返回{$str}字符串的最后4个字符{$ ...

  9. 干货分享:学术Essay写作流程及写作技巧详解

    Academic essay是指留学生作业中的一种,其范围非常广泛,可以是任何一种话题.而学术essay主要是指其中比较正式的.客观的话题,有明确的研究目的与研究对象.例如“Research on t ...

  10. 摩尔纹滤镜moir

    function moir(imgData) { var width = imgData.width, height = imgData.height, pixelData = imgData.dat ...