您的位置:首页> 日志> 前端技术 正文

     来到动易公司一转眼就三个月的时间,在动易做项目过程中最深刻的就是标签的使用、修改和制作。这个在以前公司是没有接触过的。而标签的制作又涉及到了SQL和XSL的知识,因此,我必须学习这方面的知识。通过这段时间的学习,让我积累了一些知识和体会,现在跟大家一起分享一下XSL和XPath的基础知识,从而也希望大家能指出我在这方面的不足之处等。

     1.首先介绍的是我在工作过程中总结的一些常用XSL知识,如下:

  1. <xsl:template match="/"><!-- <xsl:template>元素用于构建模板。match 属性用于关联XML元素和模板,但match="/" 表示定义了整个文档 --> 
  2.     </xsl:template> 
  3.       
  4.     <xsl:value-of select="值"/><!-- 这个元素主要是提取某个选定节点的值 --> 
  5.       
  6.     <xsl:for-each select="/NewDataSet/Table"><!-- 看到这个元素的名字就应该知道它具有循环功能,所以在这个元素下面的内容将会循环输出  --> 
  7.     </xsl:for-each> 
  8.       
  9.     <xsl:if test="判断条件"> 
  10.         <!-- 当条件结果为TRUE时则输出里面的内容 --> 
  11.     </xsl:if> 
  12.       
  13.     <xsl:choose><!-- <xsl:choose>必须跟<xsl:when>和<xsl:otherwrise>结合使用,从而实现多重条件判断 --> 
  14.         <!-- 当<xsl:when>的判断条件结果为TRUE时,则输出<xsl:when>的内容,当结果为FLASE时则输出<xsl:otherwrise>的内容! -->      
  15.         <xsl:when test="判断条件"> 
  16.         </xsl:when> 
  17.         <xsl:otherwrise> 
  18.         </xsl:otherwrise> 
  19.     </xsl:choose> 
  20.       
  21.     <xsl:element name="元素的名称"><!-- 此元素给输出文档创建元素节点的,元素的“name”属性是必需的 --> 
  22.         <xsl:attribute name="元素属性名称"><!-- 此元素是创建元素节点属性的 --> 
  23.             <!--此处添加属性值 --> 
  24.         </xsl:attribute> 
  25.     </xsl:element> 

    2.XPath的常用运算符

     通过上面的了解了基本的xsl元素,从上面可以看到我们有一些判断元素,那么我们就必须要有一些合适它的运算符进行判断,才能得出给予的条件是TRUE还是FALSE,下面就让我们了解常用的XPath运算符,如下:

     = (等于)、  !=(不等于)、 >(大于)、 <(小于)、 >=(大于等于)、 <=(小于等于)、  or(或)、 and(与)、 mod(计算除法的余数)等

   3.目前我总结的XPath常用那个函数,如下:

    (1)count(node-set)  返回 node-set 参数中的节点总数、返回值为整数;

    (2)position()  返回节点列表中当前节点的位置,即当前节点在整个节点列表中第几位的整数。

    (3)last()     返回节点列表中最后一位节点的位置

 根据上面的XSL和XPath知识,我们制作一个循环的有序列表,并且在偶数列中添加“even”类名、最后一列添加“last”类名,如下:

  1. <xsl:template match="/"> 
  2. <ul> 
  3.     <xsl:for-each select="/NewDataSet/Table"> 
  4.         <li> 
  5.             <xsl:if test="position() mod 2 =0"> 
  6.                 <xsl:attribute name="class"> even</xsl:attribute> 
  7.             </xsl:if> 
  8.             <xsl:if test="last()"><!-- 加入li节点为最后一个节点则添加last类名 --> 
  9.                 <xsl:attribute name="class"> last</xsl:attribute> 
  10.             </xsl:if> 
  11.             这是第<xsl:value-of select="position()"/>个li里面的内容  
  12.         </li> 
  13.     </xsl:for-each>   
  14. </ul> 
  15. </xsl:template> 

上面的模板转换的HTML代码结果将会如下所示(假如循环5次):

  1. <ul> 
  2.     <li>这是第1个li里面的内容</li> 
  3.     <li class=" even">这是第2个li里面的内容</li> 
  4.     <li>这是第3个li里面的内容</li> 
  5.     <li class=" even">这是第4个li里面的内容</li> 
  6.     <li class=" last">这是第5个li里面的内容</li> 
  7. </ul> 

    虽然上都是一些基本的XSL和XPath知识,但还是希这方面内容总结能够对大家有所帮助!上面的代码都是手工输入的,由于时间不是很充分,没有测试!若是出现错误,希望大家谅解并从中指出不足之处!