Xslt笔记

 

Xslt笔记

 

最近处理一些任务需要用到xslt,所以在这方面初步的学习了下,感觉不错,但不敢独享,故将一些收集到的笔记整理了下,给大家分享。

Ps:另外,怕一次写多了,大家没耐心看下去,所以这次先整理一些最基础的东西,想入门的可以花点耐心看下。

 

简介

可扩展样式表语言转换(Extensible Stylesheet Language TransformationsXSLT)允许您描述将输入 XML 文档转换为输出树(例如 XMLHTML 或文本)。它可用于复杂的 XML 文档表示,或者用于转换不同的 XML 格式。

我们系统大量的应用了xml+xsl=html的方式来画一些静态的表单。因为xml本身是无任何意义的,它只是一堆数据而已,所以除了我们开发人员能看懂外给用户是毫无意义的。Xslt就可以将我们取得的数据很好的解释出来,并且呈现给用户。你可以这样理解,XSLXML其实都是HTML的一部分,只不过把数据部分抽取出来放在XML中,而样式与逻辑部分放在XSL中。这样做的好处是,当客户要求修改表单的格式和样式时,我们只需要修改xslt即可,更重要的是xslt是一种解释性的语言,我们不用编译程序就可以轻轻松松的即时的得到修改后的效果。

 

用法

Xslt做为一种语言当然有它的语法,这里就不一一列出了,大家可以通过很多渠道得来,我们下面主要举几个简单的例子,看看怎样实现xml+xslt=html

现在有一个如下的一份xml(姑且叫它a.xml)

<?xml version="1.0" encoding="utf-8" ?>

<catalog>

  <cd>

    <title ifShow="1">Empire Burlesque</title>

    <artist>Bob Dylan</artist>

    <country>USA</country>

    <company>Columbia</company>

    <price>1000.90</price>

    <year>1985</year>

  </cd>

  <cd>

    <title ifShow="2">Hide your heart</title>

    <artist>Bonnie Tyler</artist>

    <country>UK</country>

    <company>CBS Records</company>

    <price>9999.90</price>

    <year>1988</year>

  </cd>

  <cd>

    <title ifShow="3">Greatest Hits</title>

    <artist>Dolly Parton</artist>

    <country>USA</country>

    <company>RCA</company>

    <price>9.90</price>

    <year>1982</year>

  </cd>

</catalog>

 

这样的数据呈现给用户是毫无意义的,看下面的xslt文件(文件名为:a.xslt

 

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="/">     <!--  这是xslt解释的入口,它会逐行的进行解释 -->

    <html>                      <!--  这里直接解释成一个html表单,我们也可以解释成其它的html

      <body>                                                             识别的标记 -->

        <h2>My CD Collection</h2>

        <table border="1">

          <tr bgcolor="#9acd32">

            <th align="left">Title</th>

            <th align="left">Artist</th>

          </tr>

          <xsl:for-each select="catalog/cd"> <!--  这里是一个循环-->              

<tr>

              <td>

                <xsl:value-of select="title/@ifShow" />  <!--  这里是访问其属性值-->

              </td>

 

              <td>

                <xsl:value-of select="title" />    <!--  这里是访问其节点的值-->

              </td>

              <td>

                <xsl:value-of select="artist" />

              </td>

            </tr>

          </xsl:for-each>

        </table>

      </body>

    </html>

  </xsl:template>

</xsl:stylesheet>

 

最后我们在定义一个这样的页面就可以得到一个画好的表格:

<html>

<body>

 

<script type="text/javascript">

 

// 加载XML

var xml = new ActiveXObject("Microsoft.XMLDOM")

xml.async = false

xml.load("a.xml")

 

// 加载XSL

var xsl = new ActiveXObject("Microsoft.XMLDOM")

xsl.async = false

xsl.load("a.xsl")

 

//解释

document.write(xml.transformNode(xsl))

 

</script>

 

</body>

</html>

 

结果如下: 

 

 

  总结

 

上面只是举了一个最简单的例子。个人觉得要想学好这个东西,其实没有捷径,只有不断的实践。下面是我在做的过程中发现的几个需要注意的地方:

1、  xmlxslt的空格处理;

2、  xslt的特殊字符的处理,特别是“<”和“>”;

3、  xslt中的判断时数据类型的取舍,特别是对那些数字,但又可以做字符用的数据;

4、  注意xslt的程式结构,当其表单较为复杂和大时,学会将各个可以独立的单元独立出来,便于以后的维护和阅读;

5、  其他问题,需要大家在开发的过程中一起发现和总结。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值