xsl 操作

灰太狼 2022-05-13 00:54 250阅读 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 样式表的根元素是

  1. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> //声明在文档的最前面

或者

  1. <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:

复制代码

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <root>
  3.   <user>
  4.     <name>张三</name>
  5.     <age>12</age>
  6.     <pwd>123</pwd>
  7.     <sex></sex>
  8.   </user>
  9. </root>

复制代码

创建 XSL 样式表

复制代码

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:template match="/">
  4. <html>
  5. <body>
  6. <h2>用户信息</h2>
  7. <table border="1">
  8. <tr bgcolor="#9acd32">
  9. <th align="left">用户名</th>
  10. <th align="left">密码</th>
  11. </tr>
  12. <xsl:for-each select="root/user">
  13. <tr>
  14. <td><xsl:value-of select="name"/></td>
  15. <td><xsl:value-of select="pwd"/></td>
  16. </tr>
  17. </xsl:for-each>
  18. </table>
  19. </body>
  20. </html>
  21. </xsl:template>
  22. </xsl:stylesheet>

复制代码

把 XSL 样式表链接到 XML 文档

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

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

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

这里我对咱们上个例子的xsl简要的解释一下


复制代码

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:template match="/">//XSL 样式表由一个或多套被称为模板(template)的规则组成。每个模板含有当某个指定的节点被匹配时所应用的规则。
  4.                 match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。意思也就是匹配xml文件的(从根开始)
  5. <html>
  6. <body>
  7. <h2>用户信息</h2>
  8. <table border="1">
  9. <tr bgcolor="#9acd32">
  10. <th align="left">用户名</th>
  11. <th align="left">密码</th>
  12. </tr>
  13. <xsl:for-each select="root/user"> //<xsl:for-each> 元素可用于选取指定的节点集中的每个 XML 元素。
  14.                          select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。
  15.                         <xsl:for-each> 元素还可以加过滤<xsl:for-each select="root/user[age='12']"> (意思取的是子节点当中年龄12的)
  16.                          合法的过滤运算符:
  17.                                 := (等于) 
  18.                                 :!= (不等于)
  19.                                 :< (小于)
  20.                                 :> (大于)    
  21.  
  22. <xsl:sort select="age"/> //如需对结果进行排序,只要简单地在 XSL 文件中的 <xsl:for-each> 元素内部添加一个 <xsl:sort> 元素:
  23.                                 
  24. <xsl:sort select="age"/>
  25.   
  26. <xsl:if test="age > 10"> //如需添加有条件的测试,请在 XSL 文件中的 <xsl:for-each> 元素内部添加 <xsl:if> 元素
  27.                      
  28. test
  29. :意思是条件
  30. <tr>
  31. <td><xsl:value-of select="name"/></td> //<xsl:value-of> 元素,<xsl:value-of> 元素用于提取某个选定节点的值,并把值添加到转换的输出流中:
  32.                             select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。
  33.                                 当我在 <xsl:for-each> 元素可省略从根节点找直接在 <xsl:for-each> 元素下面找
  34. <td><xsl:value-of select="pwd"/></td>
  35. </tr>
  36.   
  37. </xsl:if>
  38. </xsl:for-each>
  39. </table>
  40. </body>
  41. </html>
  42. </xsl:template>
  43. </xsl:stylesheet>
  44. 还可以添加多重判断
  45. <?xml version="1.0" encoding="iso-8859-1"?>
  46. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  47. <xsl:template match="/">
  48. <html>
  49. <body>
  50. <h2>用户信息</h2>
  51. <table border="1">
  52. <tr bgcolor="#9acd32">
  53. <th align="left">用户名</th>
  54. <th align="left">密码</th>
  55. </tr>
  56. <xsl:for-each select="root/user">
  57. <tr>
  58.         
  59. <xsl:choose>
  60.        <xsl:when test="age > 20"> //多重判断 判断我的年龄大于20那么就在醒目右面加一个男人
  61. <td>
  62. <xsl:value-of select="name"/><h6>男人</h6>
  63. </td>
  64.        
  65. </xsl:when>
  66.        
  67. <xsl:when test="age < 20 ">
  68.         <xsl:value-of select="name"/><h6>男孩</h6>//如果是20以下加一个男孩
  69.        
  70. </xsl:when>
  71.        
  72. <xsl:otherwise> //入伙上面两种都不是就加一识别不了
  73.         
  74. <xsl:value-of select="name"/><h6>识别不了年龄</h6>
  75.       
  76. </xsl:otherwise>
  77. <td>
  78. <xsl:value-of select="pwd"/>
  79. </td>
  80. </tr>
  81.      
  82. </xsl:otherwise>
  83. </xsl:choose>
  84. </xsl:for-each>
  85. </table>
  86. </body>
  87. </html>
  88. </xsl:template>
  89. </xsl:stylesheet>

复制代码

XPath 语法

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

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

复制代码

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

复制代码

发表评论

表情:
评论列表 (有 0 条评论,250人围观)

还没有评论,来说两句吧...

相关阅读

    相关 xsl做网頁

    用xsl做网頁 原理:xml文件是用來儲存數据的,xsl則用來表示顯示結构. 將下面兩個文件保存在同一個文件夾內,然后用ie打開xml文件,則xml中的數据就會以x

    相关 xsl 操作

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