参考

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. package报错

    java类的第一行package 包路径 package报错 jdk版本不一致 或者jar包冲突

  2. Day6 - M - 动态逆序对 HYSBZ - 3295

    对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删 除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数 I ...

  3. MongoDB首次启动常见问题

    问题1. exception in initandlisten 29 data directory /data/db not found 问题:MongoDB默认存储路径为/data/db,这里显示没 ...

  4. 【LOJ6498】「雅礼集训 2018 Day2」农民

    题面 solution 直接暴力模拟,原数据可获得满分的成绩. 对于每个点,其父亲对其都有一个限制.故我们只需要判断当前点到根的路径上的限制是否都能满足即可. 考虑用树剖+线段树维护这个限制.考虑到翻 ...

  5. c# GlobalAddAtom GlobalDeleteAtom

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  6. oracle,uuid为主键,插入时直接更新id

    uuid为主键,插入时自动更新 -- Create table create table TECHNOLOGYCOMPANY ( ID VARCHAR2(32) default SYS_GUID() ...

  7. nodejs —— 流追加数据

                        在写入流的文档后添加   ,{ 'flags': 'a' }   即可  :   var fs = require('fs') var readerStream ...

  8. CNN经典模型VGG

    VGG是一个很经典的CNN模型,接触深度学习的人大概都有所耳闻.VGG在2014年被提出并拿来参加ImageNet挑战赛,最终实现了92.3%的正确率,得到了当年的亚军.虽然多年过去,又有很多新模型被 ...

  9. 八十六、SAP中ALV的事件查看

    一.事务代码SE37,点击运行 二.再点击执行 三.我们可以看到有17个事件,点击17前面的表格图标 四.来到详细的事件中 五.我们回到SE37,点击显示 六.查看参数,为一个内表 七.我们点击SLI ...

  10. Docker PHP 例子

    版权所有,未经许可,禁止转载 章节 Docker 介绍 Docker 和虚拟机的区别 Docker 安装 Docker Hub Docker 镜像(image) Docker 容器(container ...