Skip to the content.

上一页      主目录      下一页

48. Standard Generalized Markup Language (SGML)


本章包含DocBook SGML文档类型定义(DTD)、DocBook DSSSL样式表和DocBook验证、转换、格式化和发布DocBook文档的工具。

48.1 sgml-common-0.6.3


简介SGML Common

SGML Common包包含install-catalog。这对于创建和维护集中的SGML目录非常有用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/sgml-common

安装SGML Common

维护者没有按照常规将autotools文件包含在包中,而是包含了指向/usr/share/automake中文件的符号链接。对于以前版本的Automake,这个约定是正确的,但是最近版本的Automake将内部文件安装在特定于版本的目录中。这会导致configure脚本中止。要修复此错误,将重新生成自动工具。由于包含的Makefile.am文件使用了当前版本的Automake不支持的语法,因此需要补丁来修复语法。

patch -Np1 -i ../sgml-common-0.6.3-manpage-1.patch &&
autoreconf -f -i

执行以下命令安装SGML Common:

./configure --prefix=/usr --sysconfdir=/etc &&
make

这个包没有附带测试套件。

现在,作为root用户:

make docdir=/usr/share/doc install &&

install-catalog --add /etc/sgml/sgml-ent.cat \
    /usr/share/sgml/sgml-iso-entities-8879.1986/catalog &&

install-catalog --add /etc/sgml/sgml-docbook.cat \
    /etc/sgml/sgml-ent.cat

更新提示

在升级之前(作为root用户)删除上述目录项,使用:

install-catalog --remove /etc/sgml/sgml-ent.cat \
    /usr/share/sgml/sgml-iso-entities-8879.1986/catalog &&

install-catalog --remove /etc/sgml/sgml-docbook.cat \
    /etc/sgml/sgml-ent.cat

配置 SGML Common

配置文件

/etc/sgml/sgml.conf

配置信息

不需要对该文件进行任何更改。

内容

安装程序: install-catalog 和 sgmlwhich

安装库: None

安装文件: SGML和XML DocBook实体文件

安装目录: /etc/sgml, /usr/share/doc/sgml-common-0.6.3, 和 /usr/share/sgml

简短描述

install-catalog 创建一个集中式编目,维护对分散在/usr/share/sgml目录树中的编目的引用。

sgmlwhich 将主配置文件的名称打印到标准输出。

SGML entities files 包含用SDATA项定义的基本字符实体。

XML entities files 包含由Unicode字符号的十六进制表示定义的基本字符实体。

48.2 docbook-3.1-dtd


简介DocBook-3.1 SGML DTD

DocBook SGML DTD包包含文档类型定义,用于根据DocBook规则集验证SGML数据文件。这对于将书籍和软件文档结构化为标准非常有用,允许您利用已经为该标准编写的转换。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

DocBook-3.1 SGML DTD 依赖

必要

sgml-common-0.6.3UnZip-6.0

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/sgml-dtd-3

安装DocBook-3.1 SGML DTD

注意

包源以zip格式分发,需要unzip。您应该创建一个目录,并在解压缩文件之前更改到该目录,以便在安装包后轻松删除源文件。

执行以下命令安装DocBook-3.1 SGML DTD:

sed -i -e '/ISO 8879/d' \
       -e 's|DTDDECL "-//OASIS//DTD DocBook V3.1//EN"|SGMLDECL|g' \
       docbook.cat

这个包没有附带测试套件。

现在,作为root用户:

install -v -d -m755 /usr/share/sgml/docbook/sgml-dtd-3.1 &&
chown -R root:root . &&
install -v docbook.cat /usr/share/sgml/docbook/sgml-dtd-3.1/catalog &&
cp -v -af *.dtd *.mod *.dcl /usr/share/sgml/docbook/sgml-dtd-3.1 &&

install-catalog --add /etc/sgml/sgml-docbook-dtd-3.1.cat \
    /usr/share/sgml/docbook/sgml-dtd-3.1/catalog &&

install-catalog --add /etc/sgml/sgml-docbook-dtd-3.1.cat \
    /etc/sgml/sgml-docbook.cat

命令解释

sed -i -e ‘/ISO 8879/d’ docbook.cat: 该命令从目录文件中删除ENT定义。

**sed -i -e ‘s DTDDECL “-//OASIS//DTD Docbook V3.1//EN” SGMLDECL g’ docbook.cat**: 该命令将Linux SGML工具不支持的DTDDECL目录项替换为SGMLDECL目录项。

配置 DocBook-3.1 SGML DTD

配置文件

/etc/sgml/catalog

配置信息

上面的安装脚本更新目录。

仅使用最新的3.x版本的DocBook SGML DTD需要以下条件(作为root用户执行):

cat >> /usr/share/sgml/docbook/sgml-dtd-3.1/catalog << "EOF"
  -- Begin Single Major Version catalog changes --

PUBLIC "-//Davenport//DTD DocBook V3.0//EN" "docbook.dtd"

  -- End Single Major Version catalog changes --
EOF

内容

安装程序: None

安装库: None

安装文件: SGML DTD 和 MOD 文件

安装目录: /usr/share/sgml/docbook/sgml-dtd-3.1

简短描述

SGML DTD files 包含一个文档类型定义,它定义了可以在相应的SGML文件中使用的元素类型和属性列表。

SGML MOD files 包含源自DTD文件的文档类型定义的组件。

48.3 docbook-4.5-dtd


简介DocBook-4.5 SGML DTD

DocBook-4.5 SGML DTD包包含文档类型定义,用于根据DocBook规则集验证SGML数据文件。这对于将书籍和软件文档结构化为标准非常有用,允许您利用已经为该标准编写的转换。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

DocBook-4.5 SGML DTD 依赖

必要

sgml-common-0.6.3UnZip-6.0

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/sgml-dtd

安装DocBook-4.5 SGML DTD

注意

包源以zip格式分发,需要unzip。您应该创建一个目录,并在解压缩文件之前更改到该目录,以便在安装包后轻松删除源文件。

执行以下命令安装DocBook-4.5 SGML DTD:

sed -i -e '/ISO 8879/d' \
       -e '/gml/d' docbook.cat

这个包没有附带测试套件。

现在,作为root用户:

install -v -d /usr/share/sgml/docbook/sgml-dtd-4.5 &&
chown -R root:root . &&

install -v docbook.cat /usr/share/sgml/docbook/sgml-dtd-4.5/catalog &&
cp -v -af *.dtd *.mod *.dcl /usr/share/sgml/docbook/sgml-dtd-4.5 &&

install-catalog --add /etc/sgml/sgml-docbook-dtd-4.5.cat \
    /usr/share/sgml/docbook/sgml-dtd-4.5/catalog &&

install-catalog --add /etc/sgml/sgml-docbook-dtd-4.5.cat \
    /etc/sgml/sgml-docbook.cat

命令解释

sed -i -e ‘/ISO 8879/d’ -e ‘/gml/d’ docbook.cat: 该命令从目录文件中删除ENT定义。

配置 DocBook-4.5 SGML DTD

配置文件

/etc/sgml/catalog

配置信息

上面的安装脚本更新目录。

只使用最新的4.x版本的DocBook SGML DTD需要以下条件(作为root用户执行):

cat >> /usr/share/sgml/docbook/sgml-dtd-4.5/catalog << "EOF"
  -- Begin Single Major Version catalog changes --

PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "docbook.dtd"
PUBLIC "-//OASIS//DTD DocBook V4.3//EN" "docbook.dtd"
PUBLIC "-//OASIS//DTD DocBook V4.2//EN" "docbook.dtd"
PUBLIC "-//OASIS//DTD DocBook V4.1//EN" "docbook.dtd"
PUBLIC "-//OASIS//DTD DocBook V4.0//EN" "docbook.dtd"

  -- End Single Major Version catalog changes --
EOF

内容

安装程序: None

安装库: None

安装文件: SGML DTD 和 MOD 文件

安装目录: /usr/share/sgml/docbook/sgml-dtd-4.5

简短描述

SGML DTD files 包含一个文档类型定义,它定义了可以在相应的SGML文件中使用的元素类型和属性列表。

SGML MOD files 包含源自DTD文件的文档类型定义的组件。

48.4 OpenSP-1.5.2


简介OpenSP

OpenSP包包含一个C++库,用于使用SGML/XML文件。这对于验证、解析和操作SGML和XML文档非常有用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

OpenSP 依赖

必要

sgml-common-0.6.3

可选

libnsl-2.0.0xmlto-0.0.28

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/opensp

安装OpenSP

执行以下命令安装OpenSP:

sed -i 's/32,/253,/' lib/Syntax.cxx &&
sed -i 's/LITLEN          240 /LITLEN          8092/' \
    unicode/{gensyntax.pl,unicode.syn} &&

./configure --prefix=/usr                              \
            --disable-static                           \
            --disable-doc-build                        \
            --enable-default-catalog=/etc/sgml/catalog \
            --enable-http                              \
            --enable-default-search-path=/usr/share/sgml &&

make pkgdatadir=/usr/share/sgml/OpenSP-1.5.2

要测试结果,执行: make check。23次测试中有9次可能会失败。不要惊慌。

现在,作为root用户:

make pkgdatadir=/usr/share/sgml/OpenSP-1.5.2 \
     docdir=/usr/share/doc/OpenSP-1.5.2      \
     install &&

ln -v -sf onsgmls   /usr/bin/nsgmls   &&
ln -v -sf osgmlnorm /usr/bin/sgmlnorm &&
ln -v -sf ospam     /usr/bin/spam     &&
ln -v -sf ospcat    /usr/bin/spcat    &&
ln -v -sf ospent    /usr/bin/spent    &&
ln -v -sf osx       /usr/bin/sx       &&
ln -v -sf osx       /usr/bin/sgml2xml &&
ln -v -sf libosp.so /usr/lib/libsp.so

命令解释

sed -i ‘s/32,/253,/…unicode.syn}: 这些种子防止一些恼人的消息,否则可能出现在运行openjade

--disable-static: 此开关防止安装库的静态版本。

--enable-http: 此开关增加了对HTTP的支持。

--disable-doc-build: 此开关防止configure脚本检查是否安装了xmlto。如果您有xmlto,则可以删除此选项。

--enable-default-catalog=/etc/sgml/catalog: 此交换机设置集中式目录的路径。

--enable-default-search-path: 该开关设置SGML_SEARCH_PATH的默认值。

--enable-xml-messages: 这个开关增加了对XML格式消息的支持。

make pkgdatadir=/usr/share/sgml/OpenSP-1.5.2 : 这会将Makefile中的pkgdatadir变量从/usr/share/OpenSP设置为/usr/share/sgml/OpenSP-1.5.2

ln -v -sf …: 这些命令创建OpenSP可执行文件和库的SP等价物。

内容

安装程序: onsgmls, osgmlnorm, ospam, ospcat, ospent, osx, and the SP equivalent symlinks: nsgmls, sgml2xml, sgmlnorm, spam, spcat, spent, 和 sx

安装库: libosp.so 和SP等效符号链接: libsp.so

安装目录: /usr/include/OpenSP, /usr/share/doc/OpenSP, 和 /usr/share/sgml/OpenSP-1.5.2

简短描述

onsgmls 用于处理SGML文件。

osgmlnorm 在标准输出中打印SGML文档的规范化文档实例,该文档包含在具有系统标识符.nf和.fi的实体的连接中。

ospam 是标记流编辑器。

ospcat 打印在目录中找到的有效系统标识符。

ospent 提供对OpenSP实体管理器的访问。

osx 是SGML规范化器,或用于将SGML文件转换为XML文件。

nsgmls 是指向onsgmls的符号链接。

sgml2xml 是指向osx的符号链接。

sgmlnorm 是指向osgmlnorm的符号链接。

spam 是指向ospam的符号链接。

spcat 是指向ospcat的符号链接。

spent 是指向ospent的符号链接。

sx 是指向osx的符号链接。

libosp.so 包含OpenSP程序解析、验证和操作SGML和XML文件所需的函数。

libsp.so 是指向 libosp.so 的符号链接.

48.5 OpenJade-1.3.2


简介OpenJade

OpenJade包包含一个DSSSL引擎。这对于将SGML和XML转换为RTF、TeX、SGML和XML非常有用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

OpenJade 依赖

必要

OpenSP-1.5.2

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/openjade

安装OpenJade

首先修复使用较新的编译器构建时的问题:

patch -Np1 -i ../openjade-1.3.2-upstream-1.patch

现在修复perl-5.16和更高版本的编译问题:

sed -i -e '/getopts/{N;s#&G#g#;s#do .getopts.pl.;##;}' \
       -e '/use POSIX/ause Getopt::Std;' msggen.pl

执行以下命令安装OpenJade:

export CXXFLAGS="${CXXFLAGS:--O2 -g} -fno-lifetime-dse"            &&
./configure --prefix=/usr                                \
            --mandir=/usr/share/man                      \
            --enable-http                                \
            --disable-static                             \
            --enable-default-catalog=/etc/sgml/catalog   \
            --enable-default-search-path=/usr/share/sgml \
            --datadir=/usr/share/sgml/openjade-1.3.2   &&
make

这个包没有附带测试套件。

现在,作为root用户:

make install                                                   &&
make install-man                                               &&
ln -v -sf openjade /usr/bin/jade                               &&
ln -v -sf libogrove.so /usr/lib/libgrove.so                    &&
ln -v -sf libospgrove.so /usr/lib/libspgrove.so                &&
ln -v -sf libostyle.so /usr/lib/libstyle.so                    &&

install -v -m644 dsssl/catalog /usr/share/sgml/openjade-1.3.2/ &&

install -v -m644 dsssl/*.{dtd,dsl,sgm}              \
    /usr/share/sgml/openjade-1.3.2                             &&

install-catalog --add /etc/sgml/openjade-1.3.2.cat  \
    /usr/share/sgml/openjade-1.3.2/catalog                     &&

install-catalog --add /etc/sgml/sgml-docbook.cat    \
    /etc/sgml/openjade-1.3.2.cat

命令解释

export CXXFLAGS=…: 此命令可防止使用gcc-6.1编译包时出现分段错误。

make install-man: 这个命令安装openjade手册页。

--disable-static: 此开关可防止构建静态库。

--enable-http: 此开关增加了对HTTP的支持。

--enable-default-catalog=/etc/sgml/catalog: 此交换机设置集中式目录的路径。

--enable-default-search-path: 该开关设置SGML_SEARCH_PATH的默认值。

--datadir=/usr/share/sgml/openjade-1.3.2: 这个开关将数据文件放在/usr/share/sgml/openjade-1.3.2而不是/usr/share

ln -v -sf …: 这些命令创建了OpenJade可执行文件和库的Jade等价物。

配置 OpenJade

配置信息

作为root用户:

echo "SYSTEM \"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd\" \
    \"/usr/share/xml/docbook/xml-dtd-4.5/docbookx.dtd\"" >> \
    /usr/share/sgml/openjade-1.3.2/catalog

只有当您打算使用OpenJade通过DSSSL样式表处理BLFS XML文件时,才需要这个配置。

内容

安装程序: openjade 和Jade的等值符号链接, jade

安装库: libogrove.so, libospgrove.so, libostyle.so, 和Jade的等效符号链接: libgrove.so, libspgrove.so, 和 libstyle.so

安装目录: /usr/share/sgml/openjade-1.3.2

简短描述

openjade 是用于转换的DSSSL引擎。

jade 符号链接到 openjade.

48.6 docbook-dsssl-1.79


简介DocBook DSSSL Stylesheets

DocBook DSSSL样式表包包含DSSSL样式表。OpenJade或其他工具使用这些工具来转换SGML和XML DocBook文件。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

文件和测试数据

DocBook DSSSL Stylesheets 依赖

必要

sgml-common-0.6.3

必要 (来测试DocBook SGML工具链)

docbook-3.1-dtd, docbook-4.5-dtd, OpenSP-1.5.2, 和 OpenJade-1.3.2

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/docbook-dsssl

安装DocBook DSSSL Stylesheets

如果你下载了文档,运行:

tar -xf ../docbook-dsssl-doc-1.79.tar.bz2 --strip-components=1

作为root用户,执行以下命令安装DocBook DSSSL Stylesheets:

install -v -m755 bin/collateindex.pl /usr/bin                      &&
install -v -m644 bin/collateindex.pl.1 /usr/share/man/man1         &&
install -v -d -m755 /usr/share/sgml/docbook/dsssl-stylesheets-1.79 &&
cp -v -R * /usr/share/sgml/docbook/dsssl-stylesheets-1.79          &&

install-catalog --add /etc/sgml/dsssl-docbook-stylesheets.cat \
    /usr/share/sgml/docbook/dsssl-stylesheets-1.79/catalog         &&

install-catalog --add /etc/sgml/dsssl-docbook-stylesheets.cat \
    /usr/share/sgml/docbook/dsssl-stylesheets-1.79/common/catalog  &&

install-catalog --add /etc/sgml/sgml-docbook.cat              \
    /etc/sgml/dsssl-docbook-stylesheets.cat

命令解释

上面的命令为这个包创建了一个安装脚本。

测试DocBook SGML工具链(可选)

以下命令将执行必要的测试,以确认安装的DocBook SGML工具链将产生所需的结果。你一定有 docbook-3.1-dtd, docbook-4.5-dtd, OpenSP-1.5.2, 和安装 OpenJade-1.3.2 包,并以root用户执行测试。

所有测试都将在/usr/share/sgml/docbook/dsssl-stylesheets-1.79/doc/testdata目录下执行,作为root用户:

cd /usr/share/sgml/docbook/dsssl-stylesheets-1.79/doc/testdata

第一个测试应该不会产生任何输出到stdout(你的屏幕),并在当前目录下创建一个名为jtest.rtf的文件:

openjade -t rtf -d jtest.dsl jtest.sgm

下一个测试应该只返回以下行到stdout: onsgmls:I: "OpenSP" version "1.5.2"

onsgmls -sv test.sgm

下一个测试应该不会产生任何输出到stdout,并在当前目录下创建一个名为test.rtf的文件:

openjade -t rtf \
    -d /usr/share/sgml/docbook/dsssl-stylesheets-1.79/print/docbook.dsl \
    test.sgm

最后一个测试应该不会产生任何输出到stdout,并在当前目录下创建一个名为c1.htm的文件:

openjade -t sgml \
    -d /usr/share/sgml/docbook/dsssl-stylesheets-1.79/html/docbook.dsl \
    test.sgm

最后,清理:

rm jtest.rtf test.rtf c1.htm

内容

安装程序: collateindex.pl

安装库: None

安装文件: DSSSL stylesheets

安装目录: /usr/share/sgml/docbook/dsssl-stylesheets-1.79

简短描述

collateindex.pl 是一个Perl脚本,它从原始索引数据创建DocBook索引。

48.7 DocBook-utils-0.6.14


简介DocBook-utils

DocBook-utils包是一个实用程序脚本集合,用于转换和分析一般的SGML文档,特别是DocBook文件。这些脚本用于从DocBook或其他SGML格式转换为“经典”文件格式,如HTML, man, info, RTF等。还有一个实用程序可以比较两个SGML文件,并只显示标记上的差异。这对于比较针对不同语言编写的文档很有用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

DocBook-utils 依赖

必要

OpenJade-1.3.2, docbook-dsssl-1.79, and docbook-3.1-dtd

可选 (仅运行时依赖)

SGMLSpm-1.1 (用于转换为man和texinfo), 和 Lynx-2.8.9rel.1Links-2.28W3m (以转换为ASCII文本)

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/docbook-utils

安装DocBook-utils

执行以下命令安装DocBook-utils:

patch -Np1 -i ../docbook-utils-0.6.14-grep_fix-1.patch &&
sed -i 's:/html::' doc/HTML/Makefile.in                &&

./configure --prefix=/usr --mandir=/usr/share/man      &&
make

这个包没有附带测试套件。

现在,作为root用户:

make docdir=/usr/share/doc install

许多包使用DocBook-utils脚本的替代名称。如果希望创建这些备选名称,作为root用户,请使用以下命令:

for doctype in html ps dvi man pdf rtf tex texi txt
do
    ln -svf docbook2$doctype /usr/bin/db2$doctype
done

注意

jw脚本使用which命令来定位所需的实用程序。在尝试使用任何DocBook-utils程序之前,您必须安装Which-2.21

命令解释

patch -Np1 -i ../docbook-utils-0.6.14-grep_fix-1.patch: 这个补丁修正了jw (Jade Wrapper)脚本中的语法,它是许多db2*处理的核心,因此当前版本的grep不会拒绝它。

sed -i ‘s:/html::’ doc/HTML/Makefile.in: 该命令修改HTML文档的安装目录。

docdir=/usr/share/doc: 这个选项被放在make install行,因为configure不能识别它。

内容

安装程序: docbook2dvi, docbook2html, docbook2man, docbook2pdf, docbook2ps, docbook2rtf, docbook2tex, docbook2texi, docbook2txt, jw, 和 sgmldiff

安装库: None

安装目录: /usr/share/doc/docbook-utils-0.6.14 和 /usr/share/sgml/docbook/utils-0.6.14

安装符号链接: db2dvi, db2html, db2man, db2pdf, db2ps, db2rtf, db2tex, db2texi, 和 db2txt

简短描述

docbook2* 是简单的单行包装脚本到jw。它们作为易于记忆的名称提供,用于将DocBook或其他SGML文件转换为相应的格式。

db2* 是指向分别命名的docbook2*命令的符号链接,创建它们是为了满足某些程序对这些名称的使用。

jw 是一个脚本,用于将DocBook或其他SGML文件转换为各种输出格式。它隐藏了OpenJade的大部分复杂性,并增加了舒适的功能。

sgmldiff 用于比较两个SGML文件,并且只返回标记中的差异。这对于比较除了内容中的语言差异之外应该相同的文件特别有用。

上一页      主目录      下一页