Вставьте исходный файл в список программ с помощью xinclude в 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>
Что я делаю не так? Как я могу включить исходный код из файла?
1 ответ
Я воспроизвел вашу ситуацию по-разному, и все получилось в обоих случаях.
Вы не упомянули точные шаги, которые вы делаете для создания книги с использованием XMLMind XML Editor (XXE для краткости), но следующие шаги, безусловно, работали хорошо.
Нет 1: Я использовал XXE Professional Edition, но, как я знаю, разница между версиями заключается только в том, что в текст вводится случайный символ при создании PDF из Personal Edition.
Примечание 2: XXE говорит, что <description>Book chapters</description>
элемент не разрешен в вашем контексте. Несмотря на это, сборка может быть успешно сгенерирована.
1. Начало работы в XXE
- Откройте файл сборки в XXE.
- Выберите " Преобразовать" > " Преобразовать документ" > " Преобразовать в PDF".
- Выберите путь для сохранения 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
образец включен в обоих случаях.