在 docbook 中使用 xinclude 在程序列表中插入源文件
Insert a source file in programlisting with xinclude in docbook
我有以下文件树
mainfolder
|-assembly.xml
|
|-chapters
| |-introduction.xml
|
|-source
|-example01
|-main.cpp
assembly.xml
是我的docbook的汇编文件。它包含对 introduction.xml
.
的引用
这是程序集:
<?xml version="1.0" encoding="UTF-8"?>
<assembly version="5.1"
xmlns="http://docbook.org/ns/docbook">
<resources xml:base="chapters/">
<resource href="introduction.xml" xml:id="introduction" />
</resources>
<structure xml:id="main-book">
<info>
<description>Book chapters</description>
</info>
<output renderas="book"/>
<module resourceref="introduction"/>
</structure>
</assembly>
introduction.xml
是文档 chapter
。我想在其中插入一个示例,包括 main.cpp
.
<?xml version="1.0" encoding="UTF-8"?>
<chapter version="5.1"
xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xila="http://www.w3.org/2001/XInclude/local-attributes"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:trans="http://docbook.org/ns/transclusion"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:db="http://docbook.org/ns/docbook">
<info>
<title>Introduction</title>
</info>
<section>
<info>
<title>Chapter title</title>
</info>
<para>
You can see an example:
</para>
<example>
<title>main example</title>
<programlisting language="c++">
<xi:include href="./../source/example01/maiin.cpp" parse="text" />
</programlisting>
</example>
</section>
</chapter>
无论如何,当我构建本书时(我使用的是 XMLMind 的个人版),我没有看到任何东西。在 PDF 中打印了示例,但我看到的不是 main.cpp
中的源代码
<xi:include></xi:include>
我做错了什么?如何包含文件中的源代码?
我以不同的方式重现了您的情况,并且在这两种情况下都有效。
您没有提到使用 XMLMind XML 编辑器(简称 XXE)制作一本书的确切步骤,但以下步骤确实很有效。
None 1:我用过XXE专业版,但据我所知,版本之间的区别仅在于生成PDF时在文本中放置随机字符个人版。
注释 2:XXE 表示在您的上下文中不允许使用 <description>Book chapters</description>
元素。尽管如此,程序集还是可以生成成功。
1。让事情在 XXE
中运作
- 在 XXE 中打开程序集文件。
- Select 转换 > 转换文档 > 转换为 PDF.
- Select 保存 pdf 文件的路径,然后按 确定 按钮。
2。让事情在命令行中手动工作
使用您的确切文件和 DIR 结构(我包含了我自己的 .c
文件样本用于我自己的测试)。
使用 XXE 程序集处理器:http://www.xmlmind.com/xmleditor/assembly.shtml - 它与 XXE 用于处理来自 XXE GUI 的程序集的代码库相同。
从程序集获取 docbook 书籍文件:assembly-1_0_2_01/bin/assembly -v assembly.xml docbook_book.xml
在我的测试中,我得到了 .c
示例文件 - 这证明程序集实用程序与 XInclude 配合得很好。
手动获取.pdf
:fop -c <config_file> -xsl <path_to_docbook_ns_stylesheets>/fo/docbook.xsl -xml docbook_book.xml -pdf docbook_book.pdf
我得到的最终结果是 .c
两种情况下的样本。
我有以下文件树
mainfolder
|-assembly.xml
|
|-chapters
| |-introduction.xml
|
|-source
|-example01
|-main.cpp
assembly.xml
是我的docbook的汇编文件。它包含对 introduction.xml
.
这是程序集:
<?xml version="1.0" encoding="UTF-8"?>
<assembly version="5.1"
xmlns="http://docbook.org/ns/docbook">
<resources xml:base="chapters/">
<resource href="introduction.xml" xml:id="introduction" />
</resources>
<structure xml:id="main-book">
<info>
<description>Book chapters</description>
</info>
<output renderas="book"/>
<module resourceref="introduction"/>
</structure>
</assembly>
introduction.xml
是文档 chapter
。我想在其中插入一个示例,包括 main.cpp
.
<?xml version="1.0" encoding="UTF-8"?>
<chapter version="5.1"
xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xila="http://www.w3.org/2001/XInclude/local-attributes"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:trans="http://docbook.org/ns/transclusion"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:db="http://docbook.org/ns/docbook">
<info>
<title>Introduction</title>
</info>
<section>
<info>
<title>Chapter title</title>
</info>
<para>
You can see an example:
</para>
<example>
<title>main example</title>
<programlisting language="c++">
<xi:include href="./../source/example01/maiin.cpp" parse="text" />
</programlisting>
</example>
</section>
</chapter>
无论如何,当我构建本书时(我使用的是 XMLMind 的个人版),我没有看到任何东西。在 PDF 中打印了示例,但我看到的不是 main.cpp
中的源代码
<xi:include></xi:include>
我做错了什么?如何包含文件中的源代码?
我以不同的方式重现了您的情况,并且在这两种情况下都有效。
您没有提到使用 XMLMind XML 编辑器(简称 XXE)制作一本书的确切步骤,但以下步骤确实很有效。
None 1:我用过XXE专业版,但据我所知,版本之间的区别仅在于生成PDF时在文本中放置随机字符个人版。
注释 2:XXE 表示在您的上下文中不允许使用 <description>Book chapters</description>
元素。尽管如此,程序集还是可以生成成功。
1。让事情在 XXE
中运作- 在 XXE 中打开程序集文件。
- Select 转换 > 转换文档 > 转换为 PDF.
- Select 保存 pdf 文件的路径,然后按 确定 按钮。
2。让事情在命令行中手动工作
使用您的确切文件和 DIR 结构(我包含了我自己的
.c
文件样本用于我自己的测试)。使用 XXE 程序集处理器:http://www.xmlmind.com/xmleditor/assembly.shtml - 它与 XXE 用于处理来自 XXE GUI 的程序集的代码库相同。
从程序集获取 docbook 书籍文件:
assembly-1_0_2_01/bin/assembly -v assembly.xml docbook_book.xml
在我的测试中,我得到了.c
示例文件 - 这证明程序集实用程序与 XInclude 配合得很好。手动获取
.pdf
:fop -c <config_file> -xsl <path_to_docbook_ns_stylesheets>/fo/docbook.xsl -xml docbook_book.xml -pdf docbook_book.pdf
我得到的最终结果是 .c
两种情况下的样本。