第一次写在网上找的资料整理了一下,正在努力变大牛。
XSL 指扩展样式表语言(EXtensible Stylesheet Language)。
万维网联盟 (W3C) 开始发展 XSL 的原因是:存在着对于基于 XML 的样式表语言的需求。
说白了就是友好的去显示一个xml文档
XSLT 是 XSL 中最重要的部分。
XSLT 用于将一种 XML 文档转换为另外一种 XML 文档,或者可被浏览器识别的其他类型的文档,比如 HTML 和 XHTML。通常,XSLT 是通过把每个 XML 元素转换为 (X)HTML 元素来完成这项工作的。
通过 XSLT,您可以向或者从输出文件添加或移除元素和属性。您也可重新排列元素,执行测试并决定隐藏或显示哪个元素,等等。
描述转化过程的一种通常的说法是,XSLT 把 XML 源树转换为 XML 结果树。
把文档声明为 XSL 样式表的根元素是 <xsl:stylesheet> 或 <xsl:transform>。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> //声明在文档的最前面
或者
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">//这两种格式都可以 任选一种
如果我们想访问XSLT 的元素和属性,特性什么的,我们必须在文档顶端声明 XSLT 命名空间。
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
指向的是xslt的官方命名空间,如果引入和这个命名空间那就要包含属性 version="1.0"。
我们现在要把下面这个 XML 文档转换为 XHTML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<root> <user>
<name>张三</name>
<age>12</age>
<pwd>123</pwd>
<sex>男</sex>
</user>
</root>
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>用户信息</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">用户名</th> <th align="left">密码</th> </tr> <xsl:for-each select="root/user"> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="pwd"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
现在xsl (显示格式)和xml(数据)都有了 怎么把他们两个链接到一起呢
向 XML 文档添加 XSL 样式表引用:
<?xml-stylesheet type="text/xsl" href="xsl的文件"?>
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/">//XSL 样式表由一个或多套被称为模板(template)的规则组成。每个模板含有当某个指定的节点被匹配时所应用的规则。
match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。意思也就是匹配xml文件的(从根开始) <html> <body> <h2>用户信息</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">用户名</th> <th align="left">密码</th> </tr> <xsl:for-each select="root/user"> //<xsl:for-each> 元素可用于选取指定的节点集中的每个 XML 元素。
select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。
<xsl:for-each> 元素还可以加过滤<xsl:for-each select="root/user[age=‘12‘]"> (意思取的是子节点当中年龄12的)
合法的过滤运算符:
:= (等于)
:!= (不等于)
:< (小于)
:> (大于)<tr> <td><xsl:value-of select="name"/></td> //<xsl:value-of> 元素,<xsl:value-of> 元素用于提取某个选定节点的值,并把值添加到转换的输出流中:
<xsl:sort select="age"/> //如需对结果进行排序,只要简单地在 XSL 文件中的 <xsl:for-each> 元素内部添加一个 <xsl:sort> 元素:
<xsl:sort select="age"/>
<xsl:if test="age > 10"> //如需添加有条件的测试,请在 XSL 文件中的 <xsl:for-each> 元素内部添加 <xsl:if> 元素
:意思是条件
test
select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。
当我在 <xsl:for-each> 元素可省略从根节点找直接在 <xsl:for-each> 元素下面找
<td><xsl:value-of select="pwd"/></td> </tr>
</xsl:if>
</xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>用户信息</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">用户名</th> <th align="left">密码</th> </tr> <xsl:for-each select="root/user">
<tr>
<xsl:choose>
<td> <xsl:value-of select="name"/><h6>男人</h6> </td>
<xsl:when test="age > 20"> //多重判断 判断我的年龄大于20那么就在醒目右面加一个男人
</xsl:when>
<xsl:when test="age < 20 ">
<xsl:value-of select="name"/><h6>男孩</h6>//如果是20以下加一个男孩<td> <xsl:value-of select="pwd"/> </td> </tr>
</xsl:when>
<xsl:otherwise> //入伙上面两种都不是就加一识别不了
<xsl:value-of select="name"/><h6>识别不了年龄</h6>
</xsl:otherwise>
</xsl:otherwise> </xsl:choose>
</xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。
nodename:选取此节点的所有子节点。
/ : 从根节点选取。
// :从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. :选取当前节点。
:选取当前节点的父节点。
.. :选取当前节点的父节点
@ : 选取属性。
时间:2015-11-14 11:17:42
原文:http://www.cnblogs.com/zhaopeifa/p/4964069.html