该如何合并多个HTML
帮助文件你有没有想过,假如你单独发行了若干小游戏,并为这些小游戏写了 HTML 帮助。突然有一天,你打算把这些小游戏集合起来搞成一个“游戏乐园”,是不是要把它们的帮助文档源文件(.htm) 再拿出来编译一遍呢?添加 HTML 道是非常方便,可是那一堆
目录和索引,难道需要重写吗?――天啊,人生最痛苦的事莫过于此。 不过没关系, 虽然有些时候 Microsoft 的东东的确很差劲,但这次,它想到了――提供了一个非常方便的合并(Merge) 功能,可以把目录、索引甚至全文搜索字典都合并起来。 怎么开始呢?还记得在“设置工程选项(Project Options)”一节中最后介绍的内容吗?对了,就是从这里开始的:工程选项(Option) 对话框的 Merge Files 属性页。不过在这之前我们需要新建一个 HTML 帮助工程,所有制作将在这个工程中完成。 Merge Files 属性页里只有添加(Add...) 和删除(Remove) 两个按钮,它们的作用我想不必介绍了吧。只需要在这里添加你想要合并的文件,第一步就简单的完成了。不过切记,这个合并不是真正意义上的合并――生成后的 HTML
帮助文件大小和没合并前几乎一样大。因此,发布帮助文档的时候,需要将被合并的 HTML 帮助一起发布。 现在还有一个问题,我编译后找遍了所有链接,始终打不开被合并的帮助文件啊,什么地方搞错了?不要着急,我们才刚刚完成第一步,不过做完这一步,被合并 HTML 帮助文件的索引和全文搜索字典都已经合并进来了,你没找到吗?那是你观察不仔细。 下面,我们要做的第二步是合并目录。 在刚才新建的工程中添加一个目录文件,当然,是新建的。然后右键单击空白处d出菜单。菜单的前两项都已经在“为帮助文件添加目录(Contents)和索引(Index)”一节有介绍过了,第三项“Insert File...”才是本节的重头戏。 点击“Insert File...”菜单项,会d出一个叫做“Include File”的对话框,选择你要合并的 HTML 帮助文件(.chm),然后……还没完,你还需要动手添加如下文字 .....chm::contents.hhc 前面的' .....chm 是你选择的文件,后面的 ::contents.hhc 是要你动手输入的。其中 contents.hhc 要根据实际你使用的目录文件名来填写,而这个目录文件是 .....chm 的,不是当前工程的。如果还没明白,看看下面注意事项的例图。 编译运行,一切正常,该合并的都合并了,从目录里就能找到被合并帮助文件中的内容。不过,这个样子好象还是有点不对劲啊――下面我来说说需要注意的地方。 第一,我们没有给这个新工程添加主题文件。有什么后果?想想你用 IE 浏览一个不存在的页面时会出现什么样的情况吧。任何一个 HTML 帮助都有一个默认页的,我们新建这个工程也不例外,虽然它合并了其它的 HTML 帮助,但是――还是没有自己的默认页啊。结论:无论如何要给它添加一个主题文件,就算是封面好了。 第二,HTML Help Workshop 在这里有一个 BUG,为免费BUG,你需要注意的第二点就是:想要目录中的并入文件节点是子某个节点的字节点,在编辑时应该让它和这个节点同层次。 有时候我们会见到一从一个帮助页中链接到另一个帮助文件的例子,比如在 MSDN 中就非常多,这就是怎么实现的呢?其实,这不是 HTML Help Workshop 的工作,而是主题文件(.htm) 的工作。需要在 HTML 文件中插入一个用打开 HTML 帮助的 ActiveX 控件,这里就不详述了。merge 是sqlserver2008的新语句
SQL Server 2008将包含用于合并两个行集(rowset)数据的新句法。根据一个源数据表对另一个数据表进行确定性的插入、更新和删除这样复杂的 *** 作,运用新的MERGE语句,开发者用一条命令就可以完成。
对两个表进行信息同步时,有三步 *** 作要进行。首先要处理任何需要插入目标数据表的新行。其次是处理需要更新的已存在的行。最后要删除不再使用的旧行。这个过程中需要维护大量重复的逻辑,并可能导致微妙的错误。
Bob Beauchemin讨论了MERGE语句,这个语句将上述的多个 *** 作步骤合并成单一语句。他给出了如下的例子:
merge [target] t
using [source] s on t.id = s.id
when matched then update set t.name = s.name, t.age = s.age -- use "rowset1"
when not matched then insert values(id,name,age) -- use "rowset2"
when not matched by source then delete -- use "rowset3"
如你所见,具体 *** 作是根据后面的联合(join)的解析结果来确定的。在这个例子中,如果目标和源数据表有匹配的行,就实行更新 *** 作。如果没有,就实行插入或者删除 *** 作来使目标数据表和源数据表保持一致。
这个新句法的一个美妙之处是它在处理更新时的确定性。在使用标准的UPDATE句法和联合时,可能有超过一个源行跟目标行匹配。在这种情况下,无法预料更新 *** 作会采用哪个源行的数据。
而当使用MERGE句法时,如果存在多处匹配,它会抛出一个错误。这就提醒了开发者,要达到预想的目标,当前的联合条件还不够明确。
至于 ppt 没有
有本pdf http://ishare.iask.sina.com.cn/f/16236919.html
Pandas的Merge,相当于Sql的Join,将不同的表按key关联到一个表
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True,
suffixes=('_x', '_y'), copy=True, indicator=False,
validate=None)
文档地址: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html
以下关系要正确理解:
评论列表(0条)