XML--XSL
参考
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 > 27">
-- <xsl:value-of select="age"/>
</xsl:if>
<br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
结果
XML--XSL的更多相关文章
- XSLT可扩展样式表语言转换 System.Xml.Xsl、XslCompiledTransform类
XML文件 books.xml: <?xml version="1.0" encoding="utf-8" ?> <bookstore> ...
- JavaEE XML XSL转换(XSLT)
XSL转换(XSLT) @author ixenos 定义: XSL转换机制可以指定将XML文档转换为其他格式的规则,例如,txt纯文本.XHTML或其他任何XML格式. 用途: XSLT通常用来将某 ...
- C++builder XML XSL 代码生成
void __fastcall TFrmGenCode::XSLTxml1Click(TObject *Sender) { // XSLT转换xml文件格式 _di_IXMLDocument xml; ...
- IE 弹出"Unable to do xml/xsl" Processing
解决方法:
- XML通过XSL格式化的那点事(XML到自定义节点折叠显示)
引言 有时我们想看下系统生成的XML文件(如XML格式的Project文件),如果文件结构简单,我们浏览器看起来还比较方便,但是随着XML schema复杂后就变得让人头疼啦,单独写一个程序去做展现又 ...
- 使用XSL解析XML输出HTML(XSL学习笔记一)
最近项目用到 XSL + XML,XML大家应该很熟悉,XSL暂且不解释,先看效果,如果想学习XSL的内容,可以先访问: https://www.w3school.com.cn/xsl/xsl_lan ...
- C# XML技术总结之XDocument 和XmlDocument
引言 虽然现在Json在我们的数据交换中越来越成熟,但XML格式的数据还有很重要的地位. C#中对XML的处理也不断优化,那么我们如何选择XML的这几款处理类 XmlReader,XDocument ...
- C#执行XSL转换
xsl 可方便的将一种格式的xml,转换成另一种格式的xml,参考下面的代码: using System; using System.IO; using System.Text; using Syst ...
- XML 文档和数据
.NET Framework 4.5 其他版本 .NET Framework 提供了一组全面而集成的类,可用来方便地生成可以识别 XML 的应用程序. 通过以下命名空间中的类,可以分析和编写 XML, ...
- xml结构
一.XmlHelper using System; using System.Collections.Generic; using System.Linq; using System.Web; usi ...
随机推荐
- package报错
java类的第一行package 包路径 package报错 jdk版本不一致 或者jar包冲突
- Day6 - M - 动态逆序对 HYSBZ - 3295
对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删 除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数 I ...
- MongoDB首次启动常见问题
问题1. exception in initandlisten 29 data directory /data/db not found 问题:MongoDB默认存储路径为/data/db,这里显示没 ...
- 【LOJ6498】「雅礼集训 2018 Day2」农民
题面 solution 直接暴力模拟,原数据可获得满分的成绩. 对于每个点,其父亲对其都有一个限制.故我们只需要判断当前点到根的路径上的限制是否都能满足即可. 考虑用树剖+线段树维护这个限制.考虑到翻 ...
- c# GlobalAddAtom GlobalDeleteAtom
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- oracle,uuid为主键,插入时直接更新id
uuid为主键,插入时自动更新 -- Create table create table TECHNOLOGYCOMPANY ( ID VARCHAR2(32) default SYS_GUID() ...
- nodejs —— 流追加数据
在写入流的文档后添加 ,{ 'flags': 'a' } 即可 : var fs = require('fs') var readerStream ...
- CNN经典模型VGG
VGG是一个很经典的CNN模型,接触深度学习的人大概都有所耳闻.VGG在2014年被提出并拿来参加ImageNet挑战赛,最终实现了92.3%的正确率,得到了当年的亚军.虽然多年过去,又有很多新模型被 ...
- 八十六、SAP中ALV的事件查看
一.事务代码SE37,点击运行 二.再点击执行 三.我们可以看到有17个事件,点击17前面的表格图标 四.来到详细的事件中 五.我们回到SE37,点击显示 六.查看参数,为一个内表 七.我们点击SLI ...
- Docker PHP 例子
版权所有,未经许可,禁止转载 章节 Docker 介绍 Docker 和虚拟机的区别 Docker 安装 Docker Hub Docker 镜像(image) Docker 容器(container ...