Вставьте исходный файл в список программ с помощью 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

  1. Откройте файл сборки в XXE.
  2. Выберите " Преобразовать" > " Преобразовать документ" > " Преобразовать в PDF".
  3. Выберите путь для сохранения PDF-файла и нажмите кнопку ОК.

2. Начало работы вручную в командной строке

  1. Используйте ваши точные файлы и структуру DIR (я включил свой собственный .c образец файла для моего собственного теста).

  2. Используйте процессор сборок XXE: http://www.xmlmind.com/xmleditor/assembly.shtml - он имеет ту же кодовую базу, что XXE использовал для работы со сборками из XXE GUI.

  3. Получить файл книги docbook из сборки:assembly-1_0_2_01/bin/assembly -v assembly.xml docbook_book.xml В моем тесте я получил .c включенный образец файла - это доказывает, что утилита сборки хорошо работает с XInclude.

  4. Получить .pdf вручную: fop -c <config_file> -xsl <path_to_docbook_ns_stylesheets>/fo/docbook.xsl -xml docbook_book.xml -pdf docbook_book.pdf

Я получил окончательный результат с .c образец включен в обоих случаях.

Другие вопросы по тегам