学习笔记——XSL简介及入门

原创 2012年03月27日 23:46:12

Extensible Stylescheet Language(XSL,可扩展样式单语言)

XSL本身也是一份XML文档。

 

作用:将一份XML文档转换成一份结构化文档(通常是HTML,当然也可以是XML)。

 

XSL的组成:

1:XSLT:XSL Transformation(XSLT),用于描述如何转换XML文档。

2:XPath:XSL使用XPath来识别、选择和匹配XML文档中的各种组件。

3:XSL-FO:Formatted Object在文档转换完成之后,可使用XSL-FO来解释结果树、格式化转换得到的文档。主要用于将XML转换成PDF。

 

XSLT入门

 
http://www.w3.org/1999/XSL/Transform是XSLT的命名空间URL

 

 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


 

XSLT支持两个根元素,其效果和用法是完全一样的。

<xsl:stylesheet
  id = id
  extension-element-prefixes = tokens
  exclude-result-prefixes = tokens
  version = number>
  <!-- Content: (xsl:import*, top-level-elements) -->
</xsl:stylesheet>

 

<xsl:transform
  id = id
  extension-element-prefixes = tokens
  exclude-result-prefixes = tokens
  version = number>
  <!-- Content: (xsl:import*, top-level-elements) -->
</xsl:transform>

 

根元素可包含的子元素:

  • xsl:import

  • xsl:include

  • xsl:strip-space

  • xsl:preserve-space

  • xsl:output

  • xsl:key

  • xsl:decimal-format

  • xsl:namespace-alias

  • xsl:attribute-set

  • xsl:variable

  • xsl:param

  • xsl:template

 

XSLT处理器会将XML文档当成一颗结构化的树进行处理,XSLT的根节点问XML文档本身。

 

包含另一份XSLT

<!-- Category: top-level-element -->
<xsl:include
  href = uri-reference />

 

注意事项:

1:<include../>元素之前只能出现<import.../>元素;

2:包含的样式单必须完整;

3:如果原样式单与包含的样式单发生冲突,将导致XSLT文档出错。

 

解决模板冲突的方法:使用<template.../>元素的prioprity属性,定义优先级别,默认优先级在-0.5到0.5之间。

 

导入另一份XSLT

<xsl:import
  href = uri-reference />

 

注意事项:

1:原样式单里的模板优先级比导入的样式单高。

2:后导入的样式单里的模板优先级比先导入的高。

 

<!-- Category: instruction -->
<xsl:apply-imports />

<apply-imports.../>用于调用被覆盖的模板规则。

 

示例:

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:import href="article.xsl"/>
  <xsl:import href="bigfont.xsl"/>
  <xsl:attribute-set name="note-style">
    <xsl:attribute name="font-style">italic</xsl:attribute>
  </xsl:attribute-set>
</xsl:stylesheet>


 

 

 

XSLT模板规则

<!-- Category: top-level-element -->
<xsl:template
  match = pattern
  name = qname
  priority = number
  mode = qname>
  <!-- Content: (xsl:param*, template) -->
</xsl:template>

 

XSLT通常是由多个模板组成,并由<template.../>元素定义。

<template.../>作用:定义一个模板替换XML中指定元素。

 

<template.../>使用:

1:使用match属性指定对对哪些XML节点转换。

2:转换<template.../>元素内的内容。

3:可选用mode属性来区分多个模板。

 

<apply-templates.../>用于处理子节点

作用:在<template.../>元素内,通知XSLT使用模板转换子节点。

可选属性:

select:指定一个XPath表达式,处理XPath表达式所代表的节点。若未指定,则依次处理当前节点集内的每个子节点。

mode:用于区分多个模板

 

XSLT的内置模板规则

1:匹配所有的元素节点和根节点,并处理它们:

<xsl:template match="*|/">
	<xsl:apply-templates/>
</xsl:template

 

2:匹配所有的元素节点和根节点,同时指定模式(m是一个通配符),并处理它们:

<xsl:template match="*|/" mode="m">
	<xsl:apply-templates/ mode="m">
</xsl:template

 

3:匹配所有的文本节点和属性,并直接输出它们:

<xsl:template match="text()|@*">
	<xsl:value-of select="."/>
</xsl:template

 

4:匹配所有处理指令和注释:

<xsl:template match="processing-instruction()|comment()"/>


 

 

Values of Variables and Parameter

 

<!-- Category: instruction -->
<xsl:value-of
  select = string-expression
  disable-output-escaping = "yes" | "no" />

 

<value-of.../>用于输出XML节点的内容,

其支持的属性:

select:必需属性,指定一个XPath表达式,输出表达式内容对应的字符串;

disable-output-escaping:可选属性,用于是否禁用转义。

 

使用注意事项:

1:当<value-of.../>转换包含子节点元素的节点时,采用深度优先法则。

2:输出属性、注释、处理指令时,直接输出其内容。

 

示例:

 

name.xml

<?xml version="1.0" encoding="GBK"?>
<?xml-stylesheet type="text/xsl" href="name.xslt"?>
<name>
	<first>bruce</first>
	<last>zhang</last>
</name>

 

name.xslt

<?xml version="1.0" encoding="GBK"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<!-- 匹配跟节点的模板 -->
	<xsl:template match="/">
		<html>
			<head>
				<title>MyName</title>
			</head>
			<body>
				<h3>My Name</h3>
				<xsl:apply-templates/>
				<hr/>
				<xsl:apply-templates mode="other"/>
			</body>
		</html>
	</xsl:template>

	<!-- 定义匹配name节点的模板 -->
	<xsl:template match="name">
		<ul>
			<li>first:<xsl:value-of select="first"/></li>
			<li>last:<xsl:value-of select="last"/></li>
		</ul>
	</xs:template>

	<xsl:template math="name" mode="other">
		<table style="border:3px solid #666666; background-color:#999999;">
			<tbody>
				<tr>
					<th>first:</th>
					<td><xsl:value-of select="first"/></td>
				</tr>
				<tr>
					<th>last:</th>
					<td><xsl:value-of select="last"/></td>
				</tr>
			</tbody>	
		</table>
	</xsl:template>
</xsl:stylesheet>










                

xsl与xml转换示例

java xml,xsl,html文件转换   java文件代码: package com.test; import java.io.ByteArrayInputStream; imp...
  • lvyuan30276
  • lvyuan30276
  • 2016年01月05日 23:41
  • 2513

XML文件与xsl文件的作用与关系

XML文件的发明可以说是计算机领域的一大进步,有着说不清的好处,比如格式规范,跨平台等。XML文件的主要作用是数据的载体,用于承载数据。跟XML相关的格式文件还有一大堆,这里我们慢慢来说清楚。   ...
  • sundacheng1989
  • sundacheng1989
  • 2016年08月09日 14:01
  • 4451

XSL和XSLT

XSL的作用:将XML转换成HTML 例子说明一切:下面是XML文档的一部分: Empire Burlesque Bob Dylan USA Columbia 10.90 ...
  • freellf
  • freellf
  • 2017年02月26日 21:05
  • 601

XSL语言

一 、 概念 XSL(eXtensible Stylesheet Language),即可扩展样式表语言,是一套转换xml的标准。   xsl由两部分组成:一、转化xml的文档(XSLT);...
  • am_Sun
  • am_Sun
  • 2017年08月02日 11:04
  • 178

深度学习入门介绍系列1

深度学习概述 深度: 从输入产生一个输出的计算,可以被一个有向图来表达:一个有向图是一个表达计算的图,每个节点表达一个计算元素和一个值(计算结果,就是根据该节点的孩子节点的值计算的)。每一个节点和...
  • rodneyzhaonet
  • rodneyzhaonet
  • 2014年12月13日 12:10
  • 1758

XSL学习笔记(二)

  第一部分学了7个元素,还有24个,一个一个学吧。  1、、、元素  与相比,两者都须是的子结点,但前者定义的模板规则优先级比较低,且必须为第一个子结点。两者的功能是相同的,都是将另一个定义好的XS...
  • Borenbao
  • Borenbao
  • 2006年04月14日 09:25
  • 1687

XSL模板

1. 定义模板 (1) 什么是模板? 模板是XSL中一个非常重要的概念。   可以这么认为,XSL样式表是由一个一个的模板组成的。每个XSL样式表至少要包含一个模板。   模板的作用:指定...
  • qq_35204154
  • qq_35204154
  • 2017年03月28日 22:50
  • 573

采用XML+XSL样式表制作报表

采用XML+XSL样式表制作报表 一、问题的产生:在项目中,需要对一些交易和业务查询结果制作报表,最初的方法是制作了专门的打印报表类来专门制作报表,但问题是报表的设计需要使用画图技术来制作表格,而画图...
  • isadream
  • isadream
  • 2007年12月10日 09:45
  • 3228

springmvc学习笔记(1)-框架原理和入门配置

本文主要介绍springmvc的框架原理,并通过一个入门程序展示环境搭建,配置以及部署调试。...
  • h3243212
  • h3243212
  • 2016年03月08日 16:20
  • 8364

Spark修炼之道系列教程预告

课程内容 Spark修炼之道(基础篇)——Linux基础(12讲)大纲 Spark修炼之道(进阶篇)——Spark入门到精通(30讲)大纲 Spark修炼之道(实战篇)——Spark应用开发实战篇...
  • lovehuangjiaju
  • lovehuangjiaju
  • 2015年08月24日 09:56
  • 9566
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记——XSL简介及入门
举报原因:
原因补充:

(最多只允许输入30个字)