用户操作
[即时聊天] [发私信] [加为好友]
许式伟 ID:xushiweizh
429058次访问,排名111好友6人,关注者40
xushiweizh的文章
原创 125 篇
翻译 0 篇
转载 11 篇
评论 921 篇
许式伟的公告

本博客内容除非特殊说明均属原创,如需转载、引用其中的部分文字,请注意以下几点:

1)请在转载(引用)的内容开始添加本人署名,并提供本博客中相应文章的链接。如你的作品为非电子读物或纯文本,请给出链接的url。

2)请勿用于商业用途。

3)如果愿意,请给我邮件:xushiweizh@gmail.com,让我知道我的东西到哪去了。谢过。

重要链接

最近评论
sydii1225:一派胡言!

楼主请不要卖弄玄虚,很简单的东西,非要有意搞的那么复杂以显示自己的能力,这种心态不好!先学OO的都有这个毛病,其实我也不例外,不过我现在认识到了而已。

[窗口过程(WindowProc)是不可序列化的]
楼主,你知道user32.dll里面是什么东东么?

窗口类的作用,windows 程序设计 里面是有讲……
sydii1225:一派胡言!

楼主请不要卖弄玄虚,很简单的东西,非要有意搞的那么复杂以显示自己的能力,这种心态不好!先学OO的都有这个毛病,其实我也不例外,不过我现在认识到了而已。

[窗口过程(WindowProc)是不可序列化的]
楼主,你知道user32.dll里面是什么东东么?

窗口类的作用,windows 程序设计 里面是有讲……
kwlong2008:

来看看朋友,最近过的怎么样?俺的空间是介绍
网站制作网站建设的,有时间也常去一下我的空间谢谢!o(∩_∩)o...
yxmmrwx:嗯,这个好!
受用了,谢谢
waterwalk:刷屏了,不好意思~
文章分类
收藏
相册
DocX预览图
Google vs. 百度
WinX相关
WINX团队
ebasil的专栏(RSS)
VisualFC/WINX专栏(RSS)
任风行(一路奔跑)(RSS)
绅士亦花心之WINX相关(RSS)
许伟群的专栏(RSS)
友情链接
QWL1996的专栏(RSS)
Sting的专栏(RSS)
SunHui的专栏(RSS)
不亦快斋(RSS)
于无声处(RSS)
手机开发论坛
珠穆朗玛(老汉)(RSS)
福&柯实验室(RSS)
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创  TPL + Json + PHP = ?收藏

新一篇: stdext Relation: 数据表(DataTable) | 旧一篇: TPL文法(1):基础文法(TPL Basic Syntax)

TPL + Json + PHP = TPL + JSPT

这里,JSPT 是我发明的名词。它代表了 Json PHP Transformations = Json (Data) + PHP (Transformation Template)。为什么有这个词,是因为这个世界上还有一个著名的词:XSLT = XSL Transformations = XML (Data) + XSL (Transformation Template)。

我介绍 TPL 时,曾经把文本处理分为I和O。其中I是Parser,即将文本Parse为内存DOM结构,其中O是Formmatter,即将内存DOM结构转换为文本。其实还有第三个角色,就是Data。这里补充说明下:

TPL: 是I(Parser)模块。它将文本转为DOM。

Json/XML/etc: 它们的定位是,作为DOM的文本规范。我称之为Data。其实它们仍然是文本,需要Parser和Formmatter来处理它。但是它们的特殊之处在于 通常它们被看作为程序之间的交互规范,是DOM的Presentation(或者Persistence)。

PHP/XSL/etc: 是O(Formatter)模块。它们将DOM转为文本。通常O模块还有另一个名字,叫模板引擎(Template Engine)。这个世界上有太多的模板引擎。如:

但我个人更倾向于认为,PHP才是世上最棒的模板引擎 ── 这根本就是这个语言的定位。任何额外的封装其实是画蛇添足。

当然,对TPL而言,它并不排斥任何组合。TPL + XSLT,还是 TPL + JSPT (Json + PHP),还是其他,你来决定。

TPL + JSPT (Json + PHP)如何工作?

TPL + JSPT可将任意两种文本格式进行相互转换。假设我们要将 TextA 转为 TextB。那么实际转换的流程是:

  • TextA 由 TPL 分析,Parse为内存中的DOM。
  • 内存中的DOM,由一个JsonFormmatter转为Json文本。
  • Json文本由PHP的JsonParser模块转为内存中的DOM。
  • 最后,使用PHP强悍的Formmatter能力,转换为TextB格式。

前两步由TPL库提供。后两步由PHP完成。TPL与PHP的交互通过Json文本。

一个TPL + JSPT的样例:prjconv

prjconv是一个工程转换器。它可以将各种源代码的工程格式彼此进行转换。

代码参见:http://winx.googlecode.com/svn/trunk/tpl/JSPT/

发表于 @ 2008年07月07日 12:13:25|评论(loading...)|收藏

新一篇: stdext Relation: 数据表(DataTable) | 旧一篇: TPL文法(1):基础文法(TPL Basic Syntax)

评论

#jackhatedance 发表于2008-07-07 13:45:28  IP: 61.241.79.*
跟XSLT相比,如何?
#xushiweizh 发表于2008-07-07 14:29:38  IP: 221.218.7.*
不知道你注意过我的另一个开源项目DocX没有?它其实就是TPL(old version) + XSLT。XSLT有个问题,就是XSL程序员太少,而且比较难调试。我个人看好Json(相比XML)和PHP(相比XSL)。当然,你仍然可以选择XSLT。
#xushiweizh 发表于2008-07-07 14:30:26  IP: 221.216.104.*
接下来有时间我会改造DocX为基于TPL + JSON + PHP模型。
#xushiweizh 发表于2008-07-07 16:22:12  IP: 221.218.7.*
http://cpp.winxgui.com/cn:tpl-json-php
#wangzepen 发表于2008-07-08 19:19:53  IP: 116.26.171.*
http://www.ZzGps.Cn

http://www.ZzGps.Cn/Class.asp?ID=34 在线技术视频

http://www.ZzGps.Cn/wz 关于各技术文章绘萃

http://www.ZzGps.Cn/bbs/index.asp 上千视频下载
#wangzepen 发表于2008-07-08 19:20:00  IP: 116.26.171.*
http://www.ZzGps.Cn

http://www.ZzGps.Cn/Class.asp?ID=34 在线技术视频

http://www.ZzGps.Cn/wz 关于各技术文章绘萃

http://www.ZzGps.Cn/bbs/index.asp 上千视频下载
#lidaobing 发表于2008-07-10 13:06:53  IP: 219.131.196.*
我反对继续继续使用 PHP 做为模板引擎
1. PHP功能太强,程序员会忍不住在里面加上程序逻辑, 程序逻辑和页面展现应当严格分离
2. 对于美工人员它又过于复杂了
3. 现有的模板技术(简单的用 template, 复杂的用 javascript) 已经能处理得很好了
#xushiweizh 发表于2008-07-12 07:42:38  IP: 125.89.16.*
我个人倾向于使用强大的东西(当然是不减少方便性为前提)—— 任何封装都是有漏洞的。所有的模板引擎都最终倾向于成为另一个PHP。另外,任何语言都可以被优美的使用,也可以用得很蹩脚(包括模板引擎),问题出在工程管理上,不是语言。也许这个问题在C++上更加突出,但这不影响我对C++的喜爱 —— C++是这世上设计最优秀的语言(也许有很多人有很多理由炮轰这句话,不过我并不打算继续进行争辩)。
#Lxyer 发表于2008-07-14 17:56:28  IP: 116.24.47.*
这个例子看起来挺不错的,tpl-1.0.00里面怎么没有相应的头文件.
#xushiweizh 发表于2008-07-15 15:57:56  IP: 218.13.231.*
这个例子最近才写的,在下一次的tpl发布中会包含相关内容。目前可从svn trunk中得到:
svn checkout http://winx.googlecode.com/svn/trunk/
#dvaknheo 发表于2008-07-17 15:07:54  IP: 124.205.137.*
说到文档转换 我做了一个,由程序员约定,美工的静态页面作为模板的一个PHP项目。

tagfeather.googlecode.com

这里有个例子
http://www.tagfeather.com/t/test/all.php

排列
1|2|3
4|5|6
7|X|X
这样的例子,只有 tagfeather 能做到所见所得
==========
原理是:做允许带 <? <% 的 SAX 解析,用钩子函数解决一切,默认钩子函数放弃处理标签名称,而是根据标签属性来做动作。
分配型标签把当前标签的其他属性附加给符合条件的特定标签。最后输出文本。

======================
我现在的困惑是:不知道如何让更多人了解。我不像你有那么大的影响力
新的版本即将发布了。我这几天都在写参考手册。
#longshanks 发表于2008-07-20 07:17:37  IP: 124.76.97.*
PHP+XQuery怎么样?有谁试过吗?
XQuery亲和力比XSLT强些,容易上手,适合数据访问。
#lidaobing 发表于2008-07-24 13:11:55  IP: 219.131.196.*
我觉得现在已经不是仅从研究的角度来看待一门计算机语言的时代了, 我们不能把语言过于复杂造成的问题直接推给工程管理了。

我的观点是 C++ 对于个人来说,非常好使。对于工程来说,则性价比太差,过高的学习成本,过高的管理要求妨碍了他的推广。

另外我不觉得模板引擎会变成 PHP, 因为现在的模板引擎只需实现少数的几个需求: 继承其他模板, 循环, 分支, 格式化。未来也看不到需要变成 PHP 的需求。
#xushiweizh 发表于2008-07-24 20:31:53  IP: 221.219.222.*
C++,这里就不继续讨论了。
关于模板引擎,没错,就是只有流程控制和格式化两个需求。不过需要注意的是,这里其实在循环定义。什么是模板引擎?不就是格式化引擎吗?那么这个引擎需要内置多少种格式化函数呢?我的意见是,多少种都不够!
#xushiweizh 发表于2008-07-24 20:37:31  IP: 221.219.222.*
这里我补充一下我认为“模板引擎”变成“另一个PHP”的界限:当模板引擎支持用户自定义函数时,那么我就认为,它其实是“另一个PHP”。避免这一事件的发生,模板引擎唯一可以做的事情,就是不断扩展它的函数库,来适应新的格式化需求。
#xushiweizh 发表于2008-07-24 20:39:23  IP: 221.219.222.*
这里我补充一下我认为“模板引擎”变成“另一个PHP”的界限:当模板引擎支持用户自定义函数时,那么我就认为,它其实是“另一个PHP”。避免这一事件的发生,模板引擎唯一可以做的事情,就是不断扩展它的函数库,来适应新的格式化需求。
#lidaobing 发表于2008-07-25 14:04:15  IP: 219.131.196.*
我只了解过 django 的模板引擎, django 的做法是用户自定义函数不在模板里,而不是属于你程序的一部分,这些函数在导入你的模块后可以被使用。

我觉得一个好的模板引擎不应当对写模板的人有任何程序能力上的要求,一个专注的美工人员能使用的模板引擎才能算是有效的引擎。
#lidaobing 发表于2008-07-25 14:05:18  IP: 219.131.196.*
刚才错了一个字,重发

我只了解过 django 的模板引擎, django 的做法是用户自定义函数不在模板里,而是属于你程序的一部分,这些函数在导入你的模块后可以被使用。

我觉得一个好的模板引擎不应当对写模板的人有任何程序能力上的要求,一个专注的美工人员能使用的模板引擎才能算是有效的引擎。
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 许式伟