HTML Help Workshop中父目录中文件的相对路径

时间:2012-11-06 09:20:31

标签: html chm

在帮助页面.htm的* .hhc文件或html代码中父目录的相对路径在编译的.chm帮助文件中不起作用。

在此示例中,file1.htm与* .hcc文件位于同一目录中,而file2.htm位于需要通过父目录访问的其他目录中。 HELP Workshop IDE创建以下* .hhc:

<!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="Introduction">
        <param name="Local" value="file1.htm">
        </OBJECT>
    <LI> <OBJECT type="text/sitemap">
        <param name="Name" value="Topic">
        <param name="Local" value="..\common\file2.htm">
        </OBJECT>
</UL>
</BODY></HTML>

文件1的内容以如下内容开头:

<html>
    <head>
        <title>Documentation</title>
        <meta name="GENERATOR" content="Microsoft FrontPage 4.0" />
        <link rel="stylesheet" type="text/css" href="..\common\webformat.css" />
        <script language="JavaScript" type="text/javascript" src="..\common\WindowControl.java">
        </script>
    </head>

    <body>

    <table cols=2>
    <tr>
        <td align="left" valign="bottom"><h2>Overview</h2></td>
        <td align="right"><img src="..\common\images\klein.gif" alt="Logo"></td>
    </tr>
    </table>

在已编译的* .chm文件中,未应用样式表,javascript不起作用且不显示图像。内容表中的file2也不可访问。

用7zip解压缩* .chm文件可以看出编译器将所有文件放在同一级别上,但它保留了* .htm文件和* .hhc文件中的相对路径不变。这就是他们无法访问的原因:

帮助项目中的帮助文件夹层次结构:

Help
  |-common
  |   |-file2.htm
  |   |-webformat.css
  |   |-WindowControl.java
  |   |-images
  |       |-klein.gif
  |-private
      |-file1.htm

在解压缩的* .chm文件层次结构中:

Help
  |-file1.htm
  |-file2.htm
  |-webformat.css
  |-WindowControl.java
  |-klein.gif

通过javascript指定所有相对路径的备用路径是一个非常不干净的解决方案。而且,它没有解决* .hhc文件中链接的问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

路径应该相对于目录的根目录,而URL使用FORWARD斜杠。

配置文件中的所有路径都应该与文档根目录相关。因此,如果在CHM中可以看到HELP目录,则帮助的父级是文档跟踪,CHM项目的项目文件就像help / common / xxx.gif。

afaik在html文件中,网址可能是相对的,也许它会在错误的斜杠上发现。

(p.s。要查看CHM的内部结构,我使用Free Pascal中的“chmls”命令,但是iirc的一些* nix CHM查看器也显示路径)

答案 1 :(得分:0)

我有一个类似的问题,我找到了解决此问题的方法。我希望我的项目在网络共享上可用,因此我在该共享的目录中创建了* .hhp文件。我尝试了很长时间才能使HHP软件找到非常简单的HTML文件,这些文件位于HHP文件的子目录中,但没有成功。我最终在本地C驱动器上创建了HHP项目。当我这样做时,我可以从网络上的任何地方访问支持文件。将我的HTML,CSS等文件保留在共享中是我的优势,但它们可以在任何地方。唯一的缺点是,在编译项目后,您必须将* .chm文件复制到所需的位置,但这并不是主要的麻烦。您甚至可以为该作业创建一个简单的.bat文件。

相关问题