有没有办法在DocBook文档中定义宏(就像TeX宏或latex定义的宏)?
DocBook非常冗长,宏会有很大帮助。我在快速入门教程中找不到它们。
如果是这样的话,谁能提供一个简单的例子或链接到?
谢谢
发布于 2010-04-15 04:12:34
我不确定这是不是你想要的/它是否完全满足了你的需求,但我正在考虑ENTITY。您可以在顶部定义它们(在您的XML文档的顶部,所以是通用的XML,没有特定于DocBook的内容)。就像这里看到的'doc.release.number‘和’doc.release ase.date‘。但也可以通过单独的文件包含它们。如第3个实体行所示。这里系统的意思是,来自另一个文件'entities.ent‘。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY doc.release.number "1.0.0.beta-1" >
<!ENTITY doc.release.date "April 2010" >
<!ENTITY % entities SYSTEM "entities.ent" >
%entities;
]>
<!-- This document is based on http://readyset.tigris.org/nonav/templates/userguide.html -->
<article lang="en">
<articleinfo>
<title>&project.impl.title; - User Manual</title>
<subtitle></subtitle>
<date>&project.impl.release.date;</date>
<copyright>
<year>doc.release.year</year>
<holder>Team - &project.impl.title;</holder>
</copyright>
<releaseinfo>&doc.release.number;</releaseinfo>
</articleinfo>
<section>
<title>Introduction</title>
<para>
The &project.impl.title; has been created to clean up (X)HTML and XML documents as part of
</para>
<section>
</article>在文档中,您可以通过&project.impl.title;中的起始&和结束;引用实体
在文件'entities.ent‘中,您可以用类似的方式指定实体元素:
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY project.impl.title 'Maven Tidy Plug-in' >
<!ENTITY project.impl.group-id 'net.sourceforge.docbook-utils.maven-plugin' >
<!ENTITY project.impl.artifact-id 'maven-tidy-plugin' >
<!ENTITY project.impl.release.number '1.0.0.beta-1' >
<!ENTITY project.impl.release.date 'April 2010' >
<!ENTITY project.impl.release.year '2010' >
<!ENTITY project.impl.url '../' >
<!ENTITY project.spec.title '' >
<!ENTITY project.spec.release.number '' >
<!ENTITY project.spec.release.date '' >
<!ENTITY doc.release.year '2010' > 发布于 2010-08-02 19:39:05
这并不完全符合您的要求,但可能对您的某些情况有帮助:您可以在包装器样式表中定义模板,您可以在其中定义fo命令。下面是一些例子:
代码:
<xsl:template match="symbolchar">
<fo:inline font-family="Symbol">
<xsl:choose>
<xsl:when test=".='ge'">≥</xsl:when>
<xsl:when test=".='le'">≤</xsl:when>
<xsl:when test=".='sqrt'">√</xsl:when>
<xsl:otherwise>?!?</xsl:otherwise>
</xsl:choose>
</fo:inline>
</xsl:template>用法:
<symbolchar>le</symbolchar>代码:
<xsl:template match="processing-instruction('linebreak')">
<fo:block/>
</xsl:template>用法:
<?linebreak?>发布于 2010-04-08 22:50:25
您是否考虑过从另一种格式(如reStructuredText)生成DocBook?
我发现它非常适合用来编写文档。
此外,您还可以非常快速地编写宏预处理器(或查看m4)。如果您使用的是DocBook的XML版本,那么简单的XSLT就可以了。只需编写一些标签并转换它们即可。自动添加样板内容。准备好对XSLT感到非常愤怒吧。因为它不是它所能做到的。让你的思维扭曲。
https://stackoverflow.com/questions/2600827
复制相似问题