首页 > 其他 > 详细

xsl 操作

时间:2015-11-14 12:26:48      阅读:661      评论:0      收藏:0      [点我收藏+]

第一次写在网上找的资料整理了一下,正在努力变大牛。

XSL 指扩展样式表语言(EXtensible Stylesheet Language)。

万维网联盟 (W3C) 开始发展 XSL 的原因是:存在着对于基于 XML 的样式表语言的需求。

说白了就是友好的去显示一个xml文档

XSL - 不仅仅是样式表语言

 

XSL 包括三部分:

XSLT

一种用于转换 XML 文档的语言。

XSLT 是 XSL 中最重要的部分。

XSLT 用于将一种 XML 文档转换为另外一种 XML 文档,或者可被浏览器识别的其他类型的文档,比如 HTML 和 XHTML。通常,XSLT 是通过把每个 XML 元素转换为 (X)HTML 元素来完成这项工作的。

通过 XSLT,您可以向或者从输出文件添加或移除元素和属性。您也可重新排列元素,执行测试并决定隐藏或显示哪个元素,等等。

描述转化过程的一种通常的说法是,XSLT 把 XML 源树转换为 XML 结果树

XPath
一种用于在 XML 文档中导航的语言。
XSL-FO
一种用于格式化 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 文档开始

  我们现在要把下面这个 XML 文档转换为 XHTML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
  <user>
    <name>张三</name>
    <age>12</age>
    <pwd>123</pwd>
    <sex>男</sex>
  </user>

</root>
 

创建 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="/">
  <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 文档

现在xsl (显示格式)和xml(数据)都有了 怎么把他们两个链接到一起呢

向 XML 文档添加 XSL 样式表引用:

<?xml-stylesheet type="text/xsl" href="xsl的文件"?>

  这里我对咱们上个例子的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的)
                         合法的过滤运算符:
                                :=  (等于) 
                                :!= (不等于)
                                :&lt; (小于)
                                :&gt; (大于)    
 <xsl:sort select="age"/> //如需对结果进行排序,只要简单地在 XSL 文件中的 <xsl:for-each> 元素内部添加一个 <xsl:sort> 元素:
                                <xsl:sort select="age"/>
  <xsl:if test="age &gt; 10"> //如需添加有条件的测试,请在 XSL 文件中的 <xsl:for-each> 元素内部添加 <xsl:if> 元素
                     test:意思是条件
<tr> <td><xsl:value-of select="name"/></td> //<xsl:value-of> 元素,<xsl:value-of> 元素用于提取某个选定节点的值,并把值添加到转换的输出流中:
                            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>
       <xsl:when test="age &gt; 20"> //多重判断 判断我的年龄大于20那么就在醒目右面加一个男人
<td> <xsl:value-of select="name"/><h6>男人</h6> </td>
       </xsl:when>
       <xsl:when test="age &lt; 20 ">
        <xsl:value-of select="name"/><h6>男孩</h6>//如果是20以下加一个男孩
       </xsl:when>
       <xsl:otherwise> //入伙上面两种都不是就加一识别不了
        <xsl:value-of select="name"/><h6>识别不了年龄</h6>

       </xsl:otherwise>
<td> <xsl:value-of select="pwd"/> </td> </tr>
     </xsl:otherwise> </xsl:choose> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

XPath 语法

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

下面列出了最有用的路径表达式:

nodename:选取此节点的所有子节点。
/              : 从根节点选取。
//             :从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.               :选取当前节点。
                :选取当前节点的父节点。
..              :选取当前节点的父节点
@              : 选取属性。

 

时间:2015-11-14 11:17:42

xsl 操作

原文:http://www.cnblogs.com/zhaopeifa/p/4964069.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!