ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>8v天堂国产在线一区二区,亚洲精品福利电影,97视频在线观看免费http://www.aygfsteel.com/wiflish/category/10951.htmlLoving Life! Loving Coding!zh-cnTue, 27 Feb 2007 09:08:21 GMTTue, 27 Feb 2007 09:08:21 GMT60IE开发工å…äh’ä»?/title><link>http://www.aygfsteel.com/wiflish/archive/2007/02/09/98935.html</link><dc:creator>想飞的鱼</dc:creator><author>想飞的鱼</author><pubDate>Fri, 09 Feb 2007 02:39:00 GMT</pubDate><guid>http://www.aygfsteel.com/wiflish/archive/2007/02/09/98935.html</guid><wfw:comment>http://www.aygfsteel.com/wiflish/comments/98935.html</wfw:comment><comments>http://www.aygfsteel.com/wiflish/archive/2007/02/09/98935.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wiflish/comments/commentRss/98935.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wiflish/services/trackbacks/98935.html</trackback:ping><description><![CDATA[IEDevToolBaråQŒå¾®è½¯æä¾›çš„免费¾|‘页开发IE插äšgã€?br />主要功能有:(x¨¬) <br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)1.以树(w¨¨i)¾l“构查看 CodeDomåQŒåƈ查看每个 Element 属性,可以使用鼠标点击选中 Element; <br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)2.生成囄¡‰‡æŠ¥è¡¨åQŒå°±æ˜¯å°†™åµé¢ä¸Šè¯´æœ‰å‡ºçŽ°çš„å›„¡‰‡ç”Ÿæˆä¸€ä»½è¯¦¾l†çš„æŠ¥è¡¨åQŒè¿™æ ·å°±çœçš„æˆ‘们自己åŽÀL‰¾å›„¡‰‡è·¯å¾„和量囄¡‰‡å¤§å°½{‰ç­‰; <br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)3.高ä(sh¨´)º®æ˜„¡¤ºè¡¨æ ¼åQŒè¡¨æ ¼å•元,Div ½{‰çš„è¾ÒŽ(gu¨©)¡†åQŒè¿™ä¸ªåœ¨æˆ‘们调整布局时也是很有用; <br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)4.™åµé¢ž®ºå­åQŒå¯ä»¥ç„¶ä½ ä“Q意在™åµé¢ä¸Šåº¦é‡é•¿åº¦ï¼Œ˜q™ä¸ªæ˜¯å¤§å¤§çš„æé«˜?sh¨´)º†(ji¨£n)我们的工作效率åQŒä¸ç”¨äØ“(f¨´)äº?ji¨£n)量个长度而抓囑ֆç”¨ç”»å›‘Ö·¥å…·é‡ã€? <br /> (t¨©ng) (t¨©ng) (t¨©ng) 5.集成äº?ji¨£n)一个取色小工具ColorPickerã€?br /><br /> (t¨©ng) (t¨©ng) 安装之后åQŒåœ¨IE菜单的“查看â€?åQ?“工å…äh â€?里面钩选“Developer Toolbar”项卛_¯ã€?br />å¼ºçƒˆå»ø™®®web开发äh员安装此插äšgã€?<br /><br />1ã€?a target="_blank" >官方下蝲</a><br />2ã€?a target="_blank" href="/Files/wiflish/IEDevToolBar20070112.rar">blog下蝲</a><br /><br /><br /><img src ="http://www.aygfsteel.com/wiflish/aggbug/98935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wiflish/" target="_blank">想飞的鱼</a> 2007-02-09 10:39 <a href="http://www.aygfsteel.com/wiflish/archive/2007/02/09/98935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]关于荣èîiè§‚çš„ž®æ•…事——十二生è‚?/title><link>http://www.aygfsteel.com/wiflish/archive/2007/02/05/97915.html</link><dc:creator>想飞的鱼</dc:creator><author>想飞的鱼</author><pubDate>Mon, 05 Feb 2007 00:58:00 GMT</pubDate><guid>http://www.aygfsteel.com/wiflish/archive/2007/02/05/97915.html</guid><wfw:comment>http://www.aygfsteel.com/wiflish/comments/97915.html</wfw:comment><comments>http://www.aygfsteel.com/wiflish/archive/2007/02/05/97915.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wiflish/comments/commentRss/97915.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wiflish/services/trackbacks/97915.html</trackback:ping><description><![CDATA[[转]<a target="_blank" href="/sirius/archive/2007/02/04/97850.html">http://www.aygfsteel.com/sirius/archive/2007/02/04/97850.html</a><br /><br />关于荣èîiè§‚çš„ž®æ•…事——十二生è‚?br /><p>好口才!以下是正文ã€?br /><br />---------------------------------------------------------------------------------------------------------<br />有一‹Æ¡ï¼Œæˆ‘有æœÞZ¼š(x¨¬)和欧‹z²è´µæ—èš˜¡ã€‚可能酒喝多äº?ji¨£n),一位å¯d国贵族站äº?ji¨£n)è“v来,讽刺è¯ß_(d¨¢)¼š(x¨¬)“你们中国äh都是属什么猪啊!狗啊åQè€é¼ å•Šï¼ä¸åƒæˆ‘们åQŒéƒ½æ˜¯é‡‘牛åñ”、狮子åñ”、仙奛_ñ”……真不知道你们祖先怎么想的åQŸâ€å½“时这些贵族听完哈哈大½W‘,˜q˜ä(sh¨´)º’相碰杯,先前的优雅完全不见了(ji¨£n)ã€?/p><p>æŒ? 理说åQŒäh家在骂你¼œ–å®—äº?ji¨£n),你即使没有话è¯ß_(d¨¢)¼ŒèµïL(f¨¥ng) å¯ä»¥æŽ€æ¡Œå­å•Šï¼ä½†æ‰€æœ‰äh都坐着不吭壎ͼŒä¹Ÿå¯èƒ½æ˜¯˜q˜æ²¡ååº”˜q‡æ¥åQŒæˆ‘当时只好òq›_’Œåœ°å‘Šè¯‰åœ¨åœºæ‰€æœ‰å¤–宾:(x¨¬)“中国äh 的祖先是很实在的åQŒæˆ‘们十二生肖两两相对,六道轮回åQŒä½“çŽîCº†(ji¨£n)我们¼œ–先对中国äh全部的期望跟要求。”这æ—Óž¼ŒçŽ°åœºæ°”æ°›è™½ç„¶ä»Žå¬‰é—¹è{为安é?r¨´n)ï¼Œä½†æ˜¯ä»–ä»¬è„æ€¸Š˜q˜æ˜¯ä¸€ 副不屑的样子。我è¯ß_(d¨¢)¼š(x¨¬)“第一¾l„是老鼠和牛。老鼠代表智慧åQŒç‰›ä»£è¡¨å‹¤å¥‹ã€‚智慧和勤奋一定要紧紧¾l“合在一赗÷€‚如果光有智慧不勤奋åQŒé‚£ž®±å˜æˆå°èªæ˜ŽåQ›è€Œå…‰æ˜¯å‹¤ 奋,不动脑筋åQŒé‚£ž®±å˜æˆæ„šè ¢ã€‚所以这两者一定要¾l“合åQŒè¿™æ˜¯æˆ‘们祖先对中国人的½W¬ä¸€¾l„期望和要求åQŒä¹Ÿæ˜¯æœ€é‡è¦çš„一¾l„。”“第二组是老虎和兔子。老虎代表å‹? 猛,兔子代表谨慎。勇猛和谨慎一定要紧紧¾l“åˆåœ¨ä¸€èµøP¼Œæ‰èƒ½åšåˆ°æ‰€è°“的胆大å¿?j¨©)细。如果勇猛离开äº?ji¨£n)è°}慎,ž®±å˜æˆäº†(ji¨£n)鲁莽åQŒè€Œä½ æ²¡æœ‰å‹‡çŒ›åQŒä¸€å‘³çš„谨慎åQŒè°}慎就变成 胆怯。这一¾l„也非常重要åQŒæ‰€ä»¥æ”¾åœ¨ç¬¬äºŒã€‚”我看着˜q™äº›è´‰|—åQŒè¡¥ä¸Šä¸€å¥ï¼š(x¨¬)“所以当我们表现å‡?gu¨®)™°}æ…Žçš„æ—¶å€™ï¼Œåƒä¸‡ä¸è¦ä»¥äØ“(f¨´)我们中国人没有勇猛的一面。â€?/p><p>“实际上åQŒæˆ‘们祖先追求的是一¿Uå’Œè°çš„æ™ºæ…§å’Œåœ†èžï¼Œä»Žæ¥ä¸ä¼š(x¨¬)单独¾l™ä¸€ä¸ªè¦æ±‚å’Œä»ÕdŠ¡ã€‚â€çœ‹ç€å¤§å®¶é™·å…¥æ²‰æ€ï¼Œæˆ‘ç‘ô(h¨´)¾l­å¾€(xi¨¤n)下说ã€?/p><p>“第三组是龙和蛇。龙代表刚猛åQŒè›‡ä»£è¡¨æŸ”韧。所谓刚者易折,太刚äº?ji¨£n)容易折断,但是如果只有柔的一面,ž®±æ˜“失去主见åQŒæ‰€ä»¥åˆšæŸ”åÆˆ‹¹Žæ˜¯æˆ‘们历代的祖训ã€?/p><p>“接 下来是马和羊。马代表一往(xi¨¤n)无前åQŒç›´å¥”目标,¾ŸŠä»£è¡¨å’Œ™åºã€‚如果一个äh只顾自己直奔目标åQŒä¸™å‘Ö‘¨å›ß_(d¨¢)¼Œå¿…ç„¶ä¼?x¨¬)和周围不断¼‚•碰åQŒæœ€åŽä¸è§å¾—能达到目标。但是一个äh 如果光顾着和周围和™åºï¼Œä¹‹åŽä»–连方向都没有了(ji¨£n)åQŒç›®æ ‡ä¹Ÿå¤±åŽ»äº?ji¨£n)。所以一往(xi¨¤n)无前的秉性一定要与和™åºç´§ç´§ç»“åˆåœ¨ä¸€èµøP¼Œ˜q™æ˜¯æˆ‘们¼œ–先对中国äh的第四组期望ã€?/p><p>“再 接下来是猴子和鸡。猴子代表灵‹z»ï¼Œè‡³äºŽé¸¡å‘¢åQŒä»¥å‰çš„òq´ä»£æ²¡æœ‰é’Ÿï¼Œéƒ½æ˜¯å¬é¸¡é¸£å£°å†›_®šä¸€å¤©çš„开始,所以鸡定时打鸣åQŒä»£è¡¨æ’定。灵‹zÕd’Œæ’定一定要紧紧¾l“合èµäh¥ã€? 如果你光灉|´»åQŒæ²¡æœ‰æ’定,再好的政½{–最后也得不到收莗÷€‚但如果说你光是恒定åQŒä¸€æ½­æ­»æ°´ã€ä¸€å—铁板,那就不会(x¨¬)有我们今天的攚w©å¼€æ”¾äº†(ji¨£n)。只有它们之间非常圆èž? 的结合,一斚w¢å…ähœ‰½E›_®šæ€§ï¼Œä¿æŒæ•´ä½“的和谐和¿U©åºåQŒå¦ä¸€æ–šw¢åˆèƒ½ä¸æ–­å˜é€šåœ°å‰è¿›åQŒè¿™æ‰æ˜¯æœ€æ ÒŽ(gu¨©)œ¬çš„要旨ã€?/p><p>“最后是狗和猪。狗是代表忠 诚,猪是代表随和。一个äh如果太忠诚,不懂得随和,ž®×ƒ¼š(x¨¬)排斥他äh。而反˜q‡æ¥åQŒä¸€ä¸ªäh太随和,没有忠诚åQŒè¿™ä¸ªähž®±å¤±åŽÕdŽŸåˆ™ã€‚æ‰€ä»¥æ— è®ºæ˜¯å¯¹ä¸€ä¸ªæ°‘æ—å›½å®¶çš„å¿? 诚、对团队的忠诚,˜q˜æ˜¯è‡ªå·±ç†æƒ³çš„å¿ è¯šï¼Œä¸€å®šè¦ä¸Žéšå’Œç´§ç´§ç»“åˆåœ¨ä¸€èµøP¼Œ˜q™æ ·æ‰å®¹æ˜“真正保持内å¿?j¨©)深处的忠诚。这ž®±æ˜¯æˆ‘们中国äºÞZ¸€ç›´åšæŒçš„外圆内方åQŒå›å­å’Œè€? 不同ã€?/p><p>“中国äh每个人都有属于自å·Þqš„生肖åQŒæœ‰çš„äh属猪åQŒæœ‰çš„äh属狗åQŒè¿™æ„ä¹‰ä½•在åQŸå®žé™…上åQŒæˆ‘们的¼œ–先期望我们要圆融,不能偏颇åQŒè¦æ±‚æˆ‘ä»¬æ‡‚å¾—åˆ°å¯¹åº”é¢åˆ‡å…¥ã€‚æ¯”å¦‚å±žçŒªçš„äºø™ƒ½å¤Ÿåœ¨ä»–的随和本性中åQŒä¹ŸåŽ»è¿½æ±‚å¿ è¯šï¼›è€Œå±žç‹—çš„äººåˆ™åœ¨å¿ è¯šçš„æœ¬æ€§ä¸­åQŒåŽ»åšåˆ°éšå’Œã€‚â€?/p><p>è§? 释完十二生肖åQŒæˆ‘è¯ß_(d¨¢)¼š(x¨¬)“不知道你们那些宝瓶座啊、射手åñ”啊、公¾ŸŠåñ”啊,体现äº?ji¨£n)你们祖先哪些期望和要求åQŸä¹Ÿå¸Œæœ›ä¸åèµæ•™ã€‚”结果呢åQŒè¿™äº›è´µæ—è€çˆ·ä»¬å¾ˆé•¿æ—¶é—? 都没说话åQŒå…¨åœºé¸¦é›€æ— å£°åQŒä¸€æ šw’ˆæŽ‰åœ¨åœîC¸Šéƒ½èƒ½å¬è§ã€‚最后贵族们¾UïL(f¨¥ng)º·ç”Þp¡·åœ°è¡¨½Cºå¯¹ä¸­å›½äººå’Œä¸­å›½äººçš„¼œ–先非常敬佩åQšâ€œæ²¡æœ‰æƒ³åˆîC¸­å›½çš„十二生肖有这么深刻而实åœ? 的意义。â€?/p> åQˆæ²ˆé»?口述) <img src ="http://www.aygfsteel.com/wiflish/aggbug/97915.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wiflish/" target="_blank">想飞的鱼</a> 2007-02-05 08:58 <a href="http://www.aygfsteel.com/wiflish/archive/2007/02/05/97915.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>½W”记本购机测试èÊY件推è?/title><link>http://www.aygfsteel.com/wiflish/archive/2007/01/22/95370.html</link><dc:creator>想飞的鱼</dc:creator><author>想飞的鱼</author><pubDate>Mon, 22 Jan 2007 08:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/wiflish/archive/2007/01/22/95370.html</guid><wfw:comment>http://www.aygfsteel.com/wiflish/comments/95370.html</wfw:comment><comments>http://www.aygfsteel.com/wiflish/archive/2007/01/22/95370.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wiflish/comments/commentRss/95370.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wiflish/services/trackbacks/95370.html</trackback:ping><description><![CDATA[ <p>ä¸ÀLœº½‹‡ï¼š(x¨¬)<a >http://www.ccw.com.cn/notebook/pczx/pc/htm2007/20070122_237095.shtml</a><br /><br />外设½‹‡ï¼š(x¨¬)<a >http://www.ccw.com.cn/notebook/pczx/pc/htm2007/20070122_237093.shtml</a><br /><br />¾l“:(x¨¬)如果你是购买新机器的话,只要带上Everest v3.50.852 Beta整机‹¹‹è¯•软äšg、Battery Eater Pro v2.60 Final甉|± ‹¹‹è¯•软äšg、Nokia Monitor Test屏幕‹¹‹è¯•软äšg卛_¯ã€‚如果你是购ä¹îCºŒæ‰‹ç¬”记本的话åQŒå°¾~–徏议你先挑(xi¨§)一个有旉™—´çš„æ—¥å­ï¼ŒæŠŠæ‰€æœ‰æµ‹è¯•èÊY仉™ƒ½å¸¦ä¸ŠåQŒå†ä¹°å¥½æ°´å’Œé¢åŒ…åQŒä¸€è¾ÒŽ(gu¨©)µ‹æœºå™¨ä¸€è¾¹çœ‹å¥¸å•†å“­ã€?/p> <img src ="http://www.aygfsteel.com/wiflish/aggbug/95370.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wiflish/" target="_blank">想飞的鱼</a> 2007-01-22 16:54 <a href="http://www.aygfsteel.com/wiflish/archive/2007/01/22/95370.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]制作Docbook文档http://www.aygfsteel.com/wiflish/archive/2006/08/22/65120.html想飞的鱼想飞的鱼Tue, 22 Aug 2006 09:14:00 GMThttp://www.aygfsteel.com/wiflish/archive/2006/08/22/65120.htmlhttp://www.aygfsteel.com/wiflish/comments/65120.htmlhttp://www.aygfsteel.com/wiflish/archive/2006/08/22/65120.html#Feedback0http://www.aygfsteel.com/wiflish/comments/commentRss/65120.htmlhttp://www.aygfsteel.com/wiflish/services/trackbacks/65120.html原文链接åQ?a >http://blog.csdn.net/mickeyrat/archive/2005/02/08/284270.aspx



制作Docbook文档

1. 制作Docbook文档需要了(ji¨£n)解的知识åQ?/p>

1) XML - ˜q™æ˜¯æœ€åŸºæœ¬çš„,如果˜q™ä¸ªéƒ½ä¸æ‡‚的话,最好先找本入门¾U§çš„书看看;
2) DTD - 有助于你理解Docbook的结构;
3) XSL - 有助于定制自å·Þqš„DocbookåQ?br />4) XSL-FO - 最好了(ji¨£n)解一点,有助于更好的定制自己的PDF输出ã€?/p>

2. 制作Docbook文档的最½Ž€å•çš„˜q‡ç¨‹åŒ…括以下的步骤:(x¨¬)

1) ¾~–辑XMLæ–‡äšg;
2) 对XMLæ–‡äšg˜q›è¡Œå¤„理åQŒç”ŸæˆHTML或者PDF文档ã€?/p>

2.1. ¾~–辑XMLæ–‡äšg

如果使用¾U¯æ–‡æœ¬ç¼–辑器来完成这™å¹å·¥ä½œï¼Œæˆ‘敢打赌一天之后你ž®±åšä¸ä¸‹åŽÖMº†(ji¨£n)åQŒç›´æŽ¥ç¼–辑XML可是一件苦差事。ä‹É用类似XMLSPY˜q™æ ·çš„工典P¼Œæä¾›è‡ªåŠ¨å¡«å……åŠŸèƒ½åQŒåƈ且随时可以进行有效性检查,不容易出错,可以让工作轻松不ž®‘ã€?/p>

Docbook文档分两¾c»ï¼š(x¨¬)书(bookåQ‰å’Œæ–‡ç« åQˆarticleåQ‰ã€‚articlež®±æ˜¯ä¸€èˆ¬çš„æ–‡ç« åQŒä¸åŒ…含章(chapteråQ‰ï¼Œåªæœ‰èŠ? åQˆsectionåQ‰ã€‚book比较完整åQŒå¯ä»¥åŒ…含前­a€åQˆprefaceåQ‰ï¼Œéƒ¨åˆ†åQˆpartåQ‰ï¼Œç« ï¼ˆchapteråQ‰ï¼Œæ–‡ç« åQˆarticleåQ‰ç­‰½{‰ã€‚以上描 ˜q°çš„都是Docbook DTD定义的元素,˜q™é‡Œä¸å¯èƒ½ç»™å‡?gu¨®)™¯¦¾l†çš„说明åQŒå…·ä½“每个元素的¾l“构参见Docbook DTDã€?/p>

让我们先来看一个book¾cÕdž‹æ–‡æ¡£çš„典型定义:(x¨¬)

 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) list 1. 典型的book¾cÕdž‹æ–‡æ¡£
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) "
http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<book>
 (t¨©ng)<bookinfo>
 (t¨©ng) <title>My Book</title>
 (t¨©ng) <author>
 (t¨©ng) (t¨©ng) <firstname>My First Name</firstname>
 (t¨©ng) (t¨©ng) <surname>My Last Name</surname>
 (t¨©ng) </author>
 (t¨©ng) <publisher>
 (t¨©ng) (t¨©ng) <publishername>CSDN</publishername>
 (t¨©ng) </publisher>
 (t¨©ng) <isbn>ISBN#</isbn>
 (t¨©ng) <copyright>
 (t¨©ng) (t¨©ng) <year>2005</year>
 (t¨©ng) </copyright>
 (t¨©ng)</bookinfo>
 (t¨©ng)<part>
 (t¨©ng) <title>My Part</title>
 (t¨©ng) <chapter>
 (t¨©ng) (t¨©ng) <title>My Chapter</title>
 (t¨©ng) (t¨©ng) <sect1>
 (t¨©ng) (t¨©ng) (t¨©ng) <title>My Section1</title>
 (t¨©ng) (t¨©ng) (t¨©ng) <para>This (t¨©ng) is a demo of a book.</para>
 (t¨©ng) (t¨©ng) </sect1>
 (t¨©ng) </chapter>
 (t¨©ng)</part>
</book>

该文档声明ä‹É用的DTDä¸?a >http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtdåQ? 所有的内容都包含在book元素中,bookinfo元素包含书名åQˆtitleåQ‰ã€ä½œè€…(authoråQ‰ã€å‡ºç‰ˆç¤¾åQˆpublisheråQ‰ã€ä¹¦å? åQˆisbnåQ‰å’Œç‰ˆæƒåQˆcopyrightåQ‰ã€‚接着part元素包含的内å®ÒŽ(gu¨©)˜¯è¯¥ä¹¦çš„一个部分,下面有一章,接着有一节(sect1åQ‰ï¼Œå½“然都有各自的标题ã€?/p>

æ€Žä¹ˆæ øP¼Œå„个元素的含义是不是很显而易见,æ ÒŽ(gu¨©)®å…ƒç´ çš„名¿UŽÍ¼Œä½ å°±èƒ½çŸ¥é“自å·Þqš„内容该包含在什么元素里面ã€?/p>

在上面的例子里面åQŒæœ‰äº›å…ƒç´ ä¸æ˜¯å¿…™åȝš„。譬如bookinfoåQŒå¯ä»¥æ²¡æœ‰æˆ–者有一个,看Docbook DTDž®±å¯ä»¥çŸ¥é“ã€?/p>

下面我以article¾cÕdž‹çš„æ–‡æ¡£äØ“(f¨´)例子åQŒè¯´æ˜ŽDocbook文档的制作过½E‹ã€?/p>

首先是XML声明åQŒè¯´æ˜Žæ–‡æ¡£çš„一些基本信息:(x¨¬)

<?xml version="1.0" encoding="UTF-8"?>

紧接着是文档的DTD声明åQŒè¯´æ˜Žæ–‡æ¡£ä‹É用的DTD˜q˜æœ‰æ ¹å…ƒç´ ã€‚典型的docbook文档的DTD声明如下åQ?/p>

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) "
http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

˜q™ä¸ªå£°æ˜Žè¡¨æ˜ŽåQŒæ–‡æ¡£çš„æ ¹å…ƒç´ æ˜¯<article>åQŒä‹É用外部DTDåQŒè¯¥DTD用一个公共标识符"-//OASIS//DTD DocBook XML V4.2//EN"标识åQŒè¯¥DTD位于¾|‘络的某处。标识符必须是全球唯一的,其åÅžå¼äØ“(f¨´)åQ?/p>

prefix//owner-identifier//text-class text-description//language//display-version

½W¬ä¸€ä¸ªprefix为â€?/-”,â€?”表½Cºæ˜¯å·²æ³¨å†Œçš„æ ‡è¯†åQŒâ€?”则相反。其他各部分的含义自己对照ã€?/p>

接着ž®±å¯ä»¥æ·»åŠ å†…å®¹äº†(ji¨£n)。首先是根元素:(x¨¬)

<article>

</article>

article必须有一个标题:(x¨¬)

<article>
 (t¨©ng) (t¨©ng) (t¨©ng) <title>My Article</title>
</article>

标题?sh¨´)¹‹åŽå¿…须有内容,不可能有无内容的文章åQ?/p>

<article>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <title>My Article</title>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <sect1>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </sect1>
</article>

˜q™é‡Œæˆ‘们æ·ÕdŠ ä¸€ä¸ªå°èŠ‚ï¼Œâ€œsect1”是ž®èŠ‚çš„æœ€™å¶å±‚元素åQŒå…¶¾~–排方式与MS Word的“heading 1”类伹{€?/p>

与article相同åQŒsect1也必™åÀLœ‰æ ‡é¢˜åQ?/p>

<article>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <title>My Article</title>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <sect1>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <title>My Section</title>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </sect1>
</article>

sect1也不允许无内容:(x¨¬)

<article>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <title>My Article</title>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <sect1>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <title>My Section</title>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <para>This is my first article.</para>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </sect1>
</article>

正文的内容一般用<para>元素ž®è£…åQŒparaåÏx(ch¨®ng)®µè½ï¼ˆparagraphåQ‰çš„æ„æ€ã€?/p>

现在ž®±æœ‰äº?ji¨£n)一个最½Ž€å•çš„Docbook文档。list 2是完整的代码ã€?/p>

 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) list 2. 一个简单的article文档
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) "
http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<article>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <title>My Article</title>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <sect1>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <title>My Section</title>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <para>This is my first article.</para>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </sect1>
</article>

¾~–辑完成之后åQŒä¿å­˜ä(sh¨´)Ø“(f¨´)myarticle.xmlåQŒæŽ¥ç€ž®±å¯ä»¥ç”ŸæˆHTML或者PDFäº?ji¨£n)ã€?/p>

2.2 生成HTML

关于如何安装配置工具åQŒå‚见“安装配¾|®Docbook”ã€?/p>

我ä‹É用cygwin下的xsltproc来生成HTMLåQŒåœ¨cygwinçš„shell中输入命令:(x¨¬)

xsltproc --nonet --output myarticle.html c:/docbook-xsl-1.67.2/html/docbook.xsl myarticle.xml

--nonet表示我不希望从网¾lœèŽ·å–DTDåQŒè¿™æ ·å¯ä»¥èŠ‚çœæ—¶é—´ã€?/p>

--output指定我希望输出的文äšg名,˜q™é‡ŒæŒ‡å®šçš„æ˜¯myarticle.htmlã€?/p>

紧接着是用来è{换XMLæ–‡äšgçš„XSL样式单,需要注意,使用的是html目录下的XSL样式单ã€?/p>

最后是要处理的Docbook文档�/p>

没有意外的话åQŒçŽ°åœ¨ä½ ž®±å¯ä»¥ç”¨‹¹è§ˆå™¨æ‰“å¼€myarticle.html看看效果äº?ji¨£n)ã€?/p>

2.3 生成PDFæ–‡äšg

下面使用FOP生成PDFæ–‡äšg。关于如何安装配¾|®FOPåQŒå‚è§?a >http://blog.csdn.net/mickeyrat/archive/2005/02/06/283471.aspxã€?/p>

在控制台输入命ä×o(h¨´)åQ?/p>

fop -xml myarticle.xml -xsl C:\docbook-xsl-1.67.2\fo\docbook.xsl myarticle.pdf

Linux的命令类ä¼û|¼Œæ³¨æ„docbook.xslçš„èµ\径ã€?/p>

-xml指定需要è{换的docbook文档ã€?/p>

-xsl指定使用的样式单åQŒæ³¨æ„ï¼Œ˜q™é‡Œä½¿ç”¨çš„fo目录下的样式单,˜q™æ˜¯ä¸“䨓(f¨´)转换XSL-FO开发的ã€?/p>

最后是输出文档的文件名�/p>

在FOP处理˜q‡ç¨‹ä¸­ï¼Œä¼?x¨¬)è¾“å‡ø(gu¨®)™®¸å¤šè¯¸å?/p>

property - "background-position-horizontal" is not implemented yet.

的信息。不用理ä¼?x¨¬),˜q™æ˜¯å› äØ“(f¨´)FOP˜q˜åœ¨å¼€å‘中åQŒè®¸å¤šXSL-FO的特性都不支持。这æ ïL(f¨¥ng)š„问题òq¶ä¸å½±å“æœ€¾lˆæ–‡æ¡£çš„生成ã€?/p>

快打开myarticle.pdf看看效果吧,是不是很专业的PDF文档åQ?/p>

是不是觉得制作docbook文档很简单呢åQŸè¿™ä¹ˆæƒ³å¯å°±é”™äº†(ji¨£n)åQŒæœ¬æ–‡å‰©ä½™çš„部分介绍制作Docbook文档的高¾U§æŠ€å·§ã€?/p>

3. 定制自己的XSL样式�/p>

当你开始正式制作自å·Þqš„docbook文档之后åQŒä½ ä¼?x¨¬)发现生成的文档òq¶ä¸èƒ½å®Œå…¨æ»¡­‘³ä½ å¯ÒŽ(gu¨©) ¼å¼çš„要求åQŒè­¬å¦‚章节号、页码、字体等½{‰ã€‚这一节就告诉你如何定制自å·Þqš„XSL样式单,生成满èƒö特定需求的文档。下面的内容ä¼?x¨¬)涉及(qi¨¢ng)XSLå’ŒXSL-FOã€?/p>

有äh可能ä¼?x¨¬)想通过修改Docbook DTD辑ֈ°å®šåˆ¶ç›®çš„åQŒä½†æ˜¯è¿™¿Uæ–¹å¼æ˜¯ä¸å¾è®®é‡‡ç”¨çš„åQŒå› ä¸ÞZ¿®æ”¹Docbook DTD之后åQŒä½ çš„æ–‡æ¡£å°±ä¸å†æ˜¯Docbook文档ã€?/p>

因䨓(f¨´)Docbook把内容与样式完全分开åQŒæ‰€ä»¥ä¿®æ”¹XSL样式单,ž®Þpƒ½å¤Ÿæ”¹å˜è¾“出结果ã€?/p>

ä¸ÞZº†(ji¨£n)修改样式单,你需要有自己的定制层åQŒä¹Ÿž®±æ˜¯åŸÞZºŽDocbook XSL样式单之上开发自å·Þqš„æ ·å¼å•。千万不要直接修改Docbook XSL样式单,˜q™æ ·åšæœ‰ä¸¤ä¸ª¾~ºç‚¹åQ?/p>

1) 不易¾l´æŠ¤åQšä½ çš„修改可能会(x¨¬)分散在几十个文äšg中,˜q‡å‡ å¤©ï¼Œä½ å°±ä¼?x¨¬)忘记自å·×ƒ¿®æ”¹è¿‡çš„地斏V€?/p>

2) 不易升çñ”åQšå¦‚果你惛_‡¾U§æ ·å¼åˆ°æ–°çš„版本åQŒä½ ä¸å¾—不把你所做的所有修改合òq¶åˆ°æ–°çš„ç‰ˆæœ¬ä¸­ï¼ŒåˆåÆˆçš„è¿‡½E‹ä¸­è‚¯å®šè¦å¤„理大量的冲突åQŒåƈ且容易出错ã€?/p>

我想你应该知é?lt;xsl:include>ä¸?lt;xsl:import>的区别:(x¨¬)使用<xsl: include>引入的元素,如果有重复定义的åQŒç¬¬ä¸€‹Æ¡å‡ºçŽ°çš„æœ‰æ•ˆåQ›ä‹Éç”?lt;xsl:import>引入的元素,最后一个有效。定制层å…? 实是依赖于XSL˜q™æ ·çš„一个特性,使用<xsl:import>引入Docbook XSL样式单的èµïL(f¨¥ng)‚¹æ–‡äšgåQŒç„¶åŽæ·»åŠ è‡ªå·Þqš„修改。list 3¾l™å‡ºä¸€ä¸ªå®šåˆ¶å±‚æ–‡äšg的框架ã€?/p>

 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) list 3 customization.xsl
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="
http://www.w3.org/1999/XSL/Transform" version="1.0">
 (t¨©ng) (t¨©ng) (t¨©ng) <xsl:import href="html/docbook.xsl"/>
 (t¨©ng) (t¨©ng) (t¨©ng) ...
 (t¨©ng) (t¨©ng) (t¨©ng) modifications
 (t¨©ng) (t¨©ng) (t¨©ng) ...
</xsl:stylesheet>

定制层是XSLæ–‡äšgåQŒå› æ­¤éœ€è¦å¼•å…¥xsl的名字空间。在½W¬ä¸‰è¡Œï¼Œå¼•入转换HTMLçš„XSL样式单的èµïL(f¨¥ng)‚¹æ–‡äšgdocbook.xslåQŒå¦‚果是XSL-FO的定制层åQŒè“vç‚ÒŽ(gu¨©)–‡ä»¶åœ¨fo目录下。然后就可以æ·ÕdŠ è‡ªå·±çš„ä¿®æ”¹äº†(ji¨£n)ã€?/p>

å®šåˆ¶åˆ†äØ“(f¨´)两类åQŒä¸€¾cÀL˜¯ä¿®æ”¹æ ·å¼å•参敎ͼŒä¸€¾cÀL˜¯ä¿®æ”¹æ¨¡æ¿ã€?/p>

3.1 修改样式单参�/p>

打开html/param.xsl或者f(xi¨¦)o/param.xslåQŒå¯ä»¥æ‰¾åˆ°æ‰€æœ‰çš„æ ·å¼å•参数。看下面˜q™ä¸ªä¾‹å­

<xsl:param name="section.autolabel" select="0"/>

参数的名字是“section.autolabel”,å€égØ“(f¨´)â€?”。这个参数的作用是控制生成文档的时候是否对ž®èŠ‚è‡ªåŠ¨¾~–号åQŒè­¬å¦‚â€?”,â€?.1”等½{‰ã€‚â€?”表½Cºå…³é—­è‡ªåŠ¨ç¼–å—÷€‚你可以看一下前面生成的文档åQŒæ˜¯ä¸æ˜¯æ²¡æœ‰ç« èŠ‚åøP¼Ÿ

要打开自动¾~–号åQŒåªéœ€è¦è¿™æ ·ä¿®æ”¹ï¼š(x¨¬)

<xsl:param name="section.autolabel" select="1"/>

你不是直接在param.xsl里面改的吧?如果是的话,赶紧改回来!千万记得åQŒæ‰€æœ‰çš„修改都写在前面生成的customization.xsl。现在重新生成HTMLåQ?/p>

xsltproc --nonet --output myarticle.html c:/docbook-xsl-1.67.2/customization.xsl myarticle.xml

或生成PDF
fop -xml myarticle.xml -xsl C:\docbook-xsl-1.67.2\customization.xsl myarticle.pdf

注意åQŒè¿™ä¸ªå‚数对HTMLå’ŒXSL-FO都有效,但是你必™åÕdœ¨customization.xsl中用<xsl:import>引入对应的è“vç‚ÒŽ(gu¨©)–‡ä»Óž¼Œå¦åˆ™ä¼?x¨¬)报错。现在新的文档是不是出现章节号了(ji¨£n)åQ?/p>

再来一个。看你的PDF文档åQŒè‚¯å®šæ²¡æœ‰bookmarkåQŒå› ä¸ºåœ¨fo/param.xsl中,bookmark的功能被关闭äº?ji¨£n)。在customization.xsl里添加:(x¨¬)

<xsl:param name="fop.extensions" select="1"/>

˜q™æ ·FOP在处理的时候就ä¼?x¨¬)生成bookmark。注意这个参数的名字åQŒâ€œfop.extensions”,表示˜q™ä¸ªå‚数属于FOP的扩展,只对FOP有效。如果你使用PassiveTeXåQŒé‚£ä¹ˆéœ€è¦è®¾¾|®â€œpassivetex.extensions”ã€?/p>

再来一个复杂点的:(x¨¬)

<xsl:param name="formal.title.placement">
 (t¨©ng) figure after
 (t¨©ng) example before
 (t¨©ng) equation before
 (t¨©ng) table before
 (t¨©ng) procedure before
 (t¨©ng) task before
 (t¨©ng)</xsl:param>

˜q™ä¸ªå‚数作用于文章中的图、表½{‰ç­‰å…ƒç´ çš„æ ‡é¢˜ï¼ŒæŽ§åˆ¶æ ‡é¢˜çš„位¾|®åœ¨å‰é¢åQˆbeforeåQ‰è¿˜æ˜¯åŽé¢ï¼ˆafteråQ‰ï¼Œparam.xsl预定义的都是 “before”,˜q™é‡ŒæŠŠfigure的标题放在图的后面。这个参数对HTMLå’ŒXSL-FO都有效。在你的文档中添åŠ?lt;figure>å…? 素,重新生成文档åQŒå°±å¯ä»¥çœ‹åˆ°æ•ˆæžœã€?/p>

3.2 修改模板

Docbook XSL提供很多的参数控制输出的效果。但是有时候,仅仅修改参数òq¶ä¸èƒ½æ»¡­‘Ïx(ch¨®ng)‰€æœ‰çš„要求åQŒè¿™æ—Óž¼Œä½ å°±éœ€è¦ä¿®æ”ÒŽ(gu¨©)¨¡æÑ€?/p>

我们来看一个很现实的例子。XSL-FO定义äº?ji¨£n)一¾cÖM»¥â€œkeep-”开头的属性,譬如“keep-with-next”,表示前面的内容与后面的内容必™åÕdœ¨åŒä¸€™åµï¼Œä¸èƒ½æ–­å¼€åœ¨ä¸¤™åµä¸Šã€‚但是除äº?ji¨£n)tableåQ?br />FOP目前不支持这æ ïL(f¨¥ng)š„属性。所以当文档比较长的时候,在FOP生成的PDF文档中,你会(x¨¬)发现有某些小节的标题在一™å늚„底部åQŒè€Œå†…容却在下一™åµï¼Œå…¶ä»–有标题的内容åQŒè­¬å¦‚图åQŒéƒ½ä¼?x¨¬)出现这æ ïL(f¨¥ng)š„æƒ…况。这当然是不合理的,可是无论你怎么æ·ÕdŠ â€œkeep-”类的参敎ͼŒéƒ½æ— ‹¹ŽäºŽäº‹ã€?/p>

对于˜q™æ ·çš„æƒ…况,FOPçš„FAQ告诉你的ž®±æ˜¯åQŒâ€œå¯¹ä¸è“våQŒæˆ‘们还没有实现”,至于什么时候实玎ͼŒâ€œä½ åˆ«é—®åQŒæˆ‘也不知道”ã€?/p>

所以只能采取一个变通的方式。前面我说过åQŒFOP对于table支持˜q™æ ·çš„属性,那么是否可以考虑把这æ ïL(f¨¥ng)š„内容攑֜¨table里面呢?当然可以åQ? FOP有一个“blind table”的概念åQŒè¿™æ ïL(f¨¥ng)š„表除äº?ji¨£n)其中的内容是不可见的,正符合我们的要求。现在的问题ž®±æ˜¯åQŒDocbook XSL样式单生成的是通用的XSL-FOæ–‡äšgåQŒä¸ä¼?x¨¬)把å?lt;sect2>˜q™ç§å…ƒç´ çš„内å®ÒŽ(gu¨©)”¾åˆ°â€œblind table”里面。那ž®±åªå‰©ä¸€æ¡èµ\äº?ji¨£n)(其实˜q˜æœ‰ä¸€æ¡ï¼Œç”¨å•†ä¸šäñ”品^_^åQŒRenderXçš„XEP支持“keep-”类属性)(j¨ª)åQŒä¿®æ”ÒŽ(gu¨©) ·å¼å•模板。list 4的代码把<sect2>的内å®ÒŽ(gu¨©)”¾åˆîC¸€ä¸ªâ€œblind table”里面ã€?br /> (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) list 4. blindtable.xsl
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) xmlns:fo="
http://www.w3.org/1999/XSL/Format"
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) version="1.0">
 (t¨©ng) (t¨©ng) (t¨©ng) <xsl:import href="docbook.xsl"/>

 (t¨©ng) (t¨©ng) (t¨©ng) <xsl:template match="sect2">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <xsl:variable name="id">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <xsl:call-template name="object.id"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </xsl:variable>
 (t¨©ng) (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <fo:table table-layout="fixed" width="100%">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <fo:table-column column-number="1"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <fo:table-body>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <fo:table-row keep-with-next="always">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <fo:table-cell id="{$id}" xsl:use-attribute-sets="section.level2.properties">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <xsl:call-template name="sect2.titlepage"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </fo:table-cell>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </fo:table-row>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <xsl:variable name="toc.params">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <xsl:call-template name="find.path.params">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </xsl:call-template>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <xsl:if test="contains($toc.params, 'toc') and $generate.section.toc.level &gt;= 2">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <xsl:call-template name="section.toc"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <xsl:call-template name="section.toc.separator"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </xsl:if>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </xsl:variable> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <fo:table-row>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <fo:table-cell>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <xsl:apply-templates select="*[2]"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </fo:table-cell>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </fo:table-row>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </fo:table-body>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </fo:table>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <xsl:apply-templates select="*[position() > 2]"/>
 (t¨©ng) (t¨©ng) (t¨©ng) </xsl:template>
</xsl:stylesheet>

对于˜q™æ®µä»£ç ž®×ƒ¸å¤šåšè§£é‡Šäº?ji¨£n),æ€Èš„来说其作用就是覆盖了(ji¨£n)sections.xslä¸­å®šä¹‰çš„åäØ“(f¨´)“sect2”的模板åQŒåœ¨ç”ŸæˆXSL-FOæ–‡äšg的时 候,æŠ?lt;sect2>的标题和内容分别攑ֈ°ä¸€ä¸ªå•åˆ—è¡¨çš„ä¸¤è¡Œã€‚å› ä¸ø™¿™é‡Œç”¨åˆîCº†(ji¨£n)fo名字½Iºé—´åQŒæ‰€ä»¥åœ¨å¼€å§‹è¦å¼•å…¥fo名字½Iºé—´ã€?/p>

重新生成PDFæ–‡äšgåQ?/p>

fop -xml yourarticle.xml -xsl C:\docbook-xsl-1.67.2\blindtable.xsl yourarticle.pdf

你会(x¨¬)发现所æœ?lt;sect2>的内å®ÒŽ(gu¨©)²¡æœ‰æ ‡é¢˜ä(sh¨´)¸Žå†…容断开在两™åµä¸Šçš„æƒ…况了(ji¨£n)ã€?/p>

4. æ€È»“

到此为止åQŒä½ å·²ç»äº?ji¨£n)解制作Docbook的完整过½E‹ï¼š(x¨¬)

1) ¾~–辑XML文档åQ?br />2) 生成HTML/PDFåQ?br />3) 定制XSL样式单ã€?/p>

定制XSL样式单不能直接修改Docbook XSL样式单,需要创å»ÞZ¸€ä¸ªæ–°çš„XSLæ–‡äšgä½œäØ“(f¨´)定制层ã€?/p>

XSL样式单定制有两类åQ?/p>

1) 修改XSL参数åQ?br />2) 修改XSL模板ã€?/p>

æ€ÖM¹‹Docbook是十分强大的工具åQŒå¯ä»¥ç”¨æ¥åˆ¶ä½œéžå¸æ€¸“业漂亮的技术文档,甚至是其他文档ã€?/p>

参考文章:(x¨¬)

Docbook½Ž€ä»?/a>

安装配置Docbook

DocBook XSL: The Complete Guide




想飞的鱼 2006-08-22 17:14 发表评论
]]>
[转]安装配置Docbook工具http://www.aygfsteel.com/wiflish/archive/2006/08/22/65119.html想飞的鱼想飞的鱼Tue, 22 Aug 2006 09:12:00 GMThttp://www.aygfsteel.com/wiflish/archive/2006/08/22/65119.htmlhttp://www.aygfsteel.com/wiflish/comments/65119.htmlhttp://www.aygfsteel.com/wiflish/archive/2006/08/22/65119.html#Feedback0http://www.aygfsteel.com/wiflish/comments/commentRss/65119.htmlhttp://www.aygfsteel.com/wiflish/services/trackbacks/65119.html原文链接åQšhttp://blog.csdn.net/mickeyrat/archive/2005/02/06/283471.aspx


安装配置Docbook工具

使用Docbook发布文档åQŒéœ€è¦å®‰è£…以下的工具åQ?br /> (t¨©ng) (t¨©ng) (t¨©ng) *DocBook DTD
 (t¨©ng) (t¨©ng) (t¨©ng) *DocBook XSL 样式å?br /> (t¨©ng) (t¨©ng) (t¨©ng) *XSLT处理½E‹åº
 (t¨©ng) (t¨©ng) (t¨©ng) *XSL-FO处理½E‹åº

下面详细介绍各个工具的安装�/p>

1.安装DocBook DTD

Docbook DTD可以到OASIS的网站上下蝲åQŒåœ¨˜q™é‡Œä½ å¯ä»¥æ‰¾åˆ°zip格式的压¾~©åŒ…。目前的最新版本是4.2ã€?/p>

事实上可以不下蝲Docbook DTD。如果你的文档DTD声明˜q™æ ·å†™ï¼š(x¨¬)

<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" (t¨©ng) "

æ ÒŽ(gu¨©)®˜q™æ ·çš„定义,大部分XML处理器能够从¾|‘络上获取DTD。这样做的好处是¾~–辑的Docbook文档¿UÀL¤æ€§å¥½åQŒå¯ä»¥åœ¨æ²¡æœ‰å®‰è£…Docbook DTD的机器上使用。不˜q‡ç”±äºŽDocbook DTD比较庞大åQŒé€šè¿‡¾|‘络获取DTDä¼?x¨¬)åª?ji¨£ng)响处理速度åQŒåœ¨ä½Žé€Ÿç½‘¾lœæˆ–者网¾lœæ¯”较糟¾p•的情况下,影响ž®¤äØ“(f¨´)显著ã€?/p>

如果选择使用本地DTDåQŒæ–‡æ¡£çš„DTD引用应该˜q™æ ·å†™ï¼š(x¨¬)

Linux:
<!DOCTYPE book SYSTEM "/usr/share/docbook-4.2/docbookx.dtd">

Windows:
<!DOCTYPE book SYSTEM "
file:///C:/xml/docbook42/docbookx.dtd">

Docbook提供äº?ji¨£n)一¿Uæ–¹å¼ï¼Œè®©ç”¨æˆ·å¯ä»¥ä‹É用相同的DTD声明åQŒä½†å¯ä»¥åœ¨ä‹É用网¾lœèŽ·å–DTDå’Œä‹É用本地DTD之间切换åQŒåŒæ—¶æ‹¥æœ‰ä¸¤è€…的优势。这ž®±æ˜¯catalogæ–‡äšg的作用。典型的catalog的声明如下:(x¨¬)

<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
 (t¨©ng) <group id="DocbookDTD" prefer="public">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <system (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) systemId="
http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) uri="
file:///usr/share/xml/docbook42/docbookx.dtd"/>
 (t¨©ng) </group>
</catalog>

˜q™ä¸ªå£°æ˜ŽæŠŠç½‘¾lœDTD映射到本地DTD。如果ä‹É用支持Catalogçš„XSLT ProcessoråQŒå®ƒé¦–å…ˆä¼?x¨¬)查找本地文ä»Óž¼Œå¦‚果本地文äšg不存在,再查扄¡½‘¾lœã€?/p>

2.安装Docbook XSL样式�/p>

�a >http://docbook.sourceforge.net上可以下载到Docbook XSL样式单,目前最新的版本�.67.2�/p>

解压之后åQŒæœ‰å‡ ä¸ªæ¯”较主要的目录:(x¨¬)
 (t¨©ng)*common (t¨©ng) (t¨©ng) - 包含的是公用的模块,诸如语言之类的文仉™ƒ½åœ¨è¿™é‡Œã€?br /> (t¨©ng)*extensions - 针对特定的XSLT Processor¾~–写的扩展代码ã€?br /> (t¨©ng)*fo (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) - 生成XSL-FOæ–‡äšg所需的XSL样式单ã€?br /> (t¨©ng)*html (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) - 生成HTMLæ–‡äšg所需的XSL样式单ã€?br /> (t¨©ng)*images (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) - 生成文档时所需要的囄¡‰‡ã€?br /> (t¨©ng)*doc (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) - 有关XSL样式单的文档åQŒåŒæ äh˜¯Docbook文档ã€?/p>

å…¶ä»–˜q˜æœ‰åƒhtmlhelp之类的目录,但不是生成HTML或XSL-FO所必须的ã€?/p>

3.安装XSLT Processor

目前有许多免费的XSLT ProcessoråQŒæœ€å¸¸ç”¨çš„æ˜¯
 (t¨©ng)*Saxon (t¨©ng) (t¨©ng) (t¨©ng) - 使用Java实现åQ?a >http://saxon.sourceforge.net/ã€?br /> (t¨©ng)*Xalan (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) - 有Javaå’ŒC++版本åQ?a >http://xml.apache.org/xalan-j/index.htmlã€?br /> (t¨©ng)*xsltproc - 使用C实现åQŒæ˜¯æœ€å¿«çš„处理½E‹åºåQ?a >http://xmlsoft.org/XSLT/
 (t¨©ng)
因䨓(f¨´)Saxonå’ŒXalan都有Java版本åQŒæ‰€ä»¥æŒ‰ç…§ä¸€èˆ¬çš„Java½E‹åºçš„安装方式安装即可。下面介¾lxsltprocçš„å®‰è£…ï¼Œå› äØ“(f¨´)它速度快,是我比较喜欢的处理程序ã€?/p>

如果你ä‹É用windowsòq›_°åQŒé‚£ä¹ˆä½ æœ‰ä¸¤ä¸ªæ–¹æ³•可选:(x¨¬)

 (t¨©ng)1) 直接下蝲为windowsòq›_°é¢„编译的版本。你需要下载libxml, libxslt, å’ŒiconvåQŒå®ƒä»¬éƒ½æ˜¯zip格式åQŒè§£åŽ‹ä¹‹åŽï¼Œåœ¨çŽ¯å¢ƒå˜é‡PATH中添加xsltproc.exeå’?dllæ–‡äšgçš„èµ\径ã€?br /> (t¨©ng)
 (t¨©ng)如果你不想编辑环境变量,一个简单的办法是把下面˜q™äº›æ–‡äšg复制到C:\Windows\System32åQ?br />
 (t¨©ng) libxslt.dll
 (t¨©ng) libxml2.dll
 (t¨©ng) libexslt.dll
 (t¨©ng) iconv.dll
 (t¨©ng) xsltproc.exe

 (t¨©ng)˜q™æ ·åœ¨å‘½ä»¤è¡Œž®±å¯ä»¥ç›´æŽ¥æ‰¾åˆ°è¿™äº›æ–‡ä»¶äº†(ji¨£n)。完成之后,˜qè¡Œ

 (t¨©ng)xsltproc -version

 (t¨©ng)打印出版本号则表明完成安装ã€?br /> (t¨©ng)
 (t¨©ng)2) 在Cygwin下安装,˜q™æ˜¯æˆ‘选择使用的方式。Cygwin是一个在Windows下模拟Linux Shell的应用程序。如果你喜欢以Linux命ä×o(h¨´)的方式来使用xsltprocåQ?a >下蝲Cygwin安装½E‹åºã€‚Cygwin的是通过¾|‘络安装的,首先你从它提供的包列表中选择libxsltåQŒç„¶åŽå®‰è£…程序会(x¨¬)æ ÒŽ(gu¨©)®ä¾èµ–关系自动选择libxml2åQŒç¡®å®šä¹‹åŽï¼Œå®‰è£…½E‹åºä¸‹è²òq¶å®‰è£…xsltproc。完成安装之后,你就可以˜qè¡Œ

 (t¨©ng)xsltproc -version

来检查是否安装成功ã€?br /> (t¨©ng)
3) 如果使用LinuxåQŒå¾ˆæœ‰å¯èƒ½ç³»¾lŸå·²¾lå®‰è£…了(ji¨£n)xsltproc。运è¡?br />
xsltproc -version

‹‚€(g¨¨)查一下是否已¾lå®‰è£…。如果运行命令失败,或者版本太老,那么讉K—®ä¸‹é¢ä¸¤ä¸ªURL获取最新的RPM包:(x¨¬)

http://rpmfind.net/linux/rpm2html/search.php?query=libxml2
http://rpmfind.net/linux/rpm2html/search.php?query=libxslt

然后切换到root权限åQŒå®‰è£…新的包åQ?br />
rpm -Uv libxml2-2.6.17-2.i386.rpm
rpm -Uv libxslt-1.1.12-4.i386.rpm

完成之后åQŒå°±å¯ä»¥˜qè¡Œ

xsltproc -version

‹‚€(g¨¨)查安装是否完成ã€?/p>

安装之后åQŒå°±å¯ä»¥ä½¿ç”¨xsltproc来生成HTML或者XSL-FOæ–‡äšgã€?/p>

譬如åQŒç”ŸæˆHTMLåQ?br />
xsltproc (t¨©ng) --output myfile.html (t¨©ng) docbook-xsl/html/docbook.xsl myfile.xml

或者生成XSL-FO文档åQ?br />
xsltproc --output myfile.fo docbook-xsl/fo/docbook.xsl myfile.xml

åœ?a >http://xmlsoft.org/XSLT/xsltproc2.html上列å‡ÞZº†(ji¨£n)所有xsltproc的命令行参数åQŒç›´æŽ¥è¿è¡?br />xsltproc也会(x¨¬)打印出参数列表ã€?/p>

如果你只要发布HTML文档åQŒé‚£ä¹ˆåˆ°æ­¤äØ“(f¨´)止。如果你˜q˜æƒ³å‘布PDF或是PS文档åQŒé‚£ä¹ˆéœ€è¦å®‰è£…XSL-FO处理½E‹åºã€?/p>

4. 安装XSL-FO处理½E‹åº

XSL-FO处理½E‹åºæ ÒŽ(gu¨©)®XSLT处理½E‹åºç”Ÿæˆçš„XSL-FOæ–‡äšg生成PDF或者PSæ–‡äšg。目前可供选择的XSL-FO处理½E‹åº˜qœä¸å¦‚XSLT处理½E‹åºé‚£ä¹ˆå¤šï¼Œ˜q™æ˜¯å› äØ“(f¨´)åQ?br />
 (t¨©ng) (t¨©ng) (t¨©ng) a. XSL-FO标准比XSLT标准的制订晚两年åQ?br />
 (t¨©ng) (t¨©ng) (t¨©ng) b.XSL-FO标准å?qi¨¢ng)其庞大而复杂,该标准的作者也发现其实çŽîC¸Šçš„难度,从而将该标准分为基本、扩展和完整三个¾U§åˆ«ã€?/p>

现在可用的免费的XSL-FO处理½E‹åºæœ‰ï¼š(x¨¬)

 (t¨©ng) (t¨©ng) (t¨©ng) *FOP - 来自Apache XML™å¹ç›®ã€‚目前最新的版本æ˜?.20.5åQŒè¿˜åœ¨å¼€å‘当中,˜q˜æœ‰å¾ˆå¤šç‰ÒŽ(gu¨©)€§ä¸æ”¯æŒåQŒä¸˜q‡å·²¾lå¯ä»¥æ»¡­‘³ä¸€èˆ¬çš„使用ã€?br /> (t¨©ng) (t¨©ng) (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) *PassiveTeX - 来自Sebastian Rahtz (http://www.tei-c.org.uk/Software/passivetex/)一‹Æ‘ÖŸºäºŽTeXçš„XSL-FO处理½E‹åºã€‚同样也在开发中åQŒè¾ƒFOP要复杂的多ã€?/p>

另外有一些商业äñ”品可供选择åQŒå¯èƒ½ç”Ÿæˆçš„æ–‡æ¡£è´¨é‡è¦æ¯”开源代码好åQŒè­¬å¦‚:(x¨¬)

 (t¨©ng) (t¨©ng) (t¨©ng) *XEP

 (t¨©ng) (t¨©ng) (t¨©ng) *XSL Formatter

下面介绍如何安装FOP�/p>

4.1.首先需要安装JDKåQŒè¿™ä¸ªä¸ç”¨å¤šè¯´ã€?/p>

4.2. 下蝲FOPåQŒå¯ä»¥é€‰æ‹©tar或者zip压羃包。下载之后解压到本地ã€?/p>

4.3. 下蝲囑ÖŞ代码库。FOP自己不支持PNG之类的图片,如果在你的文档里ä¼?x¨¬)涉及(qi¨¢ng)到囄¡‰‡åQŒé‚£ä¹ˆéœ€è¦ä¸‹è½½é¢å¤–的代码库。可以选择JAIåQŒæˆ–è€?a >Jimiã€?.20.5之前的版本只能ä‹É用Jimi。下载之后,ž®†jai_core.jarå’Œjai_codec.jaråQˆJAI)åQŒæˆ–者JimiProClasses.jaråQˆJimiåQ‰å¤åˆ¶åˆ°FOP安装目录的lib目录下,然后在fop.batåQˆWindowsòq›_°åQ‰ä¸­æ·ÕdŠ 

set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\jai_core.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\jai_codec.jar

或是
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\JimiProClasses.zip

如果使用fop.shåQˆLinuxòq›_°åQ‰ï¼Œä¼?x¨¬)自动搜索ã€?/p>

4.4. æ·ÕdŠ æ‰©å±•ä»£ç ã€‚å¦‚æžœDocbook XSL样式单有针对FOP的扩展代码(目前没有åQ‰ï¼Œåƒä¸Šé¢ä¸€æ ähŠŠå®ƒä»¬æ·ÕdŠ åˆ°FOP安装目录下lib目录ã€?/p>

现在ž®±å¯ä»¥ä‹É用FOP来生成PDF文档äº?ji¨£n)。FOP提供两个脚本fop.batåQˆWindowsòq›_°åQ‰å’Œfop.shåQˆUnixå’ŒLinuxòq›_°åQ‰ä»¥æ–¹ä¾¿ä½¿ç”¨ã€‚生成PDF的命令行如下åQ?br />
 (t¨©ng) (t¨©ng) (t¨©ng) Linux或UnixåQ?br /> (t¨©ng) (t¨©ng) (t¨©ng) fop.sh -xsl /docbook-xsl/fo/docbook.xsl -xml myfile.xml -pdf myfile.pdf
 (t¨©ng) (t¨©ng) (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) WindowsåQ?br /> (t¨©ng) (t¨©ng) (t¨©ng) fop.bat -xsl /docbook-xsl/fo/docbook.xsl -xml myfile.xml -pdf myfile.pdf

在处理过½E‹ä¸­åQŒå¯èƒ½ä¼š(x¨¬)提示某些属性不支持或尚未实玎ͼŒä¸ç”¨ç†ä¼š(x¨¬)˜q™äº›æç¤ºåQŒå› ä¸ºFOP仍处于开发中åQŒè¿™òq¶ä¸å½±å“ç”ŸæˆPDF文档ã€?/p>

到此åQŒä¸€ä¸ªDocbook发布¾pȝ»Ÿé…ç½®å®ŒæˆåQŒåƈ可以用来发布文档äº?ji¨£n)。你完全可以在Linux上编写ä“Q务,通过该系¾lŸè‡ªåŠ¨å‘å¸ƒæŠ€æœ¯æ–‡æ¡£ã€?/p>

参考文章:(x¨¬)
Docbook½Ž€ä»?/a>

制作Docbook文档

DocBook XSL: The Complete Guide




想飞的鱼 2006-08-22 17:12 发表评论
]]>
[转]Log4j比较全面的配¾|?/title><link>http://www.aygfsteel.com/wiflish/archive/2006/07/18/58804.html</link><dc:creator>想飞的鱼</dc:creator><author>想飞的鱼</author><pubDate>Tue, 18 Jul 2006 08:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/wiflish/archive/2006/07/18/58804.html</guid><wfw:comment>http://www.aygfsteel.com/wiflish/comments/58804.html</wfw:comment><comments>http://www.aygfsteel.com/wiflish/archive/2006/07/18/58804.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wiflish/comments/commentRss/58804.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wiflish/services/trackbacks/58804.html</trackback:ping><description><![CDATA[ <span id="wmqeeuq" class="oblog_text"> <p> (t¨©ng)log4j.rootLogger=DEBUG,CONSOLE,A1,im <br /> (t¨©ng)log4j.addivity.org.apache=true </p> <p> (t¨©ng)# 应用于控制台 </p> <p> (t¨©ng)log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender <br /> (t¨©ng)log4j.appender.Threshold=DEBUG <br /> (t¨©ng)log4j.appender.CONSOLE.Target=System.out <br /> (t¨©ng)log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout <br /> (t¨©ng)log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n <br /> (t¨©ng)#log4j.appender.CONSOLE.layout.ConversionPattern=<br />[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n </p> <p> (t¨©ng)#应用于文ä»?</p> <p> (t¨©ng)log4j.appender.FILE=org.apache.log4j.FileAppender <br /> (t¨©ng)log4j.appender.FILE.File=file.log <br /> (t¨©ng)log4j.appender.FILE.Append=false <br /> (t¨©ng)log4j.appender.FILE.layout=org.apache.log4j.PatternLayout <br /> (t¨©ng)log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n <br /> (t¨©ng)# Use this layout for LogFactor 5 analysis </p> <p> (t¨©ng)# 应用于文件回æ»?</p> <p> (t¨©ng)log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender <br /> (t¨©ng)log4j.appender.ROLLING_FILE.Threshold=ERROR <br /> (t¨©ng)log4j.appender.ROLLING_FILE.File=rolling.log (t¨©ng) //æ–‡äšg位置,也可以用变量${java.home}、rolling.log<br /> (t¨©ng)log4j.appender.ROLLING_FILE.Append=true (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) //true:æ·ÕdŠ Â (t¨©ng) false:覆盖<br /> (t¨©ng)log4j.appender.ROLLING_FILE.MaxFileSize=10KB (t¨©ng) (t¨©ng) //æ–‡äšg最大尺å¯?br /> (t¨©ng)log4j.appender.ROLLING_FILE.MaxBackupIndex=1 (t¨©ng) //备䆾æ•?br /> (t¨©ng)log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout <br /> (t¨©ng)log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n </p> <p> <br /> (t¨©ng)#应用于socket <br /> (t¨©ng)log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender <br /> (t¨©ng)log4j.appender.SOCKET.RemoteHost=localhost <br /> (t¨©ng)log4j.appender.SOCKET.Port=5001 <br /> (t¨©ng)log4j.appender.SOCKET.LocationInfo=true <br /> (t¨©ng)# Set up for Log Facter 5 <br /> (t¨©ng)log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout <br /> (t¨©ng)log4j.appender.SOCET.layout.ConversionPattern=<br />[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n </p> <p> <br /> (t¨©ng)# Log Factor 5 Appender <br /> (t¨©ng)log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender <br /> (t¨©ng)log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000 </p> <p> (t¨©ng)# 发送日志给邮äšg </p> <p> (t¨©ng)log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender <br /> (t¨©ng)log4j.appender.MAIL.Threshold=FATAL <br /> (t¨©ng)log4j.appender.MAIL.BufferSize=10 <br /> (t¨©ng)log4j.appender.MAIL.From=test@sina.com.cn<br /> (t¨©ng)log4j.appender.MAIL.SMTPHost=smtp.sina.com.cn<br /> (t¨©ng)log4j.appender.MAIL.Subject=Log4J Message <br /> (t¨©ng)log4j.appender.MAIL.To=test@sina.com.cn<span style="text-decoration: underline;"><br /></span> (t¨©ng)log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout <br /> (t¨©ng)log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n </p> <p> (t¨©ng)# 用于数据åº?<br /> (t¨©ng)log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender <br /> (t¨©ng)log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test <br /> (t¨©ng)log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver <br /> (t¨©ng)log4j.appender.DATABASE.user=root <br /> (t¨©ng)log4j.appender.DATABASE.password= <br /> (t¨©ng)log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n') <br /> (t¨©ng)log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout <br /> (t¨©ng)log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n </p> <p> <br /> (t¨©ng)log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender <br /> (t¨©ng)log4j.appender.A1.File=SampleMessages.log4j <br /> (t¨©ng)log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j' <br /> (t¨©ng)log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout </p> <p> (t¨©ng)#自定义Appender </p> <p> (t¨©ng)log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender </p> <p> (t¨©ng)log4j.appender.im.host = mail.cybercorlin.net <br /> (t¨©ng)log4j.appender.im.username = username <br /> (t¨©ng)log4j.appender.im.password = password <br /> (t¨©ng)log4j.appender.im.recipient = test@test.com<br /></p> <p> (t¨©ng)log4j.appender.im.layout=org.apache.log4j.PatternLayout <br /> (t¨©ng)log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n</p> </span> <img src ="http://www.aygfsteel.com/wiflish/aggbug/58804.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wiflish/" target="_blank">想飞的鱼</a> 2006-07-18 16:17 <a href="http://www.aygfsteel.com/wiflish/archive/2006/07/18/58804.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的ž®çªhttp://www.aygfsteel.com/wiflish/archive/2006/05/10/45382.html想飞的鱼想飞的鱼Wed, 10 May 2006 02:48:00 GMThttp://www.aygfsteel.com/wiflish/archive/2006/05/10/45382.htmlhttp://www.aygfsteel.com/wiflish/comments/45382.htmlhttp://www.aygfsteel.com/wiflish/archive/2006/05/10/45382.html#Feedback0http://www.aygfsteel.com/wiflish/comments/commentRss/45382.htmlhttp://www.aygfsteel.com/wiflish/services/trackbacks/45382.html

想飞的鱼 2006-05-10 10:48 发表评论
]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º À´±öÊÐ| ½£ºÓÏØ| IJ¶¨ÏØ| »ÔÏØÊÐ| ¼Ò¾Ó| Ã÷ÏªÏØ| ÎåÁ«ÏØ| ÍÍÃÅÇø| ¼ÎÏéÏØ| ³¤Í¡ÏØ| Àè´¨ÏØ| ±¦É½Çø| Î×É½ÏØ| ÁÙÇåÊÐ| »ÆÃ·ÏØ| ½õÖÝÊÐ| Àè´¨ÏØ| Ðû»¯ÏØ| ÎâÖÒÊÐ| ºØÀ¼ÏØ| ѰÎÚÏØ| ÇúÖÜÏØ| »ÝÖÝÊÐ| ÒÊÄÏÏØ| ÈôÇ¼ÏØ| ¹ó¸ÛÊÐ| ɳÍåÏØ| ÔæÑôÊÐ| ½£´¨ÏØ| Æ½Â½ÏØ| ƽÄÏÏØ| ºôÂ×±´¶ûÊÐ| ÁéÌ¨ÏØ| Æ½Ò£ÏØ| ÀÉÏªÏØ| ÓÀÐÞÏØ| ºéÑÅÏØ| ÊÖÓÎ| ¾²ÄþÏØ| ¶¼²ýÏØ| Ì©Ë³ÏØ|