<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>Web应用</title><link>http://leejd.cndev.org/category/586.aspx</link><description>Web应用</description><managingEditor>小东</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.95.2004.101</generator><item><dc:creator>小东</dc:creator><title>wxMozilla</title><link>http://leejd.cndev.org/archive/2005/05/31/14503.aspx</link><pubDate>2005-05-31 21:33:00Z</pubDate><guid>http://leejd.cndev.org/archive/2005/05/31/14503.aspx</guid><wfw:comment>http://leejd.cndev.org/comments/14503.aspx</wfw:comment><comments>http://leejd.cndev.org/archive/2005/05/31/14503.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://leejd.cndev.org/comments/commentRss/14503.aspx</wfw:commentRss><trackback:ping>http://leejd.cndev.org/services/trackbacks/14503.aspx</trackback:ping><description>&lt;P&gt;地址:&lt;A href="http://wxmozilla.sourceforge.net/"&gt;http://wxmozilla.sourceforge.net/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;wxMozilla is a project to develop a wxWindows component for embedding the Mozilla browser into any wxWindows application. The wxMozilla classes use Mozilla's XPCOM (Cross Platrom COM) interface to embed a HTML browser or editor within the application. &lt;/P&gt;
&lt;P&gt;一直以为,如果自己的程序想嵌入网页,而且兼容性要好一点,就只能使用IE,但是今天突然发现这个家伙,呵呵,看来嵌入firefox也是有希望的啊.&lt;/P&gt;&lt;img src ="http://leejd.cndev.org/aggbug/14503.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>小东</dc:creator><title>Google的Code站点开张了</title><link>http://leejd.cndev.org/archive/2005/03/20/8548.aspx</link><pubDate>2005-03-20 21:34:00Z</pubDate><guid>http://leejd.cndev.org/archive/2005/03/20/8548.aspx</guid><wfw:comment>http://leejd.cndev.org/comments/8548.aspx</wfw:comment><comments>http://leejd.cndev.org/archive/2005/03/20/8548.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://leejd.cndev.org/comments/commentRss/8548.aspx</wfw:commentRss><trackback:ping>http://leejd.cndev.org/services/trackbacks/8548.aspx</trackback:ping><description>&lt;P&gt;站点：&lt;A href="http://code.google.com/"&gt;http://code.google.com/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;不过这个站点的RSS种子是atom的，用我现在的FeedDemon不认这种格式的种子。好像也没有提供邮件汇总功能，想得到信息估计只能到站点去看了。&lt;/P&gt;
&lt;P&gt;这个站点提供了Google自己的一些API，像&lt;A href="http://code.google.com/apis.html#adwords"&gt;&lt;FONT size=2&gt;AdWords&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; - &lt;/FONT&gt;&lt;A href="http://code.google.com/apis.html#blogger"&gt;&lt;FONT size=2&gt;Blogger&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; - &lt;/FONT&gt;&lt;A href="http://code.google.com/apis.html#deskbar"&gt;&lt;FONT size=2&gt;Deskbar&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; - &lt;/FONT&gt;&lt;A href="http://code.google.com/apis.html#desktop_search"&gt;&lt;FONT size=2&gt;Desktop Search&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; - &lt;/FONT&gt;&lt;A href="http://code.google.com/apis.html#froogle"&gt;&lt;FONT size=2&gt;Froogle&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; - &lt;/FONT&gt;&lt;A href="http://code.google.com/apis.html#gmail"&gt;&lt;FONT size=2&gt;Gmail&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; - &lt;/FONT&gt;&lt;A href="http://code.google.com/apis.html#groups"&gt;&lt;FONT size=2&gt;Groups&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; - &lt;/FONT&gt;&lt;A href="http://code.google.com/apis.html#keyhole"&gt;&lt;FONT size=2&gt;Keyhole&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; - &lt;/FONT&gt;&lt;A href="http://code.google.com/apis.html#web_search"&gt;&lt;FONT size=2&gt;Web search&lt;/FONT&gt;&lt;/A&gt;，目前也已经存在几个开源的项目了 &lt;A href="https://sourceforge.net/projects/goog-coredumper/"&gt;&lt;STRONG&gt;CoreDumper&lt;/STRONG&gt;&lt;/A&gt;， &lt;A href="https://sourceforge.net/projects/goog-sparsehash/"&gt;&lt;STRONG&gt;Sparse Hashtable&lt;/STRONG&gt;&lt;/A&gt;，&lt;A href="https://sourceforge.net/projects/goog-goopy/"&gt;&lt;STRONG&gt;Goopy/Functional&lt;/STRONG&gt;&lt;/A&gt;，&lt;A href="https://sourceforge.net/projects/goog-perftools/"&gt;&lt;STRONG&gt;Perftools&lt;/STRONG&gt;&lt;/A&gt;。&lt;/P&gt;
&lt;P&gt;就个人感觉而且，我是非常看好这个站点的，现在开源的是越来越流行了，软件开发已经从原先意义上的技术型开发转为了应用型的开发（业务开发），很多底层的东西，需要的是稳定是根据自己的需求进行修改，因此开源的底层会是越来越欢迎的。&lt;/P&gt;&lt;img src ="http://leejd.cndev.org/aggbug/8548.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>小东</dc:creator><title>对日志操作logging的一点补充</title><link>http://leejd.cndev.org/archive/2005/02/24/7307.aspx</link><pubDate>2005-02-24 23:52:00Z</pubDate><guid>http://leejd.cndev.org/archive/2005/02/24/7307.aspx</guid><wfw:comment>http://leejd.cndev.org/comments/7307.aspx</wfw:comment><comments>http://leejd.cndev.org/archive/2005/02/24/7307.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://leejd.cndev.org/comments/commentRss/7307.aspx</wfw:commentRss><trackback:ping>http://leejd.cndev.org/services/trackbacks/7307.aspx</trackback:ping><description>&lt;P&gt;昨天照猫画虎的画了日志的雏形，不过封装做的很不好，虽然昨天没有具体的测试封装结果，但是今天的调试发现了很多的问题。&lt;/P&gt;
&lt;P&gt;今天我在日志的格式中增加了&amp;#8220;&amp;lt;%(pathname)s&amp;gt; -%(lineno)d-&amp;#8221;参数，用于输出日志输出时所能输出的文件和源码行号。但是由于我对日志输出部分进行了再次封装，发现所给的文件是日志所在的文件，行号为封装函数调用日志对象所用方法的行号。这种输出对于日志用处是不大的，于是我只好在没有找到好的方法的情况下不进行封装了，直接调用日志对象的信息输出函数。&lt;BR&gt;还有，昨天给的那种封装到函数中的方法是不推荐的，因为函数调用一次就生成一个日志对象，这样调用次数越多，对象就越多，modpython下面，好像需要重新启动才可以释放日志对象的。&lt;/P&gt;
&lt;P&gt;今天的session也算是搞定了，修改了modpython的源码，把Session.py的165和166行注释掉了，不然老是说字符串越界。注释掉的代码为：&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#800080&gt;if&lt;/FONT&gt;&lt;/STRONG&gt; os.name == '&lt;FONT color=#0000ff&gt;nt&lt;/FONT&gt;' &lt;STRONG&gt;&lt;FONT color=#800080&gt;and&lt;/FONT&gt;&lt;/STRONG&gt; c.path[-1] == '&lt;FONT color=#0000ff&gt;\\&lt;/FONT&gt;':&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.path = c.path[:-1]&lt;/P&gt;&lt;img src ="http://leejd.cndev.org/aggbug/7307.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>小东</dc:creator><title>常用的正则表达式及符号诠释</title><link>http://leejd.cndev.org/archive/2005/02/20/7132.aspx</link><pubDate>2005-02-20 11:40:00Z</pubDate><guid>http://leejd.cndev.org/archive/2005/02/20/7132.aspx</guid><wfw:comment>http://leejd.cndev.org/comments/7132.aspx</wfw:comment><comments>http://leejd.cndev.org/archive/2005/02/20/7132.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://leejd.cndev.org/comments/commentRss/7132.aspx</wfw:commentRss><trackback:ping>http://leejd.cndev.org/services/trackbacks/7132.aspx</trackback:ping><description>&lt;P&gt;在脚本程序的写作中，正则表达式是经常用到的，但是正则表达式书写困难，可读性很差也是大家所知道的，今天写email的正则表达式时，由于经常写不对，后来决定gg一下，看看网上有没有现成的，结果发现网上已经提供了很多的常用的正则表达式了，不需要自己写的，而且应该是验证过的吧。&lt;/P&gt;
&lt;P&gt;匹配中文字符的正则表达式： [\u4e00-\u9fa5]&lt;BR&gt;匹配双字节字符(包括汉字在内)：[^\x00-\xff]&lt;BR&gt;匹配空行的正则表达式：\n[\s| ]*\r&lt;BR&gt;匹配HTML标记的正则表达式：/&amp;lt;(.*)&amp;gt;.*&amp;lt;\/\1&amp;gt;|&amp;lt;(.*) \/&amp;gt;/&lt;BR&gt;匹配首尾空格的正则表达式：(^\s*)|(\s*$)&lt;BR&gt;匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*&lt;BR&gt;匹配网址URL的正则表达式：^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$&lt;BR&gt;匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$&lt;BR&gt;匹配国内电话号码：(\d{3}-|\d{4}-)?(\d{8}|\d{7})?&lt;BR&gt;匹配腾讯QQ号：^[1-9]*[1-9][0-9]*$&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;下表是元字符及其在正则表达式上下文中的行为的一个完整列表： &lt;BR&gt;&lt;/U&gt;&lt;BR&gt;&lt;STRONG&gt;\&lt;/STRONG&gt; 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;^&lt;/STRONG&gt; 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性，^ 也匹配 &amp;#8217;\n&amp;#8217; 或 &amp;#8217;\r&amp;#8217; 之后的位置。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;$&lt;/STRONG&gt; 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性，$ 也匹配 &amp;#8217;\n&amp;#8217; 或 &amp;#8217;\r&amp;#8217; 之前的位置。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;*&lt;/STRONG&gt; 匹配前面的子表达式零次或多次。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;+&lt;/STRONG&gt; 匹配前面的子表达式一次或多次。+ 等价于 {1,}。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;?&lt;/STRONG&gt; 匹配前面的子表达式零次或一次。? 等价于 {0,1}。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;{n}&lt;/STRONG&gt; n 是一个非负整数，匹配确定的n 次。&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;{n,}&lt;/STRONG&gt; n 是一个非负整数，至少匹配n 次。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;{n,m}&lt;/STRONG&gt; m 和 n 均为非负整数，其中n &amp;lt;= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;?&lt;/STRONG&gt; 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;.&lt;/STRONG&gt; 匹配除 "\n" 之外的任何单个字符。要匹配包括 &amp;#8217;\n&amp;#8217; 在内的任何字符，请使用象 &amp;#8217;[.\n]&amp;#8217; 的模式。 &lt;BR&gt;&lt;STRONG&gt;(pattern)&lt;/STRONG&gt; 匹配pattern 并获取这一匹配。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;(?:pattern)&lt;/STRONG&gt; 匹配pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;(?=pattern)&lt;/STRONG&gt; 正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;(?!pattern)&lt;/STRONG&gt; 负向预查，与&lt;STRONG&gt;(?=pattern)&lt;/STRONG&gt;作用相反 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;x|y&lt;/STRONG&gt; 匹配 x 或 y。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;[xyz]&lt;/STRONG&gt; 字符集合。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;[^xyz]&lt;/STRONG&gt; 负值字符集合。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;[a-z]&lt;/STRONG&gt; 字符范围，匹配指定范围内的任意字符。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;[^a-z]&lt;/STRONG&gt; 负值字符范围，匹配任何不在指定范围内的任意字符。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\b&lt;/STRONG&gt; 匹配一个单词边界，也就是指单词和空格间的位置。&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\B&lt;/STRONG&gt; 匹配非单词边界。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\cx&lt;/STRONG&gt; 匹配由x指明的控制字符。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\d&lt;/STRONG&gt; 匹配一个数字字符。等价于 [0-9]。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\D&lt;/STRONG&gt; 匹配一个非数字字符。等价于 [^0-9]。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\f&lt;/STRONG&gt; 匹配一个换页符。等价于 \x0c 和 \cL。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\n&lt;/STRONG&gt; 匹配一个换行符。等价于 \x0a 和 \cJ。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\r&lt;/STRONG&gt; 匹配一个回车符。等价于 \x0d 和 \cM。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\s&lt;/STRONG&gt; 匹配任何空白字符，包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\S&lt;/STRONG&gt; 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\t&lt;/STRONG&gt; 匹配一个制表符。等价于 \x09 和 \cI。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\v&lt;/STRONG&gt; 匹配一个垂直制表符。等价于 \x0b 和 \cK。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\w&lt;/STRONG&gt; 匹配包括下划线的任何单词字符。等价于&amp;#8217;[A-Za-z0-9_]&amp;#8217;。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\W&lt;/STRONG&gt; 匹配任何非单词字符。等价于 &amp;#8217;[^A-Za-z0-9_]&amp;#8217;。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\xn&lt;/STRONG&gt; 匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\num&lt;/STRONG&gt; 匹配 num，其中num是一个正整数。对所获取的匹配的引用。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\n&lt;/STRONG&gt; 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式，则 n 为后向引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\nm&lt;/STRONG&gt; 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式，则 nm 为后向引用。如果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字 (0-7)，则 \nm 将匹配八进制转义值 nm。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\nml&lt;/STRONG&gt; 如果 n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。 &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;\un&lt;/STRONG&gt; 匹配 n，其中 n 是一个用四个十六进制数字表示的Unicode字符。 &lt;BR&gt;&lt;/P&gt;&lt;img src ="http://leejd.cndev.org/aggbug/7132.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>小东</dc:creator><title>XUL还得慢慢学啊</title><link>http://leejd.cndev.org/archive/2005/02/18/7103.aspx</link><pubDate>2005-02-18 22:15:00Z</pubDate><guid>http://leejd.cndev.org/archive/2005/02/18/7103.aspx</guid><wfw:comment>http://leejd.cndev.org/comments/7103.aspx</wfw:comment><comments>http://leejd.cndev.org/archive/2005/02/18/7103.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://leejd.cndev.org/comments/commentRss/7103.aspx</wfw:commentRss><trackback:ping>http://leejd.cndev.org/services/trackbacks/7103.aspx</trackback:ping><description>&lt;P&gt;学习了一段时间的XUL，感觉还是没有进门路，可能是我脑子不好使吧。MAB研究也好几天了，翻了他的很多的JS代码，发现很多JS代码的语法我都不会啊，看来XUL这种语言还是要慢慢来学习的。&lt;/P&gt;
&lt;P&gt;本来是准备快速的将XUL学习一下，然后可以在实际项目中应用，现在看来不行了，XUL是一个复杂的东西，不可能快速的掌握的，除非你已经对JS非常的熟悉了。对于我这种JS不熟悉的人来说，基本是要学两门语言。所以暂时放弃快速学习XUL的计划，还是使用熟悉的语言来对目前要开展的项目进行处理了。不过XUL这种玩意还是不错的，有机会还是需要继续学习。&lt;/P&gt;
&lt;P&gt;不过现在感觉的是，JS真得好好学习了，以后估计web应用是大趋势了，JS不学习的话，很可能会落伍了。现在想想，99年学的一点JS，现在居然全忘记光了，又得从新开始了。&lt;/P&gt;&lt;img src ="http://leejd.cndev.org/aggbug/7103.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>小东</dc:creator><title>又发现一个不错的XUL应用</title><link>http://leejd.cndev.org/archive/2005/02/16/6937.aspx</link><pubDate>2005-02-16 15:22:00Z</pubDate><guid>http://leejd.cndev.org/archive/2005/02/16/6937.aspx</guid><wfw:comment>http://leejd.cndev.org/comments/6937.aspx</wfw:comment><comments>http://leejd.cndev.org/archive/2005/02/16/6937.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://leejd.cndev.org/comments/commentRss/6937.aspx</wfw:commentRss><trackback:ping>http://leejd.cndev.org/services/trackbacks/6937.aspx</trackback:ping><description>&lt;P&gt;网址：&lt;A href="http://filemanager.mozdev.org/"&gt;http://filemanager.mozdev.org/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;这是一个利用XUL来仿win2k的资源管理器的例子，主要用来对远程主机上面的文件进行管理，实现的功能也是不少了，当然了，源码也是自由（LGPL）下载的，看来以后写XUL应用又多了一个参考的猛料了。不过现在MAB都还没有搞明白，看来学习的曲线还是比较曲折的。&lt;/P&gt;
&lt;P&gt;&lt;!--StartFragment --&gt;&amp;nbsp;Filemanager 的几个界面截图：&lt;BR&gt;&lt;A href="http://filemanager.mozdev.org/images/screenshot-main.png"&gt;http://filemanager.mozdev.org/images/screenshot-main.png&lt;/A&gt;&lt;BR&gt;&lt;A href="http://filemanager.mozdev.org/images/screenshot-menu.png"&gt;http://filemanager.mozdev.org/images/screenshot-menu.png&lt;/A&gt;&lt;A href="http://filemanager.mozdev.org/images/screenshot-menu-small.png"&gt;&lt;/A&gt;&lt;BR&gt;&lt;A href="http://filemanager.mozdev.org/images/screenshot-upload.png"&gt;http://filemanager.mozdev.org/images/screenshot-upload.png&lt;/A&gt;&lt;A href="http://filemanager.mozdev.org/images/screenshot-upload-small.png"&gt;&lt;/A&gt;&lt;BR&gt;&lt;A href="http://filemanager.mozdev.org/images/screenshot-imageviewer.png"&gt;http://filemanager.mozdev.org/images/screenshot-imageviewer.png&lt;/A&gt;&lt;BR&gt;&lt;A href="http://filemanager.mozdev.org/images/screenshot-editor.png"&gt;http://filemanager.mozdev.org/images/screenshot-editor.png&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://leejd.cndev.org/aggbug/6937.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>小东</dc:creator><title>XUL中的overlay</title><link>http://leejd.cndev.org/archive/2005/02/02/6261.aspx</link><pubDate>2005-02-02 23:00:00Z</pubDate><guid>http://leejd.cndev.org/archive/2005/02/02/6261.aspx</guid><wfw:comment>http://leejd.cndev.org/comments/6261.aspx</wfw:comment><comments>http://leejd.cndev.org/archive/2005/02/02/6261.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://leejd.cndev.org/comments/commentRss/6261.aspx</wfw:commentRss><trackback:ping>http://leejd.cndev.org/services/trackbacks/6261.aspx</trackback:ping><description>&lt;P&gt;这几天断断续续的在学习XUL，不过由于年底了，各种聚会非常的多，基本是天天晚上有聚会，今天稍微好一点。我的XUL学习没有按照limodou的教程一步一步的来，而是根据他的一个回复里面的MAB例子来进行的，因为我感觉MAB简直就是学习的精品，不单涉及到XUL，主要还是含有xmlhttp的精髓在里面。&lt;/P&gt;
&lt;P&gt;mab中，大量的使用了overlay，使得复杂的界面设计对于主文件来说变得狠简单，狠容易读懂，这也就是适合于初学者学习的原因。不过这个例子的内容确实狠全面的，而且也不是狠容易上手。刚开始的时候，就被他的overlay搞得迷迷糊糊的，其实你只要把他看成是C++里面的文件之间的函数调用就行了。&lt;/P&gt;
&lt;P&gt;在a.xul文件中要调用b.xul文件的func块，那么你得先包含b.xul。不过这个包含不是C++里面的include，而是xul-overlay。参考MAB里面的例子：&lt;?xul-overlay href="overlay/result_tree.xul"?&gt;，所遵循的语法是xml的标准语法，只是标签是专有的而已。href后面跟着的是XUL文件的相对调用文件的路径。在b.xul文件中，除了XML标准头（&lt;?xml version="1.0" encoding="UTF-8"?&gt;）之外，在：&lt;OVERLAY id=result_tree_overlay there.is.only.xul? gatekeeper keymaster www.mozilla.org http: ?xmlns="&lt;A href="&gt;http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/A&gt;"&amp;gt;之前只允许DTD块存在，可以参考mab文件的overlay文件。接下来就是你要定义的&amp;#8220;函数&amp;#8221;了。我在例子中定义了：&lt;BR&gt;&lt;TREE id=func_tree flex="1"&gt;&lt;BR&gt;&amp;nbsp; &lt;TREECOLS&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;TREECOL id=firstname flex="3" primary="true" label="功能列表" /&gt;&lt;BR&gt;&amp;nbsp; &lt;/TREECOLS&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;TREECHILDREN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;TREEITEM open="true" container="true"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;TREEROW&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;TREECELL label="Guys" /&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TREEROW&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;TREECHILDREN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;TREEITEM&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;TREEROW&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;TREECELL label="Bob" /&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TREEROW&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TREEITEM&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;TREEITEM&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;TREEROW&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;TREECELL label="Jerry" /&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TREEROW&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TREEITEM&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TREECHILDREN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TREEITEM&gt;&lt;BR&gt;&amp;nbsp; &lt;/TREECHILDREN&gt;&lt;BR&gt;&lt;/TREE&gt;&lt;BR&gt;在文件的结尾还是需要使用：&lt;/OVERLAY&gt;来关闭overlay的。定义好了&amp;#8220;函数&amp;#8221;，我们就可以在a.xul文件中调用了，因为我们已经包含了b.xul，所以只要在使用的地方，直接调用所要用的模块的id即可。我的调用方式是：&lt;TREE id=func_tree /&gt;。这样浏览器显示的结果和原先的没有使用overlay的方式是一样的，只是对以后代码的维护和初学者的学习更加方便和容易。&lt;/P&gt;&lt;img src ="http://leejd.cndev.org/aggbug/6261.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>小东</dc:creator><title>XMLHTTP教程</title><link>http://leejd.cndev.org/archive/2005/01/28/5957.aspx</link><pubDate>2005-01-28 23:55:00Z</pubDate><guid>http://leejd.cndev.org/archive/2005/01/28/5957.aspx</guid><wfw:comment>http://leejd.cndev.org/comments/5957.aspx</wfw:comment><comments>http://leejd.cndev.org/archive/2005/01/28/5957.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://leejd.cndev.org/comments/commentRss/5957.aspx</wfw:commentRss><trackback:ping>http://leejd.cndev.org/services/trackbacks/5957.aspx</trackback:ping><description>&lt;P&gt;xmlhttp是我最近从Gmail那里得到的新知识，感觉应该是一项比较新的有用的技术。因为Gmail在使用他，而且对于用户来说，用起来是狠方便的。最近在研究的MAB也是使用了xmlhttp，使用xul巧妙的结合了GUI和WEB的优点，对我来说是很有吸引力的。&lt;BR&gt;不过我通过google查到的国内的xmlhttp资料来看，都是MS的那一套使用教程，而没有最近非常流行的firefox。如果firefox不能支持，那么我的xul就不能使用了，不过比较幸运的是，我在国外的网站上看到了在Mozilla下的应用（也含IE的），并且使用google提供的SOAP的API进行例子，狠不错的说：&lt;BR&gt;&lt;A href="http://jibbering.com/2002/4/httprequest.html"&gt;http://jibbering.com/2002/4/httprequest.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;顺道还发现了SVG的例子，一并给出：&lt;BR&gt;&lt;A href="http://jibbering.com/2002/5/dynamic-update-svg.html"&gt;http://jibbering.com/2002/5/dynamic-update-svg.html&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://leejd.cndev.org/aggbug/5957.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>小东</dc:creator><title>modpython实现XUL的简单例子</title><link>http://leejd.cndev.org/archive/2005/01/24/5847.aspx</link><pubDate>2005-01-24 23:17:00Z</pubDate><guid>http://leejd.cndev.org/archive/2005/01/24/5847.aspx</guid><wfw:comment>http://leejd.cndev.org/comments/5847.aspx</wfw:comment><comments>http://leejd.cndev.org/archive/2005/01/24/5847.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://leejd.cndev.org/comments/commentRss/5847.aspx</wfw:commentRss><trackback:ping>http://leejd.cndev.org/services/trackbacks/5847.aspx</trackback:ping><description>&lt;P&gt;由于最近感觉XUL比较符合我的开发想法，因此开始了XUL的学习，这里要&lt;STRONG&gt;狠&lt;/STRONG&gt;感谢一下&lt;A href="http://www.donews.net/limodou"&gt;木头&lt;/A&gt;兄的XUL教程，也要感谢一下木头兄的blog的回帖里面给的一个&lt;A href="http://www.faser.net/mab/chrome/content/mab.xul"&gt;地址&lt;/A&gt;，我这两天仔细的看了一下内容，对我学习XUL影响很大的。&lt;/P&gt;
&lt;P&gt;由于我的XUL程序肯定是需要后台支持的，因此我就没有细细的从头开始学XUL，只是从我的重点开始着手。因为我的后台布置了使用modpython，因此我就使用modpython作为了后台的处理脚本，输出脚本处理结果(XUL)给浏览器。由于对XUL是菜鸟，因此写的代码比较差劲，只是琢磨出了modpython的处理方式，但是与我想象的方式还是有很大的差距，需要继续理解和研究。&lt;/P&gt;
&lt;P&gt;下面是代码：&lt;BR&gt;---------------------&lt;BR&gt;&lt;FONT color=#a9a9a9&gt;#Coding: utf-8&lt;BR&gt;&lt;/FONT&gt;xul = &lt;FONT color=#0000ff&gt;"""&lt;?xml version="1.0" encoding="gb2312"?&gt;&lt;BR&gt;&lt;?xml-stylesheet href="chrome://global/skin/" type="text/css"?&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;WINDOW&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; id="findfile-window"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; title="Find Files"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; orient="horizontal"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns="&lt;A href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt;http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/A&gt;"&amp;gt;&lt;BR&gt;&lt;BUTTON&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; id="identifier"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class="dialog"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; label="确定"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; image="&lt;A href="http://www.cndev.org/_res/faces/face8170.gif"&gt;http://www.cndev.org/_res/faces/face8170.gif&lt;/A&gt;"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; default="true"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; disabled="true"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; accesskey="p"/&amp;gt;&lt;BR&gt;&lt;/WINDOW&gt;&lt;PRE&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;/P&gt;&lt;/PRE&gt;"""&lt;/FONT&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#800080&gt;&lt;STRONG&gt;def&lt;/STRONG&gt;&lt;/FONT&gt; hello (req):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; req.content_type = &lt;FONT color=#0000ff&gt;"text/xml"&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; req.send_http_header()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#800080&gt;&lt;STRONG&gt;return&lt;/STRONG&gt;&lt;/FONT&gt; xul&lt;/P&gt;
&lt;P&gt;在开始的时候，代码中使用的是req.content_type = "text/html"，显示结果不正常，原来是当成html处理了，后来改为了xml才显示正常。&lt;/P&gt;
&lt;P&gt;我期望的是通过JavaScript来实现和后台的互动，就像现在的很多网站使用JS和XML来完成显示一样，这样可以减少网络流量，刷新部分页面不必重新载入页面等。&lt;/P&gt;&lt;img src ="http://leejd.cndev.org/aggbug/5847.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>小东</dc:creator><title>XUL中涉及到的技术</title><link>http://leejd.cndev.org/archive/2005/01/24/5811.aspx</link><pubDate>2005-01-24 00:08:00Z</pubDate><guid>http://leejd.cndev.org/archive/2005/01/24/5811.aspx</guid><wfw:comment>http://leejd.cndev.org/comments/5811.aspx</wfw:comment><comments>http://leejd.cndev.org/archive/2005/01/24/5811.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://leejd.cndev.org/comments/commentRss/5811.aspx</wfw:commentRss><trackback:ping>http://leejd.cndev.org/services/trackbacks/5811.aspx</trackback:ping><description>&lt;P&gt;下面有一系列的其它技术介绍，作为利用Mozilla的XUL来开发跨平台的web应用程序的补充。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;XBL&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;可扩展绑定语言(XBL)是一种用来定义特殊的新元素（如XUL物件的&amp;#8220;绑定&amp;#8221;）的标记语言。使用XBL，开发人员可以定义一些XUL物件的新内容，为XUL增加一些附加的事件处理器，或者增加一些新的属性和方法。本质上来说，XBL通过定制已经存在的标签和创建新的标签来授权给开发人员尽可能的扩展XUL。&lt;BR&gt;使用XBL时，开发人员可以简单的构建自定义的用户接口物件，像进度条，各式弹出菜单，事件工具栏和搜索表单等。这些自定义组件可以通过特殊的自定义标签和关联属性在XUL应用程序中被使用。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Overlays&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Overlays被用来申明一些UI的额外内容的XUL文件。使用覆盖小片的XUL文件，而不必重新提供整个UI，并且尽量重用UI中某些特定的部分的这种通用的机制，用于向UI增加额外的组件。&lt;BR&gt;Overlays对于定制和扩展已经存在的应用程序来说是狠有用的机制，因为他们工作在两种关联但是高度不同的方式上。某些方面来说，Overlays和其它语言中的的&amp;#8220;include&amp;#8221;文件是同义的，因为一个应用程序可以在他的定义处使用Overlay方式来包含。但是Overlays也可以使用外部指定，允许设计者无需修改原始代码来添加程序之外的特性。&lt;BR&gt;在实际应用中，该特性允许开发人员为已发布的程序维护一个代码流，以后可以为客户定制商标或者专门的依赖于源码的特性。该方向是一个那些长期运行程序的更加容易和低花费的完整解决方案。&lt;BR&gt;对于打算为Mozilla增加新特性的软件开发人员来说，使用Overlays方式是有很大好处的。Netscape公众协议(NPL)和Mozilla公众协议(MPL)要求企图修改原始特性（随Mozilla一起提供的源码文件）的开发人员发布修改代码给消费者。Overlays可以被用来给Mozilla增加私有特性，而无需修改原始的开发代码。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;XPCOM/ XPConnect&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;XPCOM and XPConnect是XUL应用程序集成和使用外部库的补充技术。&lt;BR&gt;XPCOM是跨平台组件对象模型的标准，也是一个写跨平台软件的框架。XPCOM组件可以使用C，C++，和JavaScript来写，可以使用C，C++，JavaScript，Python和处于发展下的Perl扩展。&lt;BR&gt;XPConnect是一种允许在XPCOM和JavaScript之间简单协作的技术。XPConnect允许JavaScript对象直接访问和操作XPCOM对象。它也允许JavaScript对象通过XPCOM接口来调用XPCOM对象。&lt;BR&gt;总之，XPCOM和XPConnect允许开发人员创建需要使用编译型语言(C/C++)特殊处理的或者与操作系统相关的XUL应用程序。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;XPInstall&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;XPInstall，Mozilla的跨平台安装特性，提供了一个使用安装脚本来打包XUL应用程序组件标准方法，可以被Mozilla下载和执行。&lt;BR&gt;XPInstall允许用户轻松的通过Internet或者从公司内部服务器上安装一个新的XUL程序。安装一个新的应用程序，用户只需要点击web页面上或者邮件中的超链接，并通过一个Mozilla安装对话框接受新包安装。&lt;/P&gt;
&lt;P&gt;--------------------原文------------------------&lt;!--StartFragment --&gt;&lt;/P&gt;
&lt;H1&gt;&lt;FONT size=4&gt;Supporting Technologies&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;There are number of other technologies introduced by Mozilla that complement XUL for building cross platform web applications. &lt;/P&gt;
&lt;P&gt;
&lt;TABLE cellSpacing=0 cellPadding=8 width="100%" border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;XBL&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;The eXtensible Bindings Language (XBL) is a markup language that defines special new elements, or "bindings" for XUL widgets. With XBL, developers can define new content for XUL widgets, add additional event handlers to a XUL widget, and add new interface properties and methods. Essentially, XBL empowers developers with the ability to extend XUL by customizing existing tags and creating new tags of their own.&lt;/P&gt;
&lt;P&gt;By using XBL, developers can easily build custom user interface widgets such as progress meters, fancy pop-up menus, and even toolbars and search forms. These custom components can then be used in XUL applications by specifying the custom tag and associated attributes.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;Overlays&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;Overlays are XUL files used to describe extra content for the UI. They are a general mechanism for adding UI for additional components, overriding small pieces of a XUL file without having to resupply the whole UI, and reusing particular pieces of the UI.&lt;/P&gt;
&lt;P&gt;Overlays are a powerful mechanism for customizing and extending existing applications because they work in two related but highly different ways. In one respect, Overlays are synonymous with "include" files in other languages because an application may specify that an Overlay be included in its definition. But Overlays can also be specified externally, enabling the designer to &lt;EM&gt;superimpose&lt;/EM&gt; them upon an application without changing the original source.&lt;/P&gt;
&lt;P&gt;In practical terms, this enables developers to maintain one code stream for a given application then apply custom branding or include special features for customers with a completely independent code base. This leads to an overall solution that is easier and less costly to maintain in the long run.&lt;/P&gt;
&lt;P&gt;There is an additional benefit to Overlays for software developers who intend to add features to Mozilla that they wish to keep proprietary. The Netscape Public License (NPL) and Mozilla Public License (MPL) require developers who alter original work (source code files that are provided with Mozilla) to release the source code for these changes to their customers. Overlays can be used to add features to Mozilla without contaminating the original open source code with proprietary alterations.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;XPCOM/ XPConnect&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;XPCOM and XPConnect are complementary technologies that enable the integration of external libraries with XUL applications.&lt;/P&gt;
&lt;P&gt;XPCOM, which stands for Cross Platform Component Object Model, is a framework for writing cross-platform, modular software. XPCOM components can be written in C, C++, and JavaScript, and they can be used from C, C++, JavaScript, &lt;A title="" href="http://www.python.org" target=_blank&gt;&lt;/A&gt;, and with Perl extensions under development.&lt;/P&gt;
&lt;P&gt;XPConnect is a technology which enables simple interoperation between XPCOM and JavaScript. XPConnect allows JavaScript objects to transparently access and manipulate XPCOM objects. It also enables JavaScript objects to present XPCOM compliant interfaces to be called by XPCOM objects.&lt;/P&gt;
&lt;P&gt;Together, XPCOM and XPConnect enable developers to create XUL applications that require the raw processing power of compiled languages (C/C++) or access to the underlying operating system.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;XPInstall&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;XPInstall, Mozilla's Cross Platform Install facility, provides a standard way of packaging XUL application components with an install script that Mozilla can download and execute.&lt;/P&gt;
&lt;P&gt;XPInstall enables users to effortlessly install new XUL applications over the Internet or from corporate intranet servers. To install a new application the user need only click a hypertext link on a web page or in an email message and accept the new package through a Mozilla install dialog.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;&lt;img src ="http://leejd.cndev.org/aggbug/5811.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>