XML学习之XSLT:一、介绍和入门
2013-02-16 15:18
295 查看
XSL(eXtensible Stylesheet Language)可扩展样式语言,主要用于将一个Xml文档转换成另外的文档(如Html文档等),以及定义转换后的文档的显示外观。XSL实际上包含了3种语言:XSL转换(XSLT)、XML路径语言(XPath)、XSL格式化对象(XSL-FO)。XSLT主要用于将一个XML文档转化为其他的XML文档或其他类型的文档。XPath主要用于识别、选择、匹配XML文档中的各个组成部分,包括元素、属性、文本内容等。XSL-FO定义了许多XML标记,这些标记描述了应如如何显示内容,XSL-FO的一个主要应用就是讲XML文档转化为PDF文件。
XSLT是基于XML的语言,这意味着XSLT文档本身就是格式良好的XML文档。<xsl:stylesheet>是XSLT的根元素,它有两个必须的属性:version和xmlns:xsl(其值为:http://www.w3.org/1999/XSL/Transform)。XSLT对源文档、结果文档和样式表文档使用同样的数据模型来操作,也就是采用同样的树形机构。不过需要注意的是,处理指令和注释在样式表中被忽略,样式表被看做既没有处理指令节点,又没有注释节点的样式表树。
XSLT样式表有一组模版规则组成,模版规则包含了两个部分:模式和模版。模式用于在源文档树中匹配(定位)节点,模版定义节点处理规则,通过模版的实例化来组成结果数的一部分。当一个模板实例化的时候,它总是相对于当前节点和当前节点列表来实例化。
welcome.xml
welcome.xsl
<xsl:apply-templates>元素
<xsl:apply-templates>元素用于告诉处理器处理当前节点的所有子节点。在模版中使用该元素,告诉XSLT处理器将匹配的节点的每一个子节点(包括文本节点)与样式表中的模板规则进行比较,如果找到了匹配的模板规则,那么就可以为匹配的节点输出模版。该模版有一个select属性,使用这个属性是告诉处理器只处理子节点中的XXX节点。
<xsl:value-of>元素
该节点用于在结果树中创建一个文本节点。该元素有一个必须的属性select,用于指定要计算的表达式,表达式计算的结果被转化为一个字符串值,用这个字符串值来创建一个文本节点。
<xsl:for-each>元素
该元素有一个必需的表达式select,用于指定一个表达式,该表达式计算的结果必须是一个节点集。该元素用于在一个节点集中依次选取每一个节点,被选择的节点被当成当前节点。
Mode属性
当需要对一个元素多次处理,且每次处理的结果(样式)不一致时,可以对元素<xsl:template>和<xsl:apply-templates>使用Model属性,只有这两个元素中的mode属性指定了同样的值,模版规则才会被匹配。如果<xsl:template>没有使用match属性,那么它也不能有mode属性。
XSLT是基于XML的语言,这意味着XSLT文档本身就是格式良好的XML文档。<xsl:stylesheet>是XSLT的根元素,它有两个必须的属性:version和xmlns:xsl(其值为:http://www.w3.org/1999/XSL/Transform)。XSLT对源文档、结果文档和样式表文档使用同样的数据模型来操作,也就是采用同样的树形机构。不过需要注意的是,处理指令和注释在样式表中被忽略,样式表被看做既没有处理指令节点,又没有注释节点的样式表树。
XSLT样式表有一组模版规则组成,模版规则包含了两个部分:模式和模版。模式用于在源文档树中匹配(定位)节点,模版定义节点处理规则,通过模版的实例化来组成结果数的一部分。当一个模板实例化的时候,它总是相对于当前节点和当前节点列表来实例化。
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="welcome.xsl"?> <Welcome> <Title>这是一个标题栏</Title> <Content>这是一个内容栏</Content> </Welcome>
welcome.xml
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <xsl:apply-templates/> </html> </xsl:template> <xsl:template match="Welcome"> <head> <title> <xsl:value-of select="Title"/> </title> </head> <body> <h3/> <div>这是显示区</div> <xsl:value-of select="Content"/> </body> </xsl:template> </xsl:stylesheet>
welcome.xsl
<xsl:apply-templates>元素
<xsl:apply-templates>元素用于告诉处理器处理当前节点的所有子节点。在模版中使用该元素,告诉XSLT处理器将匹配的节点的每一个子节点(包括文本节点)与样式表中的模板规则进行比较,如果找到了匹配的模板规则,那么就可以为匹配的节点输出模版。该模版有一个select属性,使用这个属性是告诉处理器只处理子节点中的XXX节点。
<xsl:value-of>元素
该节点用于在结果树中创建一个文本节点。该元素有一个必须的属性select,用于指定要计算的表达式,表达式计算的结果被转化为一个字符串值,用这个字符串值来创建一个文本节点。
<xsl:template match="employee"> <xsl:value-of select="name"/> </xsl:template>
<xsl:for-each>元素
该元素有一个必需的表达式select,用于指定一个表达式,该表达式计算的结果必须是一个节点集。该元素用于在一个节点集中依次选取每一个节点,被选择的节点被当成当前节点。
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head/> <body> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="employees"> <div> <table bgcolor="#123123" border="2"> <xsl:for-each select="employee"> <tr> <td width="100px" align="center"> <xsl:value-of select="name"/> </td> <td width="100px" align="center"> <xsl:value-of select="age"/> </td> <td width="100px" align="center"> <xsl:value-of select="month_pay"/> </td> </tr> </xsl:for-each> </table> </div> </xsl:template> </xsl:stylesheet>
Mode属性
当需要对一个元素多次处理,且每次处理的结果(样式)不一致时,可以对元素<xsl:template>和<xsl:apply-templates>使用Model属性,只有这两个元素中的mode属性指定了同样的值,模版规则才会被匹配。如果<xsl:template>没有使用match属性,那么它也不能有mode属性。
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head/> <body> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="employees"> <div>第一次展示数据: <table border="1"> <tbody> <xsl:apply-templates select="employee" mode="table"/> </tbody> </table> </div> <br/> <div>第二次展示数据: <xsl:apply-templates select="employee" mode="list"/> </div> <div>第三次展示数据: <table bgcolor="#123123" border="2"> <xsl:for-each select="employee"> <tr> <td width="100px" align="center"> <xsl:value-of select="name"/> </td> <td width="100px" align="center"> <xsl:value-of select="age"/> </td> <td width="100px" align="center"> <xsl:value-of select="month_pay"/> </td> </tr> </xsl:for-each> </table> </div> </xsl:template> <xsl:template match="employee" mode="table"> <tr> <td width="100px" align="center"> <xsl:value-of select="name"/> </td> <td width="100px" align="right"> <xsl:value-of select="age"/> </td> <td width="100px" align="right"> <xsl:value-of select="month_pay"/> </td> </tr> </xsl:template> <xsl:template match="employee" mode="list"> <ul> <li> <xsl:value-of select="name"/> </li> <li> <xsl:value-of select="age"/> </li> <li> <xsl:value-of select="month_pay"/> </li> </ul> </xsl:template> </xsl:stylesheet>
相关文章推荐
- XML学习之XSLT:三、XPath介绍
- XML学习之XSLT:二、XPath介绍
- Qt入门学习——常用部件介绍
- Entity Framework 学习总结之六:EntitySQL 介绍入门
- XML轻松学习手册(1)XML快速入门
- Linux进程入门学习(五)-IPC介绍
- Hadoop学习(1)-- 入门介绍
- XML轻松学习手册(1)XML快速入门
- XML轻松学习手册(1)XML快速入门
- 入门:对J2EE初学者的学习流程介绍
- Linux驱动入门学习(一):入门介绍
- undo系列学习之undo入门基础知识介绍
- 韩顺平_php从入门到精通_视频教程_第1讲_html介绍_html运行原理①_学习笔记_源代码图解_PPT文档整理
- PHP学习总结(9)——PHP入门篇之WAMPServer服务控制面板介绍
- linux系统学习:基础篇(系统介绍以及命令行的使用)快速入门linux系统
- DBUtils学习(介绍和入门)
- JAVA WEB从入门到精通day06 xml,dtd,jaxp学习
- XML应用系列:XSLT入门
- C# BackgroundWorker组件学习入门介绍
- SQLite学习快速入门-- 基础介绍