<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>卡儿是个人</title>
<link>http://blogger.org.cn/blog/blog.asp?name=kaer</link>
<description>卡儿的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[BIRT：基于 Eclipse 的报表]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kaer&amp;id=17524</link>
<author>kaer</author>
<pubDate>2006/8/14 19:08:25</pubDate>
<description><![CDATA[<a>　
</a><p><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr valign="top"><td width="100%"><h1>BIRT：基于 Eclipse 的报表</h1><img class="display-img" alt="" src="http://www.ibm.com/i/c.gif" height="6" width="1"></td><td class="no-print" width="192"><br></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr valign="top"><td width="10"><img alt="" src="http://www.ibm.com/i/c.gif" height="1" width="10"></td><td width="100%"><table class="no-print" align="right" border="0" cellpadding="0" cellspacing="0" width="160"><tbody><tr><td width="10"><img alt="" src="http://www.ibm.com/i/c.gif" height="1" width="10"></td><td><table border="0" cellpadding="0" cellspacing="0" width="150"><tbody><tr><td class="v14-header-1-small"><br></td></tr></tbody></table><table class="v14-gray-table-border" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="no-padding" width="150">&lt;&gt;<img src="http://www.ibm.com/i/c.gif" alt="" height="1" width="8"> <table border="0" cellpadding="0" cellspacing="0" width="143"><form name="email" action="https://www-128.ibm.com/developerworks/secure/email-it.jsp"></form><script language="JavaScript" type="text/javascript"></script> <tbody><tr valign="top"><td width="8"><img alt="" src="http://www.ibm.com/i/c.gif" height="1" width="8"></td><td width="16"><br></td><td width="122"><br></td></tr><noscript></noscript></tbody></table></td></tr></tbody></table><!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- 03/20/06 updated by gretchen --><br><table border="0" cellpadding="0" cellspacing="0" width="150"><tbody><tr><td class="v14-header-2-small"><br></td></tr></tbody></table><table class="v14-gray-table-border" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="no-padding" width="150"><table border="0" cellpadding="0" cellspacing="0" width="143"><tbody><tr valign="top"><td width="8"><img alt="" src="http://www.ibm.com/i/c.gif" height="1" width="8"></td><td><br></td><td width="125"><br></td></tr></tbody></table></td></tr></tbody></table><!--END RESERVED FOR FUTURE USE INCLUDE FILES--><br></td></tr></tbody></table><p><a href="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/#author"><font color="#996699">胡键 </font></a>, 西安交通大学硕士<br></p><p>2006 年 3 月 22 日</p><blockquote>几乎在各种应用中，报表都具有其不可替代的作用。各类报表软件也是争奇斗艳，如今Eclipse也推出了自己的报表框架：BIRT。现在，让我们不妨看看它到底提供了什么样的功能，以及特点是什么。</blockquote><!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--END RESERVED FOR FUTURE USE INCLUDE FILES--><p><a name="IDANC2ZC"><span class="atitle"><strong><font size="4">安装介绍</font></strong></span></a></p><p>对于扩展Eclipse的功能，首先当然就是去下载对应的plugin，BIRT也不能例外。BIRT的下载地址：<a href="http://download.eclipse.org/birt/downloads/"><font color="#996699">http://download.eclipse.org/birt/downloads/</font></a>，
当前版本是2.0。BIRT依赖于Eclipse的其它几个plugin（GEF和EMF），由于我使用的是Eclipse
WTP（这是Eclipse的WEB开发工具），在这个工具中那些plugin都已预装，因此直接下载birt-report-framework-
2_0_0.zip就好了。如果没有这些plugin，请下载。</p><p>下载之后，安装非常简单：只需解压然后将对应的features和plugins目录中的内容复制到Eclipse对应的目录下即可。且慢，这只是完成了对于BIRT的基本安装。下一步就是去下载BIRT需要的第三方软件包：</p><table class="data-table-1" border="1" cellpadding="0" cellspacing="0" width="650"><tbody><tr><th> <br></th><th>需要的jar文件</th><th>复制位置（都在plugins目录下）</th></tr><tr><th class="tb-row"><a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2_1"><font color="#5c81a7">Apache Axis</font></a></th><td>axis.jar<br>axis-ant.jar<br>commons-discovery-0.2.jar<br>jaxrpc.jar<br>saaj.jar<br>wsdl4j-1.5.1.jar<br></td><td>org.eclipse.birt.report.viewer_version/birt/WEB-INF/Lib</td></tr><tr><th class="tb-row"><a href="http://www.lowagie.com/iText/download.html"><font color="#5c81a7">iText 1.3</font></a></th><td>itext-1.3.jar</td><td>org.eclipse.birt.report.engine.emitter.pdf_version/lib</td></tr><tr><th class="tb-row"><a href="http://dev.conio.net/repos/prototype/dist/"><font color="#5c81a7">prototype.js v1.4.0</font></a></th><td>prototype.js v1.4.0</td><td>org.eclipse.birt.report.viewer_version/birt/ajax/lib</td></tr></tbody></table><p>自此，BIRT的安装大功告成。启动Eclipse，在"project wizard"中会出现一个BIRT的项目类型。</p><br><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" height="1" width="805"><br><img alt="" src="http://www.ibm.com/i/c.gif" border="0" height="6" width="8"></td></tr></tbody></table><table class="no-print" align="right" cellpadding="0" cellspacing="0"><tbody><tr align="right"><td><img alt="" src="http://www.ibm.com/i/c.gif" height="4" width="78"><br><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td valign="middle"><img alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" border="0" height="16" width="16"><br></td><td align="right" valign="top"><a class="fbox" href="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/#main"><b><font color="#996699">回页首</font></b></a></td></tr></tbody></table></td></tr></tbody></table><br><br><p><a name="IDAIE2ZC"><span class="atitle"><strong><font size="4">典型使用</font></strong></span></a></p><p>在使用之前，了解一些关于BIRT的基本概念，将会对使用非常有益：</p><ul><li>数据源：数据的来源，或提供者。如xml数据源、jdbc数据源等。 </li><li>数据集：数据集合，它必须与数据源关联，可以理解为查询的结果。 </li><li>报表以及报表项，报表可视为是针对一组数据集的表现形式，而报表项这是这个表现形式的某个具体的单元。它们之间的关系，与窗体和控件的关系非常类似。报表、数据集、数据源三者间的关系：数据源 --- 数据集 --- 报表。 </li><li>报表参数：查询参数的表现形式，使用它可以构建更灵活的报表。 </li><li>模板和库：主要用于复用报表设计，提高报表开发的效率。</li></ul><p>本文中的例子都采用jdbc数据源，这是最常见的使用情形，其中涉及的数据关系是一个典型的多对多关系：</p><br><img alt="" src="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/images/image004.gif" border="0" height="174" width="383"><br><p><a name="IDACF2ZC"><span class="smalltitle"><strong>1. 简单报表</strong></span></a></p><p>首先，让我们来看看一个"Hello World"级别的应用："列出所有用户"，以便可以快速的了解BIRT。为了完成这一任务，我们需要：</p><p>A. 通过项目向导，创建BIRT工程。工程创建完毕之后，显示BIRT的"报表设计"视图。由于此时没有报表，其它几个视图，如"数据资源管理器"，不可用。</p><br><img alt="" src="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/images/image006.jpg" border="0" height="399" width="552"><br><p>B. 在项目上点鼠标右键，选择："new -&gt; 报表"。在报表类型中，选择"空白报表"。</p><p>C. 创建新报表后，数据视图可用。在"数据资源管理器"中创建报表所需要的jdbc数据源。根据向导，可以方便的添加jdbc驱动、数据库url、用户名和密码。</p><p>D. 在指定的数据源上，创建数据集，这一步完成产生数据集的查询。在BIRT中支持2种数据集：基于查询语句和基于存储过程。在本例中使用前者，对应的查询语句是：<code><font face="Courier">select user.userid, user.username, user.addr from user</font></code>。</p><p>E. 选择刚刚创建的数据集，将它拖至空白报表页上。BIRT会自动为其创建一个报表项，此处是"表"。如下图：</p><br><img alt="" src="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/images/image008.jpg" border="0" height="437" width="553"><br><p>F. 选择预览，就可以看到报表运行的实际结果了。或在报表上点击鼠标右键，选择："报表 -&gt; 运行报表"。</p><p>非常简单，一个显示所有用户信息的报表就完成了。在此基础之上，让我们再来完成一些其它具有挑战性的任务：</p><p>1.格式化：这是一个内容广泛的主题，常见的需求：</p><table class="data-table-1" border="1" cellpadding="0" cellspacing="0" width="650"><tbody><tr><th>需求</th><th>解决办法（以上为例）</th></tr><tr><th class="tb-row">显示报表列头为中文</th><td>如：将userid显示为"用户标识"。<br>选择"userid"，输入"用户标识"。</td></tr><tr><th class="tb-row">设置报表外观</th><td>选择对应的报表项，通过"属性编辑器"调整。</td></tr><tr><th class="tb-row">对于报表数据列进行处理</th><td>如：将userid和username，显示成：userid：username。双击row["userid"]，出现"表达式生成器"，输入： <code><font face="Courier">row["userid"]+"："+ row["username"]</font></code></td></tr><tr><th class="tb-row">分页</th><td>选择"表"：在"属性编辑器"中，选择"分页符"，在"分页符间隔"中输入分页大小。</td></tr><tr><th class="tb-row">页眉和页脚</th><td>在报表设计页，选择"主页"，在其中设置页眉和页脚。</td></tr></tbody></table><p>2.排序：一种变通的做法是：将数据集排序之后，如在对应的SQL语句中使用order by，再显示。除此之外，也可以在报表设计时来完成：</p><p>A. 选择表，此时属性编辑器下方会出现与表相关的选择页。</p><br><img alt="" src="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/images/image010.jpg" border="0" height="34" width="351"><br><p>B. 选择"排序"，在对应的页面中选择"添加"按钮之后，出现：</p><br><img alt="" src="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/images/image012.jpg" border="0" height="88" width="554"><br><p>C. 选择需要进行排序的列，以及排序方式。</p><p>3.计算列：通过"数据集编辑器"来完成。进入"数据集编辑器后"，选择"计算列"：输入对应的"列名称"、"数据类型"和"表达式"。</p><p>4.报表参数：它为报表的产生带来了极大的灵活性。报表参数一定是与含参数的查询对应的，否则失去了意义。现在，将以上需求改为列出"用户标识大于某一输入的所有用户"：</p><p>A. 编辑数据集，修改SQL：<code><font face="Courier">select user.userid,user.username,user.addr from user where user.userid&gt;?</font></code>。</p><p>B. 在数据集编辑窗体内选择"参数"，然后输入对应的"名称"、"数据类型"、"方向"和"默认值"（必须给出默认值）。其中"方向"表示"输入"或"输出"。对于参数，一般选"输入"。完毕之后：</p><br><img alt="" src="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/images/image014.jpg" border="0" height="92" width="554"><br><p>C. 在"数据资源管理器"视图，创建报表参数："用户标识"。</p><p>D. 选择"表"，在"属性编辑器"中选择"绑定"。此时，会出现刚才在数据集中定义的参数"id"。在"值"列，选择报表参数"用户标识"：</p><br><img alt="" src="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/images/image016.jpg" border="0" height="86" width="553"><br><p>E. 运行报表时，此时会出现报表参数的输入框，填写值后即出现报表结果。</p><p>本例虽然只定义了一个报表参数，但是BIRT并没有这样的限制。我们可以创建多个参数，做法很简单：首先，查询有多个参数；定义数据集的参数时，按照查询中参数出现的顺序定义；最后，添加需要的报表参数。</p><p>5.分组：以上为例：将用户按地址分组。</p><p>A. 选择"表"，点击鼠标右键，选择"插入组"。这里有两个选择："在上面"和"在下面"。</p><p>B. 选择任意一种，弹出分组资料窗体。填写其中的："名称"和"分组依据"。在本例中，"分组依据"是addr列。</p><p>C. 选择预览，或运行报表，查看结果。</p><p><a name="IDAESG1C"><span class="smalltitle"><strong>2. 子报表</strong></span></a></p><p>子报表是另一种最常见的报表，以上为例：列出所有用户，并列出每个用户所购买的项目，以及项目数。为了完成这种父子关系的报表，需要：</p><p>A. 创建新报表和数据源。</p><p>B. 创建数据集user，使用SQL：select user.userid,user.username,user.addr from user。</p><p>C. 创建数据集items，使用SQL：</p><br><table bgcolor="#eeeeee" border="1" cellpadding="5" cellspacing="0" width="100%"><tbody><tr><td><pre><code class="section"><br><font face="Lucida Console">select item.itemid,item.itemdesc,item.price,user_item.count from item,user_item<br>where item.itemid= user_item.itemid<br>  and user_item.userid= ?<br>  </font></code></pre></td></tr></tbody></table><br><p>同时在数据集items上创建参数user，它对应SQL中的参数。</p><p>D. 从"Palette"视图拖入"列表"到报表中，在"属性编辑器"的"绑定"页中，选择数据集为user。它用来显示主表的信息，在本例中是用户信息。</p><p>E. 从"Palette"视图拖入"网格"到"列表"的"明细数据"中，设置网格为1行2列，它用来存放"用户姓名"和"用户地址"。在"数据资源管理器"视图，选择数据集user，将username和addr分别拖入网格的2列中。</p><p>F. 在"数据资源管理器"视图，选择数据集items，将它拖入"列表"的"明细数据"中，位于刚刚插入的网格下方。此时，BIRT会生成数据集items对应的"表"。</p><p>G. 选择刚刚生成的"表"，在"属性编辑器"的"绑定"页中，会出现在items中定义的参数。修改它的值：row["userid"]。于是，父子报表就发生了联系。</p><p>H. 选择预览，或运行报表，就可以看到结果了。</p><p>很遗憾，到目前为止，另一种最常见的报表"交叉表"还不被BIRT支持。但是，BIRT的官方网站已明确表示，将在未来的版本中支持它。</p><p><a name="IDA1SG1C"><span class="smalltitle"><strong>3. 统计图表</strong></span></a></p><p>俗话说，"一图顶千言"。没有图的报表是枯燥，且缺乏表现力的。在本例中，我们将使用图表来表示：每个用户的消费总数。</p><p>A. 创建新报表和数据源。</p><p>B. 创建数据集chart，使用SQL：</p><br><table bgcolor="#eeeeee" border="1" cellpadding="5" cellspacing="0" width="100%"><tbody><tr><td><pre><code class="section"><br><font face="Lucida Console">select user.username,round(sum(item.price*user_item.count),2)<br>from item, user_item, user<br>where item.itemid= user_item.itemid<br>  and user.userid= user_item.userid<br>group by user.username<br></font></code></pre></td></tr></tbody></table><br><p>C. 从"Palette"视图拖入"图表"到报表中，此时会弹出"编辑图表"窗体。</p><p>D. 在"选择图表类型"页，选择图表类型为"条形图"。在"选择数据"页，使用数据集chart，同时选中username列，将其拖入"类别x系列"。对于统计列，同样将其拖入"类别y系列"。在"图表格式"页，分别为x和y系列，填写相应的显示名称。</p><p>E. 选择预览，或运行报表，即可看到统计图表。</p><p><a name="IDANTG1C"><span class="smalltitle"><strong>4. 使用脚本</strong></span></a></p><p>可以使用脚本，是BIRT的一大特色。在BIRT中，数据源、数据集和报表项，都可以书写脚本。具体做法：选择数据源、数据集和报表项任意一种对象，然后选择"脚本"页面。如选择数据源user后，对应的脚本输入页面：</p><br><img alt="" src="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/images/image018.jpg" border="0" height="187" width="482"><br><p>选择对应的事件，然后在下方的脚本输入框中输入脚本即可。如对于第一个例子，我们需要统计用户地址是"No.5 St."的用户数：</p><p>A. 选择数据集，然后选择"脚本"，进入数据集的脚本编辑窗口。</p><p>B. 选择事件"afterOpen"，在脚本窗口内输入：count=0;</p><p>C. 选择事件"onFetch"，在脚本窗口内输入：if( row["addr"]== "No.5 St.") count++;</p><p>D. 选择报表，在脚本窗口选择事件"onRender"，输入：this.caption=count;</p><p>E. 预览，或运行报表后，会在报表的标题输出count的数值。</p><p>另外，BIRT也支持使用java来作为报表项的事件处理程序。具体做法，请参见BIRT的帮助文档。</p><p><a name="IDAHUG1C"><span class="smalltitle"><strong>5. 库和模板</strong></span></a></p><p>除了脚本使开发者可以自定义报表的行为外，BIRT还提供了库和模板机制来重用设计，加快报表的开发。在TheServerSide上有一篇相当详细的文档：<a href="http://www.theserverside.com/articles/article.tss?l=EclipseBRT"><font color="#5c81a7">Using Eclipse BIRT Report Libraries and Templates</font></a>。</p><br><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" height="1" width="805"><br><img alt="" src="http://www.ibm.com/i/c.gif" border="0" height="6" width="8"></td></tr></tbody></table><table class="no-print" align="right" cellpadding="0" cellspacing="0"><tbody><tr align="right"><td><img alt="" src="http://www.ibm.com/i/c.gif" height="4" width="78"><br><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td valign="middle"><img alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" border="0" height="16" width="16"><br></td><td align="right" valign="top"><a class="fbox" href="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/#main"><b><font color="#996699">回页首</font></b></a></td></tr></tbody></table></td></tr></tbody></table><br><br><p><a name="IDASUG1C"><span class="atitle"><strong><font size="4">应用集成</font></strong></span></a></p><p>BIRT与现有应用的集成非常简单，由于BIRT主要是web应用，本节以web应用为例进行说明。</p><p>1. 从Eclipse BIRT官方网站下载birt-runtime-2_0_0.zip。</p><p>2. 解压之后，只需要其中的web view example目录下的内容。</p><p>3. 复制以下第三方软件包到web view example目录：</p><table class="data-table-1" border="1" cellpadding="0" cellspacing="0" width="650"><tbody><tr><th> <br></th><th>需要的jar文件</th><th>复制位置</th></tr><tr><th class="tb-row"><a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2_1"><font color="#5c81a7">Apache Axis</font></a></th><td>axis.jar<br>axis-ant.jar<br>commons-discovery-0.2.jar<br>jaxrpc.jar<br>saaj.jar<br>wsdl4j-1.5.1.jar<br></td><td>WEB-INF/Lib</td></tr><tr><th class="tb-row"><a href="http://www.lowagie.com/iText/download.html"><font color="#5c81a7">iText 1.3</font></a></th><td>itext-1.3.jar</td><td>Plugins/org.eclipse.birt.report.engine.emitter.pdf/lib</td></tr><tr><th class="tb-row"><a href="http://dev.conio.net/repos/prototype/dist/"><font color="#5c81a7">prototype.js v1.4.0</font></a></th><td>prototype.js v1.4.0</td><td>ajax/lib</td></tr></tbody></table><p>4. 将web view example目录发布到web容器中，如tomcat，改名：birtApp。</p><p>5. 启动tomcat，并访问birtApp。在首页中选择"View Example"，如果成功发布，系统将提示成功。</p><p>6. 发布设计完成的报表文件，在birtApp中创建reports目录，用于存放报表设计文件。</p><p>7. 在应用中通过：http://localhost:8080/birtApp/frameset?__report=报表文件路径，就可以访问报表了。</p><p>这个web应用支持2个动作：</p><ul><li>frameset，以frameset的形式显示报表。这个界面包含一些frame，如页面导航，报表主体在其中的一个frame中显示；使用形式：<br>http://localhost:8080/birtApp/frameset?__report=报表文件路径&amp;参数=........ </li><li>run，报表以一个单独的html页面或pdf显示，由于这种形式没有frmaeset，因此使用者必须自己提供相应的参数，如报表参数，页号等。使用形式：<br>http://localhost:8080/birtApp/run?__report=报表文件路径&amp;参数=........</li></ul><p>对于以上2个动作，以下列出可用的参数：</p><table class="data-table-1" border="1" cellpadding="0" cellspacing="0" width="650"><tbody><tr><th>选项</th><th>说明</th></tr><tr><th class="tb-row">__format</th><td>报表输出格式：html或pdf，缺省是html。对于frameset不起作用。</td></tr><tr><th class="tb-row">__isnull</th><td>指明一个参数是null，常用于字符串类型。如果提供参数且值为空： - 对于日期和数字类型，BIRT会将它们当作null处理。 - 对于字符串，BIRT会将它作为空字符串。因此，为了说明某个字符串是null，通常写为：__isnull=参数。</td></tr><tr><th class="tb-row">__locale</th><td>本地化选项，缺省是jvm的locale。</td></tr><tr><th class="tb-row">__report</th><td>报表设计文件路径。</td></tr><tr><th class="tb-row">报表参数</th><td>报表参数参数值对，形式：参数名=参数值。对于frameset，直接在地址栏中输入参数名=参数值后回车，不会影响报表结果。虽然，此时选择"运行报表"时，弹出的参数值已经改变。</td></tr></tbody></table><p>虽
然本节所说的是针对web应用的集成，但是这种方法同样也可与非web应用集成。此时，我们可以采取一种变通的方法：在非web应用中使用内嵌的web容
器，如jetty，也可达到同样的效果。这种做法和Eclipse的做法类似。还记得在报表设计时使用"报表 -&gt;
运行报表"吗？那个弹出的窗体，实际就是一个web页面。</p><br><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" height="1" width="805"><br><img alt="" src="http://www.ibm.com/i/c.gif" border="0" height="6" width="8"></td></tr></tbody></table><table class="no-print" align="right" cellpadding="0" cellspacing="0"><tbody><tr align="right"><td><img alt="" src="http://www.ibm.com/i/c.gif" height="4" width="78"><br><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td valign="middle"><img alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" border="0" height="16" width="16"><br></td><td align="right" valign="top"><a class="fbox" href="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/#main"><b><font color="#996699">回页首</font></b></a></td></tr></tbody></table></td></tr></tbody></table><br><br><p><a name="IDA1XG1C"><span class="atitle"><strong><font size="4">结论</font></strong></span></a></p><p>与
一些老牌报表软件相比，BIRT可能仍显稚嫩。然而，它也不乏其独到之处，如脚本控制、库和模板。加之有世界领先的报表厂商Actuate支持，实际上
BIRT的ROM（Report Object Model）就是Actuate捐献的，我们有充分的理由对BIRT的前景表示乐观。</p><br><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" height="1" width="805"><br><img alt="" src="http://www.ibm.com/i/c.gif" border="0" height="6" width="8"></td></tr></tbody></table><table class="no-print" align="right" cellpadding="0" cellspacing="0"><tbody><tr align="right"><td><img alt="" src="http://www.ibm.com/i/c.gif" height="4" width="78"><br><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td valign="middle"><img alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" border="0" height="16" width="16"><br></td><td align="right" valign="top"><a class="fbox" href="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/#main"><b><font color="#996699">回页首</font></b></a></td></tr></tbody></table></td></tr></tbody></table><br><br><p><a name="resources"><span class="atitle"><strong><font size="4">参考资料 </font></strong></span></a></p><ul><li>BIRT官方网站 <a href="http://www.eclipse.org/birt/phoenix/"><font color="#996699">http://www.eclipse.org/birt/phoenix/</font></a><br><br></li><li>BIRT and POJOs as datasources example <a href="http://tools.osmosis.gr/blog/archives/2005/06/birt_and_object.html"><font color="#5c81a7">http://tools.osmosis.gr/blog/archives/2005/06/birt_and_object.html</font></a><br><br></li><li>Using Eclipse BIRT Report Libraries and Templates <a href="http://www.theserverside.com/articles/article.tss?l=EclipseBRT"><font color="#5c81a7">http://www.theserverside.com/articles/article.tss?l=EclipseBRT</font></a><br></li></ul><br><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><font color="#5c81a7"><img alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" height="1" width="805"><br><img alt="" src="http://www.ibm.com/i/c.gif" border="0" height="6" width="8"></font></td></tr></tbody></table><table class="no-print" align="right" cellpadding="0" cellspacing="0"><tbody><tr align="right"><td><font color="#5c81a7"><img alt="" src="http://www.ibm.com/i/c.gif" height="4" width="78"><br></font><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td valign="middle"><font color="#5c81a7"><img alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" border="0" height="16" width="16"><br></font></td><td align="right" valign="top"><a class="fbox" href="http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/#main"><b><font color="#996699">回页首</font></b></a></td></tr></tbody></table></td></tr></tbody></table><br><br><p><a name="author"><span class="atitle"><strong><font size="4">关于作者</font></strong></span></a></p><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td colspan="3"><strong><font size="4"><img alt="" src="http://www.ibm.com/i/c.gif" height="5" width="805"></font></strong></td></tr><tr align="left" valign="top"><td><p><strong></strong></p><br></td><td><strong><font size="4"><img alt="" src="http://www.ibm.com/i/c.gif" height="5" width="4"></font></strong></td><td width="100%"><p>胡键，西安交通大学硕士，2000年毕业后一直从事软件开发。2002年开始使用Java，在平时的项目开发中经常采用OpenSource的工具，如Ant、Maven、Hibernate、Struts等，目前正在研究信息集成方面的规范和技术。可以通过<a href="mailto:jianhgreat@hotmail.com"><font color="#5c81a7">jianhgreat@hotmail.com</font></a>与他取得联系，或访问个人blog：<a href="http://blog.donews.com/foxgem/"><font color="#5c81a7">http://blog.donews.com/foxgem/</font></a>。</p></td></tr></tbody></table></td></tr></tbody></table></p>]]></description>
</item><item>
<title><![CDATA[用proxool配置数据库连接池步骤]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kaer&amp;id=17374</link>
<author>kaer</author>
<pubDate>2006/8/9 17:27:45</pubDate>
<description><![CDATA[<a style="color: rgb(0, 0, 0);">　</a><a style="color: rgb(0, 0, 0);">　1、下载proxool 地址：http://proxool.sourceforge.net<br>&nbsp;&nbsp;&nbsp; 2、解压缩proxool-0.9.0RC2.zip，拷贝lib/proxool-0.9.0RC2.jar到web-info/lib<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  拷贝jdbc驱动到web-info/lib<br>&nbsp;&nbsp;&nbsp; 3、在web-info下建立文件：proxool.xml<br>&nbsp;&nbsp;&nbsp;&nbsp; 文件内容如下：<br>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>&lt;something-else-entirely&gt;<br>&nbsp; &lt;proxool&gt;<br>&nbsp;&nbsp;&nbsp; &lt;alias&gt;<span style="color: rgb(255, 0, 0);">Develop</span>&lt;/alias&gt;<br>&nbsp;&nbsp;&nbsp; &lt;driver-url&gt;jdbc:oracle:thin:@192.168.100.18:1521:RNMS&lt;/driver-url&gt;<br>&nbsp;&nbsp;&nbsp; &lt;driver-class&gt;oracle.jdbc.driver.OracleDriver&lt;/driver-class&gt;<br>&nbsp;&nbsp;&nbsp; &lt;driver-properties&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="user" value="scmlp"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password" value="scmlpscmlp"/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/driver-properties&gt;<br>&nbsp;&nbsp;&nbsp; &lt;maximum-connection-count&gt;500&lt;/maximum-connection-count&gt;<br>&nbsp;&nbsp;&nbsp; &lt;house-keeping-test-sql&gt;select CURRENT_DATE&lt;/house-keeping-test-sql&gt;<br>&nbsp; &lt;/proxool&gt;<br>&nbsp; &lt;proxool&gt;<br>&nbsp;&nbsp;&nbsp; &lt;alias&gt;Develop2&lt;/alias&gt;<br>&nbsp;&nbsp;&nbsp; &lt;driver-url&gt;jdbc:oracle:thin:@192.168.100.18:1521:RNMS&lt;/driver-url&gt;<br>&nbsp;&nbsp;&nbsp; &lt;driver-class&gt;oracle.jdbc.driver.OracleDriver&lt;/driver-class&gt;<br>&nbsp;&nbsp;&nbsp; &lt;driver-properties&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="user" value="scmdob"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password" value="scmdob"/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/driver-properties&gt;<br>&nbsp;&nbsp;&nbsp; &lt;maximum-connection-count&gt;500&lt;/maximum-connection-count&gt;<br>&nbsp;&nbsp;&nbsp; &lt;house-keeping-test-sql&gt;select CURRENT_DATE&lt;/house-keeping-test-sql&gt;<br>&nbsp; &lt;/proxool&gt;<br>&lt;/something-else-entirely&gt;<br><br>&nbsp;&nbsp;&nbsp; 4、在web.xml文件内加入以下内容：<br><br>&lt;servlet&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;proxoolServletConfigurator&lt;/servlet-name&gt;<br>&nbsp;&lt;servlet-class&gt;org.logicalcobwebs.proxool.configuration.ServletConfigurator&lt;/servlet-class&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;xmlFile&lt;/param-name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;WEB-INF/proxool.xml&lt;/param-value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br>&nbsp;&nbsp; &lt;/servlet&gt;<br>&lt;!-- proxool提供的管理监控工具，可查看当前数据库连接情况。如果运行不成功，请删除本行 --&gt;<br>&nbsp;&nbsp; &lt;servlet&gt;<br>&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;Admin&lt;/servlet-name&gt;<br>&nbsp; &nbsp; &nbsp; &lt;servlet-class&gt;org.logicalcobwebs.proxool.admin.servlet.AdminServlet&lt;/servlet-class&gt;<br>&nbsp;&nbsp; &lt;/servlet&gt;<br>&nbsp;&nbsp; &lt;servlet-mapping&gt;<br>&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;Admin&lt;/servlet-name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/admin&lt;/url-pattern&gt;<br>&nbsp;&nbsp; &lt;/servlet-mapping&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 5、在调用数据库连接代码：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; Connection conn = DriverManager.getConnection("proxool.<span style="color: rgb(255, 0, 0);">Develop</span>");<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 6、利用proxool监控工具查看数据库运行状态。地址：./admin<br></a>]]></description>
</item><item>
<title><![CDATA[BIRT 总览（翻译）]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kaer&amp;id=15987</link>
<author>kaer</author>
<pubDate>2006/6/29 9:32:19</pubDate>
<description><![CDATA[<B>关键词</B>：BIRT &nbsp;&nbsp; eclipse &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<P><STRONG><FONT size=4>报表介绍<BR></FONT></STRONG>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; BIRT 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统，特别之处在于它是以 Java 和 J2EE 为基础。BIRT 有两个主要组件：基于 Eclipse 的报表设计器，以及部署到应用服务器上的运行时组件。BIRT 也提供了图标引擎让你能为应用增加图标。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 当前发行的版本是 1.0.1。我们鼓励你下载、试用 BIRT，请通过 <A href="http://www.eclipse.org/birt/index.php?page=community.html">newsgroups and Bugzilla</A> 向我们提意见。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 有了 BIRT，你可以为应用程序构建丰富的报表。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <STRONG>列表</STRONG> － 列表是最简单的报表。当列表变长时，你可以把相关数据增加到同一分组（基于客户的订单分组，基于供应商的产品分组）。如果数据是数字类型的，你可以轻松的添加到“总数”、“平均”、或其他汇总中。<BR>&nbsp;&nbsp;&nbsp; <STRONG>图表</STRONG> － 当需要图表表现时，数字型数据比较好理解。BIRT 也提供饼状、线状以及柱状图标等。<BR>&nbsp;&nbsp;&nbsp; <STRONG>交叉表</STRONG> － 交叉表（也叫做十字表格或矩阵）用两种维度展示数据：sales per quarter or hits per web page。（交叉表在 1.0.1 中没有提供，但计划在将来提供。）<BR>&nbsp;&nbsp;&nbsp; <STRONG>信函和文档</STRONG> － 通知、信件、以及其他文本文档都很容易通过 BIRT 方便建立。文档包括正文、格式、列表、图表等。<BR>&nbsp;&nbsp;&nbsp; <STRONG>混合报表</STRONG> － 很多报表需要联合以上所有的报表构成单一文档。例如，一份客户声明会列出客户所需要的信息，为当前促进(promotions)提供文本，以及提供并行的出帐和入帐列表。一份财政报表将包括声明、图表、表格，所有这些都将进行全方位的格式化，来匹配共有的配色方案。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <FONT size=4><STRONG>剖析一份报表</STRONG></FONT><BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; BIRT 报表包含四个部分：数据、数据转换、业务逻辑、陈述。<BR>&nbsp;&nbsp;&nbsp; 数据 － 数据库、Web 服务、Java 对象，这些都可以作为 BIRT 报表源。1.0.1 版本提供 JDBC 支持，也支持利用编码来获取其他地方的数据。BIRT 的 ODA(Open Data Access) 框架允许任何人构建新的 UI 以及运行时支持任何类型的表格式数据。未来，单一报表可包含从任意多个数据源获取数据。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <STRONG>数据转换</STRONG> － 报表通过对数据的分类、统计、过滤以及分组来适应用户需求。当然，数据库能实现这些功能，当遇到普通文件和 Java 对象时 BIRT 必须以 "simple" 数据源方式处理。BIRT 允许复杂的操作，比如总合分组、整体共计的百分比，等等。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <STRONG>业务逻辑</STRONG> － 真实世界的数据很少提供你理想的结构良好的报表。许多报表要求用具体逻辑把原始数据转换成用户的有用信息。如果该逻辑仅仅用于该报表，你可以用 BIRT 的 JavaScript 脚本支持。如果你的程序中已包含这些逻辑，你可以调用已有的 Java 代码。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <STRONG>表现</STRONG> － 一旦数据准备好了，你可以在很大的范围内选择表现形式。表格、图表、文字等等都可以。单一数据集可以有多种方式表现，而单一报表可以表现多个数据集。<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG><FONT size=4>J2EE 应用中的 BIRT<BR></FONT></STRONG>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; BIRT 报表引擎以 JAR 文件方式打包，可以方便的添加到你的 J2EE 应用中。报表引擎是一系列的 POJO(Plain Old Java Objects)，便于你可以在 JSP 页面集成报表。&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG height=237 src="http://www.eclipse.org/birt/project/chart1.jpg" width=658><BR>&nbsp;&nbsp;&nbsp; BIRT 与你的应用有四个主要集成点：<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>UI 参数</STRONG> － 多数报表允许用户指定一些输入，这些数据叫做"报表参数"。例如，客户报表要求显示客户数据。你的参数页面可能是静态的：为每个报表进行用户定制设计。或者，可以使用参数元数据提供的动态页面，以便该单一页面为所有的报表提供服务。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>运行报表</STRONG> － 用户提交表单参数时，你的 web 应用通过这些参数向 BIRT 报表引擎说明读取哪个报表设计文件，并读取数据，再产生报表输出。当引擎运行报表时 BIRT 的术语称为"工厂"。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>数据访问</STRONG> － 报表如何从你的应用获得数据已在上面解释了。Java 程序通常利用 Java 对象为 BIRT 工厂提供数据。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>显示</STRONG> － 附加的 JSP 页面，叫做阅读器，允许用户查看报表输出。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 一个报表应用程序包含一个参数页，你可以为每个报表创建自定义的 UI，或者使用 BIRT 带来的参数元数据提供单一报表来处理多种不同报表。<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG><FONT size=4>样品阅读器</FONT></STRONG><BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp; BIRT 项目提供一个样品 "viewer" 来帮你起步。样品阅读器常被用于在 Eclipse 中预览报表：BIRT 内置一个 Apache Tomcat 服务器，每次预览报表时调用。阅读器也可被用于任何与 JSP 兼容的 J2EE 服务器。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; BIRT 的 1.0.1 版本提供单一页面的 web 输出。计划在将来的版本中提供多页面输出，而且阅读器 UI 也将提供多页面之间的导航功能。<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG><FONT size=4>报表设计</FONT></STRONG> 
<P>&nbsp;&nbsp;&nbsp;&nbsp; BIRT 应用开发从报表设计开始。基于 Eclipse 插件提供多种快速构建报表工具。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>数据浏览器</STRONG> － 把你的数据源（连接）以及数据集（查询）组织起来。数据集编辑器允许你测试数据集，以确保报表接收数据的正确性。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 布局视图 － 所见即所得编辑器为你的报表提供以拽方式来创建表现内容。包含一个标准报表条目调色板。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG> 属性编辑器</STRONG> － 以便利的格局表现大多数通用的用户属性使编辑更快速和容易。BIRT 也集成了标准 Eclipse 属性视图，为每个条目提供详细的属性列表。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>报表预览</STRONG> － 你可以在任何时间采用真实数据测试你的报表。预览窗口直接内嵌在 Eclipse 中。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>代码编辑器</STRONG> － 在访问数据以及报表生成或浏览时，脚本把业务逻辑添加给报表。在编辑脚本时代码编辑器提供标准的 Eclipse 特性：语法加色、自动完成等等。BIRT 用很简单的脚本来表达，expression builder 能更容易的创建这些表达。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>略图</STRONG> － BIRT 报表被组织为一个树型结构作为整体报表的根，并且为样式、报表内容、数据源、数据集、报表参数等分类。略图视图提供你整个报表结构紧凑的预览。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>Cheat Sheets</STRONG> － 学习新工具永远是种挑战，但是 Eclipse 提供一种创新方案：cheat sheets。它们是一些帮助你完成新任务的文档。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR><FONT size=4><STRONG>数据定制</STRONG></FONT><BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 正如前面所提到的，报表通常为要表现的数据添加业务逻辑。BIRT 提供多个工具来完成这一操作：<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>栏位计算</STRONG>－数据库为存储组织数据，但这些数据通常为结合表现层而预先整理好。栏位计算让你能定义基于业务逻辑的附加数据集栏位。这种逻辑是一个简单的语法、脚本或调用一个已有的 Java 逻辑。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>输入以及输出参数</STRONG>－许多数据源都支持参数：在查询时传入或传出数据的能力。比如，SQL Select 语句可包含输入参数。存储过程既有传入又有传出参数。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>栏位元数据</STRONG>－当数据源提供的名字是 unintuitive 的，你可以提供栏位别名。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>过滤</STRONG> － 有些数据源，尤其是 SQL，提供良好的内置过滤特性。然而，有些数据源（单纯的文件，应用程序对象）却没有提供过滤特性。另外，过滤器条件是定义在脚本或 Java 代码中的。你可把过滤器定义为报表的一部分，BIRT 引擎会自动调用它们。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>脚本化数据集</STRONG> － 有些报表需要访问专门或不常用的数据。你可以在 Java 或脚本创建访问，利用脚本化数据集可在报表中集成这些逻辑。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR><STRONG><FONT size=4>条件格式化<BR></FONT></STRONG>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 有些报表有着固定的格式，其他的却需要条件格式化。例如，某报表列出了交易记录来表现不同的销售与利润之比。或者，一个客户服务报表要按照不同规则进行色彩显示。BIRT 提供多个条件格式化特性：<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <STRONG>条件可见度</STRONG> － 你可以根据数据隐藏报表元素。在上述的交易报表中，你可以创建销售和交易收入两部分，接着隐藏报表指定记录中不需要的部分。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <STRONG>值映射</STRONG> － 数据库数据通常使用代码值：M/F 代表男性或女性，1/2 代表销售和收入，等等。值映射让你定义一个从数据库值到显示值的映射。例如，我们可把值“1”对应到“Sale”，把“2”对应到“Return”。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <STRONG>加强</STRONG> － 简单的标识可让你对特定报表套用样式。例如，在客户服务报表中，我们可以使用绿色表示上一的计划，红色表示下一计划。<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG><FONT size=4>&nbsp;&nbsp;&nbsp; 脚本</FONT></STRONG></P>
<P>&nbsp;&nbsp;&nbsp; BIRT 提供基于 JavaScript（与知名的 ECMAScript 形式上相同）的脚本。JavaScript 经常作为客户端脚本语言，但是它也可以用于用于表达业务逻辑。特别的，JavaScript 能与你的现有 Java 逻辑进行良好集成，能非常轻松地从 BIRT 报表调用业务逻辑。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; BIRT 提供从 JavaScript 对象访问报表对象模型（Report Object Model）的整套方案：同时表现报表设计和运行时的状况，允许报表的完全控制处理甚至最复杂的报表格式化工作。<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG><FONT size=4>项目管理</FONT></STRONG></P>
<P>&nbsp;&nbsp;&nbsp; BIRT 集成了 Eclipse 项目管理特性来组织相关报表。BIRT 也可以与 Eclipse CVS 协作进行源码管理。BIRT 的 XML 报表设计格式让它能容易的比较两份报表，或者两个不同版本的相同报表，并跟踪变更。<BR>&nbsp;&nbsp;&nbsp; <BR><FONT size=4><STRONG>&nbsp;&nbsp;&nbsp; 样式</STRONG></FONT></P>
<P>&nbsp;&nbsp;&nbsp; 任何设计 web 页面的人都知道有时会反复使用相同的样式。CSS 允许 web 设计者从内容中提取样式信息，并复用样式。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; BIRT 提供类似的特性。当然，BIRT 样式也是基于 CSS 的，这样使得网页应用开发人员能容易得设计 BIRT 表现形式。BIRT 样式可堆叠，允许你在一个地方设置样式后套用到所有报表或报表的一部分或单一报表中。<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG><FONT size=4>&nbsp;&nbsp;&nbsp; 库</FONT></STRONG></P>
<P>&nbsp;&nbsp;&nbsp; 典型的应用中会包括许多有关联的报表。一个简单的客户应用将包括一个按照字母排序的客户列表、按照地理位置分类的客户群，为客户指定的销售代表，客户身份筛选等等。总之，用户不停的地变化报表以解决具体业务需要。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 这样一来，最终的报表应用将包含多组相关报表。相同的数据源、样式、业务逻辑、报表条目。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 将来的 BIRT 版本将包含组织这些共享资源的支持库。这些库可包含任何报表元素，比如样式、数据源、报表条目、脚本等等。<BR>&nbsp;&nbsp;&nbsp; <BR><STRONG><FONT size=4>国际化</FONT></STRONG></P>
<P>&nbsp;&nbsp;&nbsp; 全世界都可以访问你的 web 应用程序。BIRT 为国际化和本地化提供良好的支持。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <STRONG>文本本地化</STRONG> － 你可以建立一份把字符串自动变成用户本地语言显示的简单报表。所有的表单和报表文本都能以标准的 Java 本地化规则进行翻译。在运行时，BIRT 使用资源 key 找出文本的正确翻译。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <STRONG>本地化</STRONG> － BIRT 提供 locale-aware 格式化数据，意味着对于美国用户的日期数据可以以 mm/dd/yy 的格式出现，而欧洲用户则是 dd-mm-yy 格式。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <STRONG>动态格式化</STRONG> － 中文文本非常紧凑，德文有时又有点冗长，而英文正好是中等大小。BIRT 自动调整报表条目的大小来适合其中的内容，避免每次翻译都要进行报表测试。<BR>&nbsp;&nbsp;&nbsp; <BR><FONT size=4><STRONG>扩展性</STRONG></FONT></P>
<P>&nbsp;&nbsp;&nbsp; 报表应用程序的范围是十分庞大的，BIRT 团队不能为每个应用提供很具体的特性。可利用 BIRT 脚本来扩展 BIRT，另外还可构建 BIRT 扩展插件到 BIRT 中。<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR><STRONG>&nbsp;&nbsp;&nbsp; 数据访问</STRONG><BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; BIRT 提供 ODA(Open Data Access) 框架来支持自定义数据访问方法。数据访问的范围还包括一个获取数据的运行时组件。也包括构建自定义查询的自定义设计时 UI。例如，打包后的应用程序可以让 ODA 构建数据访问 UI 并运行在自己的数据模型中。<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<STRONG> 报表栏目</STRONG><BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; BIRT 为要表现的数据提供一致的报表栏目集。可以在应用程序中自定义附件报表栏目，并像 BIRT 自身的报表栏目一样运行在设计器和引擎中。例如，性能管理应用程序要添加报表栏目来高亮显示停止项、尺度表以及其他用来衡量性能的可视标志。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <STRONG>图表类型</STRONG><BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; BIRT 图表包提供了很多的图表类型。但是，一些行业需要很特殊的图表样式。开发者可以在 BIRT 图表引擎中创建图表插件来提供这些图表样式。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <STRONG>输出格式</STRONG><BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; BIRT 1.0.1 支持输出到 HTML 和 PDF。当然，也可能需要其他类型输出：Excel、RTF(Rich Text Format)、SVG(Scalable Vector Graphic)、图像、等等。BIRT 在今后会提供其中一些，除开这些的其他格式可能需要的用户就很少了。开发者可利用 BIRT 引擎接口添加转换器以达到目的。</P>]]></description>
</item><item>
<title><![CDATA[[转载]讨人喜欢的26个原则------何尝不是做人应该注意的点点滴滴]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kaer&amp;id=15622</link>
<author>kaer</author>
<pubDate>2006/6/18 20:44:07</pubDate>
<description><![CDATA[<P>1.长相不令人讨厌，如果长得不好，就让自己有才气；如果才气也没有，那就总是微笑。 </P>
<P>2.气质是关键。如果时尚学不好，宁愿纯朴。</P>
<P>3.与人握手时，可多握一会儿。真诚是宝。</P>
<P>4.不必什么都用“我”做主语。</P>
<P>5.不要向朋友借钱。</P>
<P>6.不要“逼”客人看你的家庭相册。</P>
<P>7.与人打“的”时，请抢先坐在司机旁。</P>
<P>8.坚持在背后说别人好话，别担心这好话传不到当事人耳朵里。</P>
<P>9.有人在你面前说某人坏话时，你只微笑。</P>
<P>10.自己开小车，不要特地停下来和一个骑自行车的同事打招呼。人家会以为你在炫耀。</P>
<P>11.同事生病时，去探望他。很自然地坐在他病床上，回家再认真洗手。</P>
<P>12.不要把过去的事全让人知道。</P>
<P>13.尊敬不喜欢你的人。</P>
<P>14.对事不对人；或对事无情，对人要有情；或做人第一，做事其次。</P>
<P>15.自我批评总能让人相信，自我表扬则不然。</P>
<P>16.没有什么东西比围观者们更能提高你的保龄球的成绩了。所以，平常不要吝惜你的喝彩声。</P>
<P>17.不要把别人的好，视为理所当然。要知道感恩。</P>
<P>18.榕树上的“八哥”在讲，只讲不听，结果乱成一团。学会聆听。</P>
<P>19.尊重传达室里的师傅及搞卫生的阿姨。</P>
<P>20.说话的时候记得常用“我们”开头。</P>
<P>21.为每一位上台唱歌的人鼓掌。</P>
<P>22.有时要明知故问：你的钻戒很贵吧！有时，即使想问也不能问，比如：你多大了？</P>
<P>23.话多必失，人多的场合少说话。</P>
<P>24.把未出口的“不”改成：“这需要时间”、“我尽力”、“我不确定”、“当我决定后，会给你打电话”……</P>
<P>25.不要期望所有人都喜欢你，那是不可能的，让大多数人喜欢就是成功的表现。</P>
<P>26.当然，自己要喜欢自己。</P>]]></description>
</item><item>
<title><![CDATA[小女人日记摘抄]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kaer&amp;id=15476</link>
<author>kaer</author>
<pubDate>2006/6/14 16:30:39</pubDate>
<description><![CDATA[<P>Jessica约我出来，想向我讨教该给男朋友买个什么生日礼物。</P>
<P>　　“一年有那么多的纪念日，男人能用的东西却少得可怜。无外乎领带皮带名片夹，金表金笔加钱包。能送的我都送过了啊。”Jessica皱着眉头抱怨。</P>
<P>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>　　“其实不一定要买这些名贵的东西，创意比价格更重要！”我微笑着建议。</P>
<P>　　“说得简单！你给老公的上一件生日礼物是什么？”</P>
<P>　　“一个自制的牌子，就是挂在我家大门上的那个。”我立即回答。</P>
<P>　　“噢，很温情的那个，上面写着——进门前，请脱下烦恼；回家时，带快乐回来。可是我总不能送同样的礼物吧？你老公最满意的礼物是什么？”Jessica犹豫了一下又问。</P>
<P>　　“这个……”我脸红了一下，低声说，“我用圣诞红和圣诞绿的绸带把自己包了起来，里面什么也没有穿。”</P>
<P>　　“哈！你这家伙！”Jessica笑着敲了敲我的头，“这个创意借给我用了！”</P>
<P>　　“好好好，借给你！——不用付利息的。”我笑一笑陪她去专卖礼品包装带的柜台。</P>
<P>　　仔细想想，和老公在一起这么久了，还真的有了不少值得借鉴的浪漫创意，总结如下：</P>
<P>　　在冰箱的留言板上，每天都会有不同的爱心留言和温馨的卡通画。</P>
<P>　　我们一起动手，把曾经用过的电影票、车票、旅游景点票、明信片做成了一幅拼贴画，挂在客厅。</P>
<P>　　我们还有一个浪漫锦囊，里面有一百张小纸条，写着我们近期的愿望，比如喝一次最好的英式下午茶，去最高的旋转餐厅吃饭，到现场看一场球赛，听一回百老汇歌剧……一个星期拿出来一个。</P>
<P>　　餐桌上有一个按动牙齿会随机咬人的“大白鲨”玩具，被咬到的人洗碗。</P>
<P>　　鱼缸里面养着两条金鱼，分别代表我和老公。</P>
<P>　　卧室里面有一面照片墙，贴满我们两个人的合影。</P>
<P>　　“One day king”和“One day queen”的奖券，抽到的人，有权在24小时内享受国王(王后)待遇。</P>
<P>　　每次做爱后放一块钱在储蓄罐里，作为爱的基金，专门用来买性感内衣。</P>
<P>　　不放过任何纪念日：1月8日，猫王的生日，猫王的情歌越多越好；6月9号一起看卡通片，庆祝唐老鸭节；12月16日，贝多芬的生日，热烈欢迎交响曲……</P>
<P>　　打电话的时候，我总是会用不同的问候语：请问您是世界上最能干的男人吗？</P>
<P>　　创造了很多两个人一起学习的机会，比如双人瑜伽课，双人美食课，双人泰式按摩……</P>
<P>　　老公讨要奖励的时候，偶尔我会用眼睫毛扫他的脸颊，作为蝴蝶之吻。</P>
<P>　　满足收集欲望，我给老公买齐了王家卫的所有电影DVD，Matchbox的小汽车模型，老公给我集齐了麦当劳发售的全套Hello Kitty。</P>
<P>　　打扮一下，就好像是十几岁的少男少女，或是扮演一对明星夫妻（John Lennon和大野洋子就不错），周末的时候一整天待在床上。</P>
<P>　　我们有一盘用法语唱的情歌，一盘收集我们最爱情歌的CD，专门在卧室播放。</P>
<P>　　今天的“浪漫创意”是“寻宝游戏”，我事先准备了很多提示性的小纸条，分藏在家里各处。</P>
<P>　　最后的一关是——“恭喜你通过所有关卡，请到卧室床上领取你的奖品！”</P>
<P>　　这个浪漫创意，我决定对Jessica保密。</P>
<P><BR>一等奖奖品：甜蜜的吻；颁奖地点：咱家卧室；颁奖时间：今晚睡前；领奖方式：自取……”</P>]]></description>
</item><item>
<title><![CDATA[弟子规]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kaer&amp;id=14984</link>
<author>kaer</author>
<pubDate>2006/6/2 21:13:37</pubDate>
<description><![CDATA[
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><SPAN style="FONT-SIZE: 16pt; COLOR: #000055; FONT-FAMILY: 宋体; LETTER-SPACING: 4.5pt; mso-bidi-font-weight: bold">弟子规<SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 30pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 15pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">总　叙<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 22.5pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">弟子规　圣人训　首孝</SPAN><B><SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体">弟</SPAN></B><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">　次谨信</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">泛爱众　而亲仁　有余力　则学文</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 30pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 15pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">入 则 孝<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 22.5pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">父母呼　应勿缓　父母命　行勿懒</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">父母教　须敬听　父母责　须顺承</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">冬则</SPAN><B><SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体">温</SPAN></B><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">　夏则</SPAN><B><SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体">凊</SPAN></B><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">　晨则省　昏则定</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">出必告　反必面　居有常　业无变</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">事虽</SPAN><B><SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体">小</SPAN></B><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">　勿擅为　苟擅为　子道亏</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">物虽小　勿私藏　苟私藏　亲心伤</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">亲所好　力为具　亲所恶　谨为去</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">身有伤　贻亲忧　德有伤　贻亲羞</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">亲爱我　孝何难　亲憎我　孝方贤</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">亲有过　谏使更　怡吾色　柔吾声</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">谏不入　悦复谏　号泣随　挞无怨</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">亲有疾　药先尝　昼夜</SPAN><B><SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体">侍</SPAN></B><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">　不离床</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">丧三年　常悲咽　居处变　酒肉绝</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">丧尽礼　祭尽诚　事死者　如事生</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 30pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 15pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">出 则 </SPAN><B><SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体">弟</SPAN></B><SPAN lang=EN-US style="FONT-SIZE: 15pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold"><o:p></o:p></SPAN></P>
<P style="MARGIN: 22.5pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">兄道友　弟道恭　兄弟睦　孝在中</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">财物轻　怨何生　言语忍　忿自泯</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">或饮食　或坐走　长者先　幼者后</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">长</SPAN><B><SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体">呼人</SPAN></B><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">　即代叫　人不在　己即到</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">称尊长　勿呼名　对尊长　勿见能</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">路遇长　疾趋揖　长无言　退恭立</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">骑下马　乘下车　过犹待　百步余</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">长者立　幼勿坐　长者坐　命乃坐</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">尊长前　声要低　低不闻　却非宜</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">进必趋　退必迟　问起对　视勿移</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 30pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN lang=EN-US style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold"><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 30pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 15pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">信</SPAN><SPAN lang=EN-US style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">凡出言　信为先　诈与妄　奚可焉</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">话说多　不如少　惟其是　勿佞巧</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">奸巧语　秽污词　市井气　切戒之</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">见未真　勿轻言　知未的　勿轻传</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">事非宜　勿轻诺　苟轻诺　进退错</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">凡道字　重且舒　勿急疾　勿模糊</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">彼说长　此说短　不关己　莫闲管</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">见人善　即思齐　纵去远　以渐跻</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">见人恶　即内省　有则改　无加警</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><B><SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体">唯</SPAN></B><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">德学　</SPAN><B><SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体">唯</SPAN></B><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">才艺　不如人　当自</SPAN><B><SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体">砺</SPAN></B><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">若衣服　若饮食　不如人　勿生戚</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">闻过怒　闻誉乐　损友来　益友却</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">闻誉恐　闻过欣　直谅士　渐相亲</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">无心非　名为错　有心非　名为恶</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">过能改　归于无　倘掩饰　增一辜</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 30pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 15pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">泛 爱 众<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 22.5pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">凡是人　皆须爱　天同覆　地同载</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">行高者　名自高　人所重　非貌高</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">才大者　望自大　人所服　非言大</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">己有能　勿自私　人所能　勿轻訾</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">勿谄富　勿骄贫　勿厌故　勿喜新</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">人不闲　勿事搅　人不安　勿话扰</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">人有短　切莫揭　人有私　切莫说</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">道人善　即是善　人知之　愈思勉</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">扬人</SPAN><B><SPAN style="FONT-SIZE: 14pt; COLOR: red; FONT-FAMILY: 宋体">恶</SPAN></B><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">　即是恶　疾之甚　祸且作</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">善相劝　德皆建　过不规　道两亏</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">凡取与　贵分晓　与宜多　取宜少</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">将加人　先问己　己不欲　即速已</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">恩欲报</SPAN><B><SPAN style="FONT-SIZE: 9pt; COLOR: red; FONT-FAMILY: 宋体">答</SPAN></B><B><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体"> </SPAN></B><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">怨欲忘　报怨短　报恩长</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P style="MARGIN: 15pt 0cm 0pt; LINE-HEIGHT: 5pt; TEXT-ALIGN: center; mso-line-height-rule: exactly" align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold">待婢仆　身贵端　虽贵端　慈而宽</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P align=center><SPAN style="FONT-SIZE: 14pt; COLOR: #000055; FONT-FAMILY: 宋体; mso-bidi-font-weight: bold; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">势服人　心不然　理服人　方无言</SPAN></P>]]></description>
</item><item>
<title><![CDATA[一种叫老婆的药]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kaer&amp;id=14837</link>
<author>kaer</author>
<pubDate>2006/5/29 16:39:55</pubDate>
<description><![CDATA[药品使用说明书： <BR>【品名】民间俗称老婆，正式场合可称妻子或内人；现亦叫达令。 <BR>【化学名称】woman <BR>【成分】水、血液和脂肪类碳水化合物，气味幽香。 <BR>【理化性质】性质活泼，根据情况可分为一价（嫁）、二价（嫁）、三价（嫁）。。。。n价（嫁）。易溶于蜜语、甜言；在真情、钻石，金钱、豪宅的催化下熔点降低。难溶于白丁 　　<BR>【性状】本品为可乐状的凹凸物，表面光洁，涂有各种化妆品、对钻石，铂金有强烈的亲和力；羞涩时产生红移现象；生气产生蓝移（绿移）本品随时间推移产生黄移，形状会有所改变，但不影响继续使用。 　　<BR>【功能主治】 　　主治单身恐惧症顽疾，对失恋和相思病也有明显效果。 　　<BR>【用法用量】 建议一生一片。 　　<BR>【注意事项】本品仅适用于单身之成年男性。服用时需小心谨慎，如药品导致使用者出现耳朵变软（钯耳朵）、惧内、气管炎等现象，则必须马上找相关专业医师咨询，并在医生指导下使用；没有则可继续使用。多吃有致命的过敏反应，吃2种以上即导致不良的相互作用！ 　　<BR>【规格】通常为45千克至65千克，如出现特殊超重情况，请男人加强锻炼或找健康医生处理。 　　<BR>【贮藏】常温下妥善保存，室内通风处最佳；如在室外，则需避免女性、帅哥成群处。使用期间，尤忌本品夜不归宿。 　　<BR>【包装】各种时装、首饰、手袋，并随季节变化随时更换。 　　<BR>【有效期】视幸福程度而定，最长可达一生；最短，一天也可能失效。 　　<BR>【批准文号】正式批准文号见钻戒说明书内页。 <BR>【生产企业】老丈母和老丈人。 <BR>【禁忌】无论什么时候，都不能说胖]]></description>
</item><item>
<title><![CDATA[struts的国际化（i18n）操作]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kaer&amp;id=14820</link>
<author>kaer</author>
<pubDate>2006/5/29 10:46:51</pubDate>
<description><![CDATA[<P><A>　i18n可以满足对系统的国际化，它的原理就是将页面上的所有标志都放到一个消息资源文件中，不同的语言要提供不同的消息资源文件，当用户登录系统是，系统就是根据你登录的语言，选择不同的消息资源文件显示出来，这样你就可以看到不同的效果了。<BR>&nbsp;&nbsp;&nbsp; 一、配置文件的设置<BR>&nbsp;&nbsp;&nbsp; 其实i18n的使用还是比较简单的，首先你要在struts-config.xml配置文件中配置消息资源文件的路径，如下所示：<BR>&nbsp;一、配置文件的设置<BR>&nbsp;&nbsp;&nbsp; 其实i18n的使用还是比较简单的，首先你要在struts-config.xml配置文件中配置消息资源文件的路径，如下所示：<BR>--------------------------------------------------------------------------------------------------<BR>&lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt;<BR>..........<BR>&lt;!-- ========== Message Resources Definitions =========================== --&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;!--指定资源文件的路径--&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;message-resources parameter="hello.ApplicationResources"/&gt;<BR>&lt;/struts-config&gt;<BR>-------------------------------------------------------------------------------------------</A></P>
<P>这个配置文件的配置项&lt;message-resources&gt;就是用来配置资源文件路径，在这里，路径被配置在系统classpath里面的hello/ApplicationResources.properties文件中。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 二、资源文件<BR>&nbsp;&nbsp;&nbsp; 现在我们可以开始配置资源文件了，如下（ApplicationResources.properties文件）：<BR>-------------------------------------------------------------------------------------------<BR>; Application Resources<BR>hello.title = 你好，欢迎光临！<BR>-------------------------------------------------------------------------------------------<BR>&nbsp;&nbsp;&nbsp; 在这个配置文件中，只有一个注释（用逗号做标志），一个信息。对于中文来说，上面这个文件是没有办法辨认的，必须给这个文件转化编码才行。<BR>&nbsp;&nbsp;&nbsp; 在DOS命令行进入ApplicationResources.properties所在的文件夹使用命令：</P>
<P>native2ascii -encoding gb2312 ApplicationResources.properties ApplicationResources_zh.properties</P>
<P>&nbsp;&nbsp;&nbsp; native2ascii是jdk的一个工具，放在jdk安装目录的bin目录下，如果出现“native2ascii不是内部命令”，那可能是你没有设置环境变量。<BR>&nbsp;&nbsp; 三、jsp文件<BR>&nbsp;&nbsp; 下面是一个简单的jsp文件，里面使用了i18n，如下： <BR>-------------------------------------------------------------------------------------------<BR>&lt;%@ page contentType="text/html;charset=gbk"%&gt; <BR>&lt;%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt;<BR>&lt;%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %&gt;<BR>&lt;%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %&gt;<BR>&lt;html&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;body&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bean:message key="hello.title"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/body&gt;<BR>&lt;/html&gt;<BR>-------------------------------------------------------------------------------------------<BR>&nbsp;&nbsp;&nbsp; 其中，前面三句话是将标记库文件包含进文件中，这样在下面使用的标记还可以被辨认，如下面的&lt;bean&gt;标记。<BR>&nbsp;&nbsp;&nbsp; 下面这句话&lt;bean:message key="hello.title"/&gt;，就是将内容显示出来，这个内容是从文件ApplicationResources_zh.properties读取的，在这里，hello.title是“你好，欢迎光临！”，当然，这要你系统的编码的简体中文才行。</P>]]></description>
</item><item>
<title><![CDATA[偶然打开这个网站，速度真不赖，于是把窝搬到这里。]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kaer&amp;id=14819</link>
<author>kaer</author>
<pubDate>2006/5/29 10:34:17</pubDate>
<description><![CDATA[
<P>这里速度快些。搬窝了！！！</P>
<P>&nbsp; 恭喜自己一下！</P>
<P>&nbsp;</P>]]></description>
</item>
</channel>
</rss>