将hibernate参考转化为chm格式

时间:2022-11-28 20:24:56

微软的帮助文件,其提供了一个叫做“HTML Help Workshop”的工具制作和编译。

但是其目录编辑的操作不是很方便,而且绝对是件非常枯燥的事情。

看看他的目录描述文件:

 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft&reg; 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"
 ondblclick="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 文件制作完成。