如何使用XML编写目录网页
投笔从戎 @ 战争研究


1. 前言
2. 工作环境
3. 目录网页所需的样式单
4. 使用已定义的XML应用
4.1 文档组成
4.2 标题
4.3 说明和评论
4.4 图片和特殊字符
4.5 注解和加重文字
4.6 链接
4.7 元信息
5. 小结
1. 前言
    本文是为"战争研究"网站的制作者和合作者们编写的,简要说明如何使用XML技术制作网页,主要针对网站的目录页面,也就是底层网页的上一级目录页。
    我假定读者已经阅读过本系列的第一篇文章《如何使用XML编写底层网页》。
2. 工作环境
    使用XML编写目录网页所使用的软件工具与编写底层网页时所需的完全相同,如果你已经按要求编写过几个底层网页,就可以按本文的说明开始编写目录网页。
3. 目录网页所需的样式单
    为了在浏览器上显示目录网页,我们决定使用一个独立的XSL样式单dir.xsl,这个样式单是专为目录网页编写的,只能与目录网页一起工作。
    目录网页的开头两行XML指令应该这样写:
    <?xml version="1.0" encoding="GB2312" ?>
    <?xml-stylesheet type="text/xsl" href="/xsl/dir.xsl" ?>
4. 使用已定义的XML应用
4.1 文档组成
    目录网页与底层网页使用基本相同的XML应用,但我们只需使用其中的一部分。
    我们定义一个<dir></dir>标记用作目录网页的根元素。
    dir标记在每个目录网页中必须存在,而且只有一个,除了开头两行的XML指令以外的所有标记和文本都要被包括在<dir>和</dir>之间。
    dir标记没有属性。
4.2 标题
    目录页的标题使用已定义的<title depth="n"></title>标记,它的含义和用法不变。
4.3 说明和评论
    如果需要在目录网页中加入说明或评论,使用已定义的<text></text>标记,它的含义和用法不变。
4.4 图片和特殊字符
    如果需要在目录网页中加入图片,使用已定义的<img src="???" icon="???" desc="???"></img>标记,它的含义和用法不变。
    如果需要在目录网页中加入特殊字符,使用已定义的<pi src="???"></pi>标记,它的含义和用法不变。
4.5 注解和加重文字
    如果需要在目录网页中加入注解,使用已定义的<note by="???"></note>标记,它的含义和用法不变。
    [2004-07-11]如果需要在目录网页中加入加重文字,使用已定义的<strong></strong>标记,它的含义和用法不变。
4.6 链接
    如果需要在目录网页中加入相关链接,使用已定义的<link href="???" type="???"></link>标记,它的含义和用法不变。
    其中type="child"时表示目录网页中指向底层网页的链接。
4.7 元信息
    目录网页的元信息表达与底层网页完全相同,使用已定义的<meta></meta>标记、<author country="???"></author>标记、<in time="???"></in>标记、<trans time="???"></trans>标记、<scan time="???"></scan>标记、<ocr time="???"></ocr>标记、<input time="???"></input>标记、<correct time="???"></correct>标记,它们的含义和用法不变。
5. 小结
    下面的代码总结了我们使用XML编写一个目录网页所需的所有东西。
<?xml version="1.0" encoding="GB2312" ?>
<?xml-stylesheet type="text/xsl" href="/xsl/dir.xsl" ?>
<dir>
<meta>
    <author country="国籍">作者</author>
    <in time="成书时间">出自哪部著作</in>
    <trans time="翻译文章的时间">翻译文章的人</trans>
    <scan time="扫描文章的时间">扫描文章的人</scan>
    <ocr time="OCR文章的时间">OCR该书的人</ocr>
    <input time="手工录入的时间">手工录入文章的人</input>
    <correct time="校对的时间">校对文章的电子版的人</correct>
</meta>
<title depth="0">标题</title>
<img src="???" icon="???" desc="图片" />
<link href="???" type="???">相关链接</link>
<text>
    说明或评论
    <note by="加注人">注解</note>
</text>
<link href="???" type="child">第1章</link>
<link href="???" type="child">第2章</link>
<link href="???" type="child">第3章</link>
<link href="???" type="child">第4章</link>
</dir>