﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-canonical-文章分类-Witrix开发平台</title><link>http://www.blogjava.net/canonical/category/4830.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 14:08:00 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 14:08:00 GMT</pubDate><ttl>60</ttl><item><title>[导入]可运行的配置文件</title><link>http://www.blogjava.net/canonical/articles/19697.html</link><dc:creator>canonical</dc:creator><author>canonical</author><pubDate>Mon, 14 Nov 2005 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/canonical/articles/19697.html</guid><wfw:comment>http://www.blogjava.net/canonical/comments/19697.html</wfw:comment><comments>http://www.blogjava.net/canonical/articles/19697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/canonical/comments/commentRss/19697.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/canonical/services/trackbacks/19697.html</trackback:ping><description><![CDATA[<!--StartFragment -->
<P><FONT color=#000000 size=3>&nbsp;&nbsp;&nbsp; 传统上，设计了一种配置文件的格式之后我们需要实现一个相应的解释器(interpreter)来解析该配置文件并执行相应的动作。一个配置文件其实就是一个微型的DSL(Domain Specific Language)。配置文件采用xml格式是一种理想的方式，因为xml是自说明的(self-descriptive)，不再需要额外的文档我们就可以直接理解配置文件的结构。但是我们仍然无法避免编写配置文件解释器的工作。Apache项目组的Digester项目</FONT><A href="http://jakarta.apache.org/commons/digester/"><FONT size=3>http://jakarta.apache.org/commons/digester/</FONT></A><FONT size=3> <FONT color=#000000>试图以通用的方式实现解析规则与xml数据文件的结合，但其目前所完成的功能仍然是原始的，不完备的。<BR>&nbsp;&nbsp;&nbsp; 在witrix平台中，借助于tpl模板语言，我们以一种精致的方式突破了这一传统障碍，使得配置文件不仅是自说明的，而且可以在不需要特制解释器的情况下按照统一的tpl语言规则自动运行。例如:<BR>&nbsp;&nbsp;&nbsp; ＜config＞<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ＜potlet id="a"＞<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ＜view＞<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ＜portlet:iframe src="x.jsp" /＞<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ＜/view＞<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ＜/portlet＞</FONT></FONT></P>
<P><FONT color=#000000 size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ＜portlet id="b"＞<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ＜view＞<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ＜web:jsplet objectName="MyObject" initEvent="query" /＞<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ＜/view＞<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ＜/portlet＞<BR>&nbsp;&nbsp;&nbsp; ＜/config＞<BR>&nbsp;&nbsp;&nbsp; 在以上的配置文件中我们配置了第一个portlet以iframe的方式进行展示，而第二个portlet以WebObject的方式通过jsplet框架进行展示。这种配置文件是可以通过一个简单的配置工具进行管理的，但是其中的view部分不仅仅是对配置数据的一种记录，它还可以被直接送入到tpl模板引擎中运行。在这种意义上说，tpl模板语言不仅仅是一种易于编写(editable)的语言，它更是一种易于配置(configurable)的语言。</FONT></P><img src ="http://www.blogjava.net/canonical/aggbug/19697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/canonical/" target="_blank">canonical</a> 2005-11-14 15:37 <a href="http://www.blogjava.net/canonical/articles/19697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>