ClearSilver模板编程概述_转

ClearSilver模板编程:

                                  http://blog.csdn.net/fanlinsun/article/details/8491481

1. 概述:

clearsilver是一个用C语言实现的高性能的html模版系统.

CS 模板系统包含两个组成部分:Dataset和Template Files。

其中Dataset 为一种树状的数据结构,它被Template Files所引用,并生成最后的页面.

Template Files 通常为静态页面元素以及CS 语句的组合,其中的CS 语句通过变量名称来引用dataset中的数据,并通过一定的语法规则生成动态的内容。

引入CS之后,我们可以将静态的页面元素写入到模板文件中,而将XML数据源以及后台的参数导入到Dataset数据结构中,通过CS的库函数调用Dataset和Template File来生成整个动态页面。

CS文件本身不符合XML规范。

2. 变量的替换和定义

包含:var,evar,lvar,include,linclude,set,name。

常用:var,include,linclude,set

<?cs var:code?>,这个简单的语句就会把code值打印出来

<?cs include:”util”?>把文件包含进来

<?cs linclude:”AAAA.cs”?> 执行文件AAAA.cs中的代码。

<?cs set:account=””?>把account设定值为空。

<?cs set:i=#5?>CS模板中数字都写成#1,#2的形式。

3. 控制语句:

命令有:if, else, elif, alt

<?cs if:#1?>

当前数字是1

<?cs elif:#2?>

当前数字是2

<?cs else?>

数字为其他

<?cs /if?>

4. 迭代语句

命令有:each, loop, with

常用:each

<?cs each:items=res.item?>   遍历

<?cs    var:items?>

<?cs /each?>

<?cs loop:x = #1, #205, #2 ?><?cs var:x ?>, <?cs /loop ?>  循环,输出:1,3,5,...,205

<?cs loop:x = #205, #1, "-2" ?><?cs var:x ?>, <?cs /loop ?>  循环,输出:205, 203, 201, ... 1

5,宏

宏的命令:def, call

def,定义宏的命令

<?cs def:map_val(val, map) ?>    //遍历map,输出与val相等的值

<?cs    each:item = map ?>

<?cs        if:val == item ?>

<?cs            var:item.val ?>

<?cs        /if ?>

<?cs    /each ?>

<?cs /def ?>

<?cs call:map_val(val,map)?>  调用函数(宏)

6. 函数

subcount(var),这个函数返回子节点的个数

string.slice(expr, start, end),切片操作,相当于substring

string.find(string, substr),查找函数,它会返回substr表达式的数字位置(如果找到的话),否则返回-1

string.length(expr)

url_escape(string);

//This URL encodes the string.

//This converts characters such as ?, &, and = into their URL safe equivilants using the %hh syntax.

7. cs中的扩展语法:

CS中的Macros:

CS中的自定义函数都是以宏的形式存在的,所以在函数中的空格,将会返回在调用的结果中

如果不想输出空格,函数体中不能留空格

8. 注释: <!-- 注释内容-->

ClearSilver模板编程概述_转

时间: 2024-10-07 23:56:45

ClearSilver模板编程概述_转的相关文章

C++ 11可变参数接口设计在模板编程中应用的一点点总结

概述 本人对模板编程的应用并非很深,若要用一句话总结我个人对模板编程的理解,我想说的是:模板编程是对类定义的弱化. 如何理解“类定义的弱化”? 一个完整的类有如下几部分组成: 类的名称: 类的成员变量(或属性,C#中属性和成员变量还是有区别的): 类的成员方法: 从编译器的角度看,我们必须明确指定以上3部分,才算完整地定义了一个类并且编译通过. 所谓的“类弱化”,是指类的设计者在定义类的时候,并没有完整定义一个类,而是把类的其中一部分的定义留给类的使用者. 从传统才c++98看,通过模板类,使用

C++ Primer 学习笔记_65_面向对象编程 --概述、定义基类和派生类

面向对象编程 --概述.定义基类和派生类 引言: 面向对象编程基于的三个基本概念:数据抽象.继承和动态绑定. 在C++中,用类进行数据抽象,用类派生从一个类继承另一个:派生类继承基类的成员.动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数. 继承和动态绑定在两个方面简化了我们的程序:[继承]能够容易地定义与其他类相似但又不相同的新类,[派生]能够更容易地编写忽略这些相似类型之间区别的程序. 面向对象编程:概述 面向对象编程的关键思想是多态性(polymorphism)

C++ Primer 学习笔记_65_面向对象编程 -概述、定义基类跟派生类

面向对象编程 --概述.定义基类和派生类 引言: 面向对象编程基于的三个基本概念:数据抽象.继承和动态绑定. 在C++中,用类进行数据抽象,用类派生从一个类继承另一个:派生类继承基类的成员.动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数. 继承和动态绑定在两个方面简化了我们的程序:[继承]能够容易地定义与其他类相似但又不相同的新类,[派生]能够更容易地编写忽略这些相似类型之间区别的程序. 面向对象编程:概述 面向对象编程的关键思想是多态性(polymorphism)

【足迹C++primer】51、面向对象编程概述

面向对象编程概述 继承(Inheritance) class Quote { public: Quote(){cout<<"Quote的构造函数!"<<endl;} string isbn() const {cout<<"Quote的isbn()调用!"<<endl; string s="Quote,isbn"; return s;} virtual double net_price(size_t

框架编程概述 (转载)

框架编程概述 http://blog.chinaunix.net/u2/65993/showart_576137.html一个HTML页面可以有一个或多个子框架,这些子框架以<iframe>来标记,用来显示一个独立的HTML页面.这里所讲的框架编程包括框架的自我控制以及框架之间的互相访问,例如从一个框架中引用另一个框架中的JavaScript变量.调用其他框架内的函数.控制另一个框架中表单的行为等. 框架间的互相引用 一个页面中的所有框架以集合的形式作为window对象的属性提供,例如:win

c++模板编程-typename与class关键字的区别

最近一直在研究c++模板编程,虽然有些困难,但希望能够坚持下去.今天,在书上看见一个讨论模板编程typename与class两个关键字的区别,觉得挺有意义的,就把它们给总结一下. 先看一个例子: template<typename C> typename C::value_type sum(C &c){ typedef typename C::value_type value_type; typedef typename C::iterator iterator; value_type

C++模板编程

如何处理函数模板中的函数体? 预备知识补充: 按照c++的语言系统,普通函数及类的声明应该放在一个头文件中(通常是.h. .hpp..hh为扩展名)里: 而将其实现放在一个主代码文件中(通常以.c ..cpp. .cc为扩展名)里:这样便于将代码分散编译到多个目标文件中,最后通过链接形成一个完整的目标文件: “头文件放声明. 主文件放实现” 但上述规则并不适用于模板: C++模板编程,布布扣,bubuko.com

[C++]C++的模板编程

我是搬运工,原文地址:http://www.cppblog.com/besterChen/archive/2010/07/22/121000.html 当我们越来越多的使用C++的特性, 将越来越多的问题和事物抽象成对象时, 我们不难发现:很多对象都具有共性. 比如 数值可以增加.减少:字符串也可以增加减少. 它们的动作是相似的, 只是对象的类型不同而已. C++ 提供了“模板”这一特性, 可以将“类型” 参数化, 使得编写的代码更具有通用性. 因此大家都称模板编程为 “通用编程”或 “泛型编程

Android网络编程概述

Android网络编程概述 首先,应该了解的几个问题: 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包套接字(socket).Internet协议.常见Http处理等.比如:创建URL,以及URLConnection/HttpURLConnection对象.设置链接参数.链接到服务器.向服务器写数据.从服务器读取数据等通信.这些在Java网络编程中均有涉及. b) Org.apache接口 对于大部