W3School——XSL学习笔记
2015-09-11 12:12
246 查看
这段时间用到HTML,XSL,XML,先把XSL语言大概看了一下,W3School是一个很好的网站,非常值得收藏,总结了XSL的一些基础知识,详细的都可以在这里找到。
XSL 包括三部分:
XSLT:用于转换 XML 文档的语言。
XPath:用于在 XML 文档中导航的语言。
XSL-FO:用于格式化 XML 文档的语言。
XSLT = XSL 转换(XSL Transformations)。
XSLT 是 XSL 中最重要的部分。
XSLT 用于将一种 XML 文档转换为另外一种 XML 文档,或者可被浏览器识别的其他类型的文档,比如 HTML 和 XHTML。通常,XSLT 是通过把每个 XML 元素转换为 (X)HTML 元素来完成这项工作的。
XSLT 使用 XPath 在 XML 文档中查找信息。XPath 被用来通过元素和属性在 XML 文档中进行导航。
match 属性用于关联 XML 元素和模板。match 属性也可用来为整个文档定义模板。match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。如下所示:
Title Artist
. .
此例的缺点:数据没有从 XML 文档被拷贝到输出结果(表格第二行中只是两个点))。
Title Artist
Jay Jay Chou
select 属性的值是一个XPath表达式,此表达式的类似于文件系统。
此例的缺点:仅仅只有一行数据从XML文档被拷贝到输出结果
这个代码可以循环遍历XML元素,并显示所有记录。此外,如果在<xsl:for-each>元素中添加一个选择属性的判别式,可以过滤从XML文件输出的结果。如下所示:
= 等于
!= 不等于
< 小于
> 大于
如果需要放置针对XML文件内容的条件测试,请向XSL文档添加<xsl:if>元素。语法如下所示:
XSL 指扩展样式表语言(EXtensible Stylesheet Language)。
发展 XSL 的原因是:存在着对于基于 XML 的样式表语言的需求。XSL 包括三部分:
XSLT:用于转换 XML 文档的语言。
XPath:用于在 XML 文档中导航的语言。
XSL-FO:用于格式化 XML 文档的语言。
XSLT = XSL 转换(XSL Transformations)。
XSLT 是 XSL 中最重要的部分。
XSLT 用于将一种 XML 文档转换为另外一种 XML 文档,或者可被浏览器识别的其他类型的文档,比如 HTML 和 XHTML。通常,XSLT 是通过把每个 XML 元素转换为 (X)HTML 元素来完成这项工作的。
XSLT 使用 XPath 在 XML 文档中查找信息。XPath 被用来通过元素和属性在 XML 文档中进行导航。
<xsl:template> 元素
<xsl:template> 元素用于构建模板。match 属性用于关联 XML 元素和模板。match 属性也可用来为整个文档定义模板。match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。如下所示:
<xsl:template match="/"> <html> <body> <table border="1"> <tr> <th>Title</th> <th>Artist</th> </tr> <tr> <td>.</td> <td>.</td> </tr> </table> </body> </html> </xsl:template>结果如下:
Title Artist
. .
此例的缺点:数据没有从 XML 文档被拷贝到输出结果(表格第二行中只是两个点))。
<xsl:value-of> 元素
<xsl:value-of> 元素用于提取某个选定节点的值,并把值添加到转换的输出流中。如下所示:<tr> <td><xsl:value-of select="C/cd/title"/></td> <td><xsl:value-of select="C/cd/artist"/></td> </tr>结果如下:
Title Artist
Jay Jay Chou
select 属性的值是一个XPath表达式,此表达式的类似于文件系统。
此例的缺点:仅仅只有一行数据从XML文档被拷贝到输出结果
<xsl:for-each> 元素
<xsl:for-each> 元素可用于选取指定的节点集中的每个 XML 元素。如下所示:<pre name="code" class="html"><xsl:for-each select="C/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each>
这个代码可以循环遍历XML元素,并显示所有记录。此外,如果在<xsl:for-each>元素中添加一个选择属性的判别式,可以过滤从XML文件输出的结果。如下所示:
<xsl:for-each select="C/cd[title='Fantasy']"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each>合法的过滤运算符:
= 等于
!= 不等于
< 小于
> 大于
<xsl:sort> 元素
<xsl:sort> 元素用于对结果进行排序。如下所示:<xsl:for-each select="C/cd/"> <xsl:sort select="artist"/> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each>其中,select属性指示需要排序的XML元素。
<xsl:if> 元素
<xsl:if> 元素用于放置针对XML文件内容的条件测试。如果需要放置针对XML文件内容的条件测试,请向XSL文档添加<xsl:if>元素。语法如下所示:
<xsl:if test="expression"> ... ...如果条件成立则输出 ... </xsl:if>输出CD中price大于10的元素:
<xsl:for-each select="C/cd"> <xsl:if test="price > 10"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:if> </xsl:for-each>必须的test属性的值包含了需要求值的表达式。
<xsl:choose> 元素
<xsl:choose> 元素用于结合 <xsl:when> 和 <xsl:otherwise> 来表达多重条件测试。语法如下所示:<xsl:choose> <xsl:when test="expression"> ...输出... </xsl:when> <xsl:otherwise> ...输出... </xsl:otherwise> </xsl:choose>如果需要插入针对XML文件的多重条件测试,请向XSL文件添加 <xsl:choose>、<xsl:when>以及<xsl:otherwise>。如下所示:
<td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price > 10"> <td bgcolor="#ff00ff"><xsl:value-of select="artist"/></td> </xsl:when> <xsl:when test="price > 9"> <td bgcolor="#cccccc"><xsl:value-of select="artist"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose>
相关文章推荐
- Java数据库ResultSet转json实现
- vim窗口编辑
- [BZOJ1610][Usaco2008 Feb]Line连线游戏
- hdu 4832
- "!x++" 我之见解
- 微信企业号开发之微信考勤Cookies的使用
- 背景颜色的渐变
- hihoCode#1039消除字符串
- Android(java)学习笔记228:服务(service)之绑定服务调用服务里面的方法
- FileZilla FTP服务软件
- django - 验证码 django-simple-captcha 使用简介
- 从模板模式到JdbcTemplate
- 如何更改linux文件的拥有者及用户组(chown和chgrp)--- chown root:root testfile // 使用 chown 一次性修改拥有者及组
- 数组指针与指针数组
- 从模板模式到JdbcTemplate
- Android中的事件分发机制总结
- Nginx和LVS概述
- C++ Primer的课后规划问题的第八章
- 代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
- MFC 多线程的使用