使用XSL转换XML文档

合集下载

XML实用技术教程 第17讲(XSLT转换)

XML实用技术教程 第17讲(XSLT转换)

2006。 2006。3
计算机与电子系— 计算机与电子系—计算机技术教研室
XSLT转换机理 XSLT转换机理
XSLT将模式与模板相结合来实现转换 XSLT将模式与模板相结合来实现转换
样式表转换
XML FO
样式单树 (模板 模板) 模板 源文档 源树 指令执行
XML
XSL引擎 引擎
FO
结果树
XML
Non XML
2006。 2006。3
计算机与电子系— 计算机与电子系—计算机技术教研室
什么是模式
模式就是所规定节点处理的条件集合 满足条件的节点匹配该模式,不满足则不匹配 最普通的模式规定匹配元素类型的名称。
模式 doc * chapter|section section/title text() Node() 含义 配任何的doc元素 配任何的doc元素 匹配任何元素 匹配任何的chapter元素和section元素 匹配任何的chapter元素和section元素 匹配上一代元素为section的title元素 匹配上一代元素为section的title元素 匹配任何文本节点 匹配任何非属性节点和非根节点
2006。 2006。3 计算机与电子系— 计算机与电子系—计算机技术教研室
para、note元素所匹配的模板 para、note元素所匹配的模板
<xsl:template match="para"> <p><xsl:apply<p><xsl:apply-templates/></p> </xsl:template> <xsl:template match="note"> <p class="note"><b>NOTE:</b><xsl:applyclass="note"><b>NOTE:</b><xsl:applytemplates/></p> </xsl:template> <xsl:template match="emph"> <em><xsl:apply<em><xsl:apply-templates/></em> </xsl:template> </xsl:stylesheet>

XSLT教程

XSLT教程

XSLT教程XML文档树ancestor::The ancestors of the context node.The ancestors of the context node consist of the parent of the contextnode and the parent's parent and so on; thus the ancestor::axis alwaysincludes the root node unless the context node is the root node. ancestor-or-self::The context node and its ancestors.The ancestor-or-self:: axis always includes the root node. attribute::The attributes of the context node.This axis will be empty unless the context node is an element.child::The children of the context node.A child is any node immediately below the context node in the tree.However, neither attribute or namespace nodes are considered childrenof the context node.descendant::The descendants of the context node.A descendant is a child or a child of a child and so on; thus thedescendant:: axis never contains attribute or namespace nodes.descendant-or-self::The context node and its descendants.following::All nodes that are after the context node in the tree,excluding any descendants, attribute nodes, andnamespace nodes.following-sibling::All the following siblings of the context node.The following-sibling:: axis identifies just those children of aparent node who appear in the tree after the context node. This axisexcludes all other children that appear before the context node.If the context node is an attribute node or namespace node, thefollowing-sibling:: axis is empty.namespace::The namespace nodes of the context node.There is a namespace node for every namespace which is in scope forthe context node.This axis will be empty unless the context node is an element. parent::The parent of the context node, if there is one.The parent is the node immediately above the context node in the tree. preceding::All nodes that are before the context node in the tree,excluding any ancestors, attribute nodes, andnamespace nodes.One way to think of the preceding axis is all nodes whose contentoccurs in their entirety before the start of the context node. preceding-sibling::All the preceding siblings of the context node.The preceding-sibling:: axis identifies just those children of aparent node who appear in the tree before the context node. This axisexcludes all other children that appear after the context node.If the context node is an attribute node or namespace node, thepreceding-sibling:: axis is empty.self::Just the context node itself.几种简写方式count()、local-name()、name()、position()、last()String函数concat()、contains()、starts-with()、string()、string-length()、substring ()、substring-after()、substring-before()、translate()<xsl:variable name="UpCaseHttp" select="translate($ItemValue, 'htp', 'HTP')"/> Boolean函数boolean()、false()、not()、true()Number函数ceiling()、floor()、number()、round()、sum()XSLT标签xsl:template xsl:call-templatexsl:apply-templates xsl:paramxsl:with-param<xsl:template name="JSButton"><xsl:param name="Name"/><xsl:param name="JS"/><img src="../images/empty.gif" width="5" height="1"/><span class="clsButtonFace"><a onclick="javascript:{$JS};"><xsl:value-of select="$Name"/></a></span></xsl:template><xsl:template name="ea:SaveNoNewButton"><xsl:call-template name="JSButton"><xsl:with-param name="Name" select="' 保存'"/><xsl:with-param name="JS" select="'verify(&quot;Save&quot;)'"/> </xsl:call-template></xsl:template><xsl:apply-templates select="Ebanswers/PAGE"><xsl:template match="PAGE"></xsl:template>xsl:foreach<xsl:for-each select="$CodeTable"><option value="{CODE_VALUE}"><xsl:if test="CODE_VALUE = $AValue"><xsl:attribute name="selected"/></xsl:if><xsl:value-of select="CODE_NAME"/></option></xsl:for-each>xsl:sort<xsl:sortselect = string-Expressionlang = { nmtoken }data-type = { "text" | "number" | QName }order = { "ascending" | "descending" }case-order = { "upper-first" | "lower-first" }/>紧随xsl:apply-templates或xsl:for-each<xsl:apply-templates select="/Toolkit/tk:Table/tk:Field[tk:List]"> <xsl:sort select="tk:List/@Order" data-type="number"/> </xsl:apply-templates>xsl:variable注意字符串变量<xsl:variable name="Test" select="'title'"/>xsl:value-of xsl:text<xsl:value-ofselect = Expressiondisable-output-escaping = "yes" | "no"</xsl:value-of><xsl:textdisable-output-escaping = "yes" | "no"></xsl:text><xsl:template name="ea:WhiteSpace"><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text></xsl:template>xsl:element xsl:attributexsl:attribute-setXML File (item.xml)<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="element.xsl" ?><root><item>My Item</item></root>XSLT File (element.xsl)<?xml version="1.0"?><xsl:stylesheet version="1.0"xmlns:xsl="/1999/XSL/Transform" ><xsl:template match="item"><xsl:element name="xsl:template"><xsl:attribute name="match">cost</xsl:attribute><xsl:attribute name="xml:space">preserve</xsl:attribute> <xsl:apply-templates/></xsl:element></xsl:template></xsl:stylesheet>OutputThis is the formatted output:My ItemThe following is the processor output, with line breaks added for clarity. <?xml version="1.0"?><xsl:template match="cost"xml:space="preserve"xmlns:xsl="/1999/XSL/Transform">My Item</xsl:template><xsl:attribute-set name="ea:WrapAttrs"><xsl:attribute name="nowrap"/></xsl:attribute-set><!--不能为空的字段的显示名称的td的attribute-set--><xsl:attribute-set name="ea:NonEmptyAttrs" use-attribute-sets="ea:WrapAttrs"><xsl:attribute name="align">right</xsl:attribute><xsl:attribute name="bgcolor">#E2EBF6</xsl:attribute></xsl:attribute-set>xsl:if xsl:choose xsl:when xsl:otherwise<a href="{$HttpRef}"><xsl:if test="$Target != ''"><xsl:attribute name="target"><xsl:value-of select="$Target"/></xsl:attribute> </xsl:if><xsl:value-of select="$ItemValue"/></a><xsl:choose><xsl:when test="$BigHrefType='HREF'"><a href="{$HrefAddress}"><xsl:value-of select="$Value"/></a></xsl:when><xsl:when test="$BigHrefType='EMAIL'"><a href="mailto:{$Value}"><xsl:value-of select="$Value"/></a></xsl:when><xsl:otherwise><xsl:call-template name="ea:ProcessText"><xsl:with-param name="Text" select="$Value"/></xsl:call-template></xsl:otherwise></xsl:choose>xsl:import xsl:include<xsl:import href="PublicUtil.xslt"/>xsl:copy-of xsl:output<xsl:output method="html" indent="no"/><xsl:variable name="ea:NoRecord"><tr><td colspan="20" class="pad5">没有内容</td></tr></xsl:variable><xsl:copy-of select="$ea:NoRecord"/>XSLT函数current()通常情况下,和“.”返回的值相同。

25转换XML文件

25转换XML文件

25转换XML文件
要用XSL文件来转换XML文档,您需要按以下步骤执行:
1.确保XML文件是当前文档。

2.
选择菜单项XSL/XQuery | XSL Transformation (F10) 或点击图标。

这时,XML 文档中所引用的XSL样式表将被用于进行转换。

(由于Company.xsl文件是一个
XSLT 1.0文档,因此XMLSpy将自动使用内置的Altova X SLT 1.0引擎进行转换。


输出文档将在Browser视图中显示,它具有文件名XSL Output.html。

Browser视
图中,上面是居左对齐显示的Company数据,下面是以表格形式显示的Person数据。

注:如果您看到的表格只有表格标题、而没有数据的话,请确保您已经为schema定义了目标命名空间(target namespace)(详见定义命名空间)。

Schema、XML和XSL 中所使用的命名空间必须相同。

使用XSL格式化XML

使用XSL格式化XML

第六章 xsl格式化xml
26
在路径中使用” ” 在路径中使用”*”
如果只知道”学生列表”的孙子节点”姓名”, 而不知道儿子节点,则可用如下来描述: <xsl:template match=“/”> <xsl:apply-templates select=“学生列表/*/姓 名”/> </xsl:template>
练习
将下列xml文档使用xsl格式化。要求以列表的 形式显示其内容,其中标题的字体为黑体,字 号为10号,红色背景,居中,内容记录以宋体 显示,并左对齐。
第六章 xsl格式化xml
13
节点的访问
访问单个节点 访问多个节点
第六章 xsl格式化xml
14
访问单个节点
<xsl:value-of>指令用于将节点的内容复制到输 出结果中,指令的select属性用于选择被提取 值的节点。即具体元素的内容提取出来。 即具体元素的内容提取出来。 即具体元素的内容提取出来 它与xsl:apply-templates组合在一起完成搜 它与 组合在一起完成搜 索知道节点中指定子节点的子节点的值。 索知道节点中指定子节点的子节点的值。 模板不允许嵌套,如果搜索更深层次的子节点, 模板不允许嵌套,如果搜索更深层次的子节点, 需要多个模板进行组合。 即模板中不包含其 需要多个模板进行组合。(即模板中不包含其 他模板,每个模板都是独立的)。 他模板,每个模板都是独立的 。
“/”是根节点匹配符号,可以单独使用。 在样式单中,匹配根节点的模板必不可少。 模板样式出现的顺序是没有关系。
第六章 xsl格式化xml
20
根元素匹配符合
“/*”用于匹配任意的根元素。 例如:如果学生列表为根元素,则 <xsl:template match=“学生列表”> <xsl:apply-templates/> </xsl:template> 可以改为: <xsl:template match=“/*”> <xsl:apply-templates/> </xsl:template>

第四章 格式转换

第四章 格式转换

示例 — HTML 代码
<tr> <td width="50%">Multimedia operating system</td> <td width="50%">John</td> </tr> <tr> <td width="50%">Library system automation</td> <td width="50%">Joseph</td> </tr> </table> <p class="times">Copyrights IBM</p> </body> </html>
– 用来转换一个 XML 文档的方法 – 定义 XML 部分和模式的方法 – 格式化 XML 文档的方法
XML/XSL 结构
XSL 的优点
它把 XML 数据转换成 HTML 格式 它可以过滤和排序 XML 数据 它可以寻址部分 XML 文档 它可以根据数据值格式化 XML 数据 例如,负的帐户差额是用红色显示的 它可以将 XML 数据输出到除传统的输出设备以外 的其它设备,如手持设备、语音设备和其它类似的 设备
<xsl:value-of> 元素
xsl:value-of 元素用来抽取 XML 文档中某个节 点的值 xsl:value-of 元素用来创建结果树中的一个文本 节点 它的语法如下: <xsl:value-of select=”expression” disable-outputescaping=”yes or no” />

ASP XSLT模板语法

ASP  XSLT模板语法

ASP XSLT模板语法XML文档需要使用XSLT进行数据转换,才能在浏览器中显示其文档数据。

XSLT能够显示XML文档数据是通过XSLT模板来实现的。

XSLT文件可以称为XSLT样式表或模板文件,其扩展名为.xsl。

与XML文档类型,XSLT文件由元素及其内容构成,并且遵循W3C规范,所以XSLT样式表也是有效且规范的XML文件。

其中,属性match是模板的必需属性,值必须是与XML文档标记相匹配的字符串,称为标记匹配模式。

标记匹配模式主要用来指定要从XML文档中开始寻找和提取数据的标记。

如果没有为match设置属性,表示从文档的根元素处开始查找和提取数据,其默认值为“/”。

如果要为其设定属性值,则需要为其根据XML文档的树状结构,给出要提取数据元素的完整路径。

XSLT样式表中必须存在一个根模板。

所谓根模板就是和XML文档中根标记匹配的模板。

如果使用浏览器来处理XSLT转换,则根模板的标记匹配模式必须是“/”。

当处理器进行XML文档转换时,必须先查找到根模板,然后再从根模板开始进行XSLT转换。

根模板的内容中可以包括其他的模板调用标记。

如果样式表中没有根模板,那么该样式表就不起任何作用。

1.模板标记在每一个实际的XML文档中,肯定包含有根标记和多个子标记,他们是很重要的一类标记。

XSLT样式表转换时应当为根标记和这些子标记提供输出数据的模板。

这些模板的标记匹配模式可以是根标记名称、子标记名称和根元素名称等。

例如,下面是一个视频网站中使用的XML文档,代码如下所示。

现在便可以使用XSLT的标记匹配模式来选择XML文档中的节点。

●根标记的任意级别与XML标记浏览次数匹配的模板。

●要创建标记为视频/名称,并且具有编号属性的匹配模板,如果要确定标记2.模板调用在转换并显示XML文档数据内容时,XSLT处理器必须先查找到根模板,在对根模板的变换过程中,再使用XSLT模板标记调用其他的模板。

XSLT转换中,使其中,元素apply-templates表示应用模板规则,用于将模板规则应用到相应的子标记中。

什么是XSLT

什么是XSLT

1. 什么是XSLT大家可能听说过XSL(eXtensible Stylesheet Language),XSL和我们这里说的XSLT 从狭义上理解是一样的,而按照W3C的标准,XSLT的说法更严格些,因此我们在文章中统一使用XSLT的称法。

XSLT的英文标准名称为eXtensible Stylesheet Language Transformation。

根据W3C的规范说明书(/TR/xslt),最早设计XSLT的用意是帮助XML文档(document)转换为其它文档。

但是随着发展,XSLT已不仅仅用于将XML转换为HTML或其它文本格式,更全面的定义应该是:XSLT是一种用来转换XML文档结构的语言。

2. 为什么要用XSLT我们已经知道,XML是一种电脑程序间交换原始数据的简单而标准的方法。

它的成功并不在于它容易被人们书写和阅读,更重要的是,它从根本上解决了应用系统间的信息交换。

因为XML满足了两个基本的需求:(1).将数据和表达形式分离。

就象天气预报的信息可以显示在不同的设备上,电视,手机或者其它。

(2).在不同的应用之间传输数据。

电子商务数据交换的与日俱增使得这种需求越来越紧迫。

为了使数据便于人们的阅读理解,我们需要将信息显示出来或者打印出来,例如将数据变成一个HTML文件,一个PDF文件,甚至是一段声音;同样,为了使数据适合不同的应用程序,我们必须有能够将一种数据格式转换为另一种数据格式,比如需求格式可能是一个文本文件,一个SQL语句,一个HTTP信息,一定顺序的数据调用等。

而XSLT就是我们用来实现这种转换功能的语言。

将XML转换为HTML,是目前XSLT最主要的功能前言大家好,从今天起我们将一起来学习XML家族的另一种语言XSLT,XSLT类似HTML中的CSS,不过比CSS功能要强大的多。

学习XSLT的前提是你对XML已有一些了解,如果你没有学习过XML,能先点这里(http: ///columns/xml_1.shtml)看我先前写的一篇文章《XML轻松入门手册》。

XSLT 经典教程

XSLT 经典教程

XSLT 教程 1.基础 XSLT 首页Next Page XSL 指扩展样式表语言(EXtensible Stylesheet Language)。

万维网联盟开始发展 XSL 的起因是由于对基于 XML 的样式表语言的需求。

XSLT 指 XSL 转换。

在此教程中,你将学习如何使用 XSLT 将 XML 文档转换为其他文档,比如 XHTML。

开始学习 XSLT !XSLT 参考手册XSLT 元素 对所有来自 W3C 标准的 XSLT 元素进行了描述,以及关于浏览器支持的信息。

XSLT 函数 XSLT 包含了超过 100 个内置函数。

这些函数可以用于字符串、数值、日期和时间比较、 节点和 QName 处理, 序列处理, 逻辑值等等。

内容目录XSL 语言 详细解释 XSL 的子语言: XSLT、XPath 和 XSL-FO。

XSLT 简介 XSLT 的简介。

包括其概念和作用。

XSLT 浏览器 支持 XSLT 的浏览器总论。

XSLT 转换 如何使用 XSLT 将 XML 文档转换为 XHTML 文档。

XSLT 模板 <xsl:template> 元素包含了当指定的节点被匹配时所能应用的规则. XSLT <xsl:value-of> 元素 <xsl:value-of> 元素可提取选定节点的值。

XSLT <xsl:for-each> 元素<xsl:for-each> 元素允许您在 XSL 中进行循环。

XSLT <xsl:sort> 元素 <xsl:sort> 元素用于对输出进行排序。

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

XSLT <xsl:choose> 元素 <xsl:choose> 元素被用来与 <xsl:when> 和 <xsl:otherwise> 配合使用,来表达多重 的条件检验。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.附加指定属性条件
例如: <xsl:template match="student[@class]">
使用XSL转换XML文档
1
XSL概述
2
XSL模板
3
XSL节点选择
4
XSL控制指令
5
XSL应用实例
1 XSL概述
1.1 XSL基本概念
XSL的全称是eXtensible Stylesheet Language, 即可扩展样式语言,是目前用来设计XML文档 显示样式的主要技术之一。 XSL主要由两部分组成,即数据转换语言XSLT 和数据格式化语言XSL-FO。目前主要使用数据 转换语言XSLT,可以根据需要把XML文档转换 成任何一种基于文本格式的文档。 XSL样式表文档的内容完全符合XML的语法规 定,因而可以将其看成是一种特殊的XML文档。
2.XSL文档的创建
XSL文档以 .xsl为其文件扩展名,与XML 文档一样也是一种文本文件,可用任何一 种文本编辑软件进行创建和修改。
3.XSL文档的引用
在XML文档中引用XSL样式表的方法是在 序言部分添加如下形式的指令: <?xml-stylesheet type="text/xsl" href="URI" ?> URI表示XSL文件名
1.3 XSL文档的创建与应用
1.XSL文档的组成
XSL文档基本组成形式: <?xml version="1.0" encoding="gb2312" ?> <xsl:stylesheet xmlns:xsl="http://www/w3/org/tr/wd-xsl">
<xsl:template match="/"> <!--若干控制XML文档元素显示的规
3.4 选择指定的元素属性
在一些XSL样式表的特定标记中,同样可 以选择和输出XML文档元素的属性内容, 其语法格式为: @ 属性名
3.5 使用附加条件选择节点
1.附加子元素条件 例如: <xsl:template match="student[score]">
<xsl:value-of select="name"/> <xsl:value-of select="score"/> </xsl:template> 需要在XML文档中选择具有SCORE子元 素的STUDENT元素
则--> </xsl:template> ……
</xsl:styles有XML声明语句,文档中的 每一个元素和标记都必须符合XML规范。 必须有由 <xsl:stylesheet 开始的XSL样式表声明语句。 标记所属的名称空间。 XSL文档的模板(template)用来规定XML文档中所匹 配元素的输出内容和输出格式。一个XSL文档至少应包 含一个与根节点匹配的模板。 W3C为XSL定义了若干个特定的元素或标记,包括: stylesheet、template等,用来实现对XML文档元素的显 示格式进行控制。必须以xsl开头。 在XSL文档中也可以使用各种HTML标记。
2.当前节点和父节点匹配符
当前节点的匹配符为:“.” 父节点的匹配符为: “..” 例如: <xsl:template match="Student">
<xsl:value-of select="."/> <xsl:value-of select=".."/> </xsl:template>
3.3 使用路径选择节点
3 XSL节点选择
3.1 使用元素名选择节点
可以在模板中直接指定XML文档的某个元 素名来选择相匹配的节点。 例如: <xsl:template match=“student"> <xsl:value-of select="name"/>
3.2 使用匹配符选择节点
1.根节点匹配符 在xsl文档中与根节点匹配的模板是必不可 少的。 例如: <xsl:template match="/">
一个XML文档链接相关的XSL样式表后,即可 直接在IE 浏览器中打开,并按样式表指定的格 式显示出文档内容。IE包含一个带有XSL引擎的 XML处理器。
Xml文档 Xsl样式表
Xslt 转换器
转换后 的文档
在实际工作中,利用XSLT的数据转换功能,可以把需 要共享的数据保存为XML文档,然后根据各种不同的 需求把这些数据转换为不同各式的文档,并输出到不 同的显示媒体中。
1.2 XML文档结构树
XML文档的层次结构像是一颗倒挂的树,称为 XML文档结构树。文档中的每一个组件,包括 处理指令、注释或各个元素都是结构树中的一个 节点。 XML文档结构树从代表整个文档的根节点开始, 其下是XML文档声明及根元素等子节点,而在 根元素之下则是各层次子元素构成的一系列子节 点。 注意:根节点代表整个XML文档,而根元素则 是指最上层的一个元素。
1.在match属性中使用路径
例如: <xsl:template match="/roster/Student/name">
2.在select属性中使用路径
例如: <xsl:for-each select=“school/Student/name"/>
3.使用特殊路径符号
“*”代替路径中的任意节电元素名称 “//”代替路径中的任意多层节点元素名称 例如: <xsl: for-each select=“school/*/name"/> <xsl: for-each select="//name"/>
2 XSL模板
2.1 XSL模板定义指令
定义一个XSL模板的基本语法格式: <xsl:template match="pattern">
<!-- 若干行输出内容与输出格式定义 代码 --> </xsl:template>
2.2 XSL选取值输出指令
XSL特定的 <xsl:value-of> 标记指令可用来 选取某个指定的节点,并输出该节点元素 的值。其基本语法格式如下: <xsl:value-of select="element-name"/> 例如: <xsl:value-of select="name"/> <xsl:value-of select=“age”/> <xsl:value-of select=“score"/>
相关文档
最新文档