微软的帮助文件,其提供了一个叫做“HTML Help Workshop”的工具制作和编译。
但是其目录编辑的操作不是很方便,而且绝对是件非常枯燥的事情。
看看他的目录描述文件:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <HTML> <HEAD> <meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1"> <!-- Sitemap 1.0 --> </HEAD> <BODY> <OBJECT type="text/site properties"> <param name="ImageType" value="Folder"> </OBJECT> <UL> <LI> <OBJECT type="text/sitemap"> <param name="Name" value="index"> <param name="Local" value="html/index.html"> </OBJECT> <LI> <OBJECT type="text/sitemap"> <param name="Name" value="前言"> <param name="Local" value="html/preface.html"> </OBJECT> .......................... </UL> </BODY></HTML> |
好了,是一种用html 文本描述的结构,我们只要在其中插入几个表示目录的OBJECT标记就是。
对于hibernate 参考来说,其目录写在一个index.html文件中,我们可以简单的通过网页脚本吧它的目录读出,代码如下:
<textarea id=text rows="30" cols="100" wrap="off" οndblclick="writeTree(this)" ></textarea> <script> function writeTree(disp,root){ if(root == null){ root=document.body.getElementsByTagName("DL")[0]; } var value = "" value += '<HTML><!-- Sitemap 1.0 --><BODY><OBJECT type="text/site properties"><param name="Window Styles" value="0x800025"><param name="ImageNumber" value="11"></OBJECT><UL>/n'; value += buildTree(0,root); value += '</UL></BODY></HTML>'; disp.value= value; } function buildTree(deep,root){ var perfix=""; for(var j=0;j<deep;j++){ perfix+='/t'; } var value=""; var eles = root.childNodes; for(var i=0;i<eles.length;i++){ var entry = eles[i]; if(entry.tagName == "DT"){ var link = entry.getElementsByTagName("A")[0]; if(link.firstChild){ value+=perfix; value+='<LI> <OBJECT type="text/sitemap">'; value+='<param name="Name" value="'+link.firstChild.nodeValue+'">'; value+='<param name="Local" value="guide/'+link.getAttribute("href")+'">'; value+='</OBJECT>/n'; } }else if(entry.tagName == "DD"){ var dir = entry.getElementsByTagName("DL")[0]; value+=perfix+"<UL>/n"; value+=buildTree(deep+1,dir); value+=perfix+"</UL>/n"; } } return value; } </script> |
将这段代码插入htm文件的body 元素后,打开,双击多行文本框。将声称chm 目录描述,将其保存为contents.hhc,重新打开chm工程后,将contents.hhc文件加入到工程,编译,chm 文件制作完成。