建站极客
网页制作 XML/XSLT 正文
什么是XSL?
所属分类:
网页制作 / XML/XSLT
阅读数:
1680
收藏 0
赞 0
分享
相关文章:什么是XML
XSL(EXtensible Stylesheet Language)它是指可扩展样式表语言。 XSL之于 XML 就像 CSS 之于 HTML。说白了就是将XML中的数据用指定的显示格式输出.XML不像HTML,它不包含任何显示格式的信息.XSL 包含两个部分:
XSLT – 用于转换 XML 文档的语言. XSLT 是指 XSL 转换 (XSL Transformation)
XPath – 用于在 XML 文档中导航的语言
XSL 语法
任何 XSL 文档的第一行实际上都是 XML 声明:
<?xml version="1.0" encoding="GB2312"?>
XSL 与 XML ?遵循相同的语法规则 在 XML 声明之后,就是 XSL 声明,例如:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> ...... </xsl:stylesheet>
XSL声明必须要有结束标签,上面的声明中还包含命名空间和 XSL 规范的版本。什么是命名空间 它指定一组可以在特定文档中使用的元素名称和属性名称。命名空间的作用是避免命名冲突。由于 XML 和其它与 XML 相关的语言都是用户定义的,所以可能出现命名冲突。<table>可能是指一个布局或是一个座位。由于大多数应用程序同时处理多个 XML 文档,因此经常会有不同 XML 文档相混合的情况,而在这些文档中某个元素可能代表不同的含义。几个文档使用相同的命名空间可以确保元素在每个文档中代表相同含义。否则,就应该使用不同的命名空间确保元素代表不同的含义。 命名空间由文档声明中的 xmlns 属性指定,实际上就是网站的地址(例如 http://www.w3.org/1999/XSL/Transform)。其基本原理是 URI 具有唯一性,因此相应的命名空间也是唯一的。文档声明中的 URI 仅用作名称。模板或规则 XSL 文档是由模板或规则构成,每个模板定义应用于特定 XML 节点的规则。XSL 模板如下所示:
<xsl:template match="/">......</xsl:template>
模板的作用是用来承载XML文档中的数据的,就像一个模具,如果这个模具是方形的,那么用这个模具做出来的模型也一定是方形的,而XML文档中的数据就是用来真充模具的原料。实际上在模板中可以嵌套子模板,但最上层模板必须将match设为"/"。 happyold.xml
<?xml version="1.0" encoding="GB2312"?> <俱乐部> <会员> <姓名>cnbruce </姓名> <年龄>10 </年龄> <性别>男 </性别> <描述>他是一个糟糕的家伙!</描述> </会员> <会员> <姓名>yufuzi</姓名> <年龄>80 </年龄> <性别>男 </性别> <描述>他是一个优秀的男人!</描述> </会员> <会员> <姓名>xiaojin</姓名> <年龄>20 </年龄> <性别>男 </性别> <描述>他人品有问题!</描述> </会员> </俱乐部>
循环构造
<xsl:for-each select="...">......</xsl:for-each>
与典型的 for 循环作用相同。 old.xsl
<?xml version="1.0" encoding="GB2312"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <table border="1"> <tr> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>描述</th> </tr> <xsl:for-each select="俱乐部/会员"> <tr> <!--表达式为何不需要包括父节点或从文档根开始。这是因为这些元素的路径是根据 <xsl:for-each> 构造中的 XPath 表达式来计算的--> <td><xsl:value-of select="姓名"/></td> <td><xsl:value-of select="年龄"/></td> <td><xsl:value-of select="性别"/></td> <td><xsl:value-of select="描述"/></td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>
将old.xsl与happyold.xml放到同一文件夹下,然后在happyold.xml第二行插队入
<?xml-stylesheet type="text/xsl" href="old.xsl"?>
然后在浏览器中预览一下显示结果。 使用循环构造,还可以根据条件过滤输出。假设只想显示会员中年龄大于30的会员。 old30.xsl
<?xml version="1.0" encoding="GB2312"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <table border="1"> <tr> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>描述</th> </tr> <xsl:for-each select="俱乐部/会员[年龄>30]"> <tr> <td><xsl:value-of select="姓名"/></td> <td><xsl:value-of select="年龄"/></td> <td><xsl:value-of select="性别"/></td> <td><xsl:value-of select="描述"/></td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>
要定义 XML 节点的条件,可以使用下列任何运算符:
等于 (=) 不等于 (!=) 小于 (<) 小于或等于 (<=) 大于 (>) 大于或等于 (>=)
使用<xsl:sort / >构造使输出的结果按指定的节点进行排序,<xsl:sort /> 元素必须嵌套在 <xsl:for-each > 元素中,以确保应用程序可以循环通过所有的项目。sort 元素没有相应的结束标签,所以在其结尾加上"/"使其自结束。 old_sort.xsl
<?xml version="1.0" encoding="GB2312"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <table border="1"> <tr> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>描述</th> </tr> <xsl:for-each select="俱乐部/会员"> <xsl:sort select="年龄" order="descending"/> <tr> <td><xsl:value-of select="姓名"/></td> <td><xsl:value-of select="年龄"/></td> <td><xsl:value-of select="性别"/></td> <td><xsl:value-of select="描述"/></td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>
去掉order="descending"再看看显示结果。 条件构造:
<xsl:choose> <xsl:when test="表达式"> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose>
条件构造中可以有多个when,但只能有一个otherwise,用于处理未包括在初始测试条件中的所有其它情况. old_choose.xsl
<?xml version="1.0" encoding="GB2312"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <table border="1"> <tr> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>描述</th> </tr> <xsl:for-each select="俱乐部/会员"> <xsl:choose> <xsl:when test="年龄 > 70"> <tr bgcolor="#66CCFF"> <td><xsl:value-of select="姓名"/></td> <td><xsl:value-of select="年龄"/></td> <td><xsl:value-of select="性别"/></td> <td><xsl:value-of select="描述"/></td> </tr> </xsl:when> <xsl:when test="年龄=10"> <tr bgcolor="blue"> <td><xsl:value-of select="姓名"/></td> <td><xsl:value-of select="年龄"/></td> <td><xsl:value-of select="性别"/></td> <td><xsl:value-of select="描述"/></td> </tr> </xsl:when> <xsl:otherwise> <tr bgcolor="red"> <td><xsl:value-of select="姓名"/></td> <td><xsl:value-of select="年龄"/></td> <td><xsl:value-of select="性别"/></td> <td><xsl:value-of select="描述"/></td> </tr> </xsl:otherwise> </xsl:choose> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>
详解XML中的标签与元素的使用 这篇文章主要介绍了XML中的标签与元素的使用,是XML入门学习中的基础知识,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
XML中的属性学习教程 这篇文章主要介绍了XML中的属性学习教程,包括使用属性将数据存储在子元素中的例子,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
详解XML中的代码注释书写方法 这篇文章主要介绍了详解XML中的代码注释书写方法,文章中总结了注释使用的一些注意点,比如XML不支持嵌套注释等,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
深入解析XML中的字符实体与字符数据 这篇文章主要介绍了XML中的字符实体与字符数据,文中所说的CDATA片段即是指字符数据即不由解析器解析的文本块,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
解析XML对代码中的空白处理 这篇文章主要介绍了XML对代码中的空白处理,文中介绍到了XML书写中的有效空白与无效空白的区分,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
简单了解XML中的处理指令 这篇文章主要介绍了XML中的处理指令,处理指令在XML中并不常用,稍作了解即可,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
浅谈XML代码编写的编码与验证问题 这篇文章主要介绍了XML代码编写的编码与验证问题,与HTML类似,XML文件的编码也能在序言部分被指定,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
详解XML编程中的模式定义XSD 这篇文章主要介绍了详解XML编程中的模式定义XSD,讲解了如何在XML文档中声明模式及定义类型等内容,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
查看更多