Можно ли включить учебник "статья" в "книгу"?

Возникла проблема с генерацией из docbook в PDF.

Мне нужно создать один PDF на основе нескольких документов docbook-xmls. Некоторые из этих XML-файлов пишутся вручную (как показано ниже в виде отрывка "book.xml"), некоторые из них создаются OxygenXML (второй отрывок ниже). Последние представляют собой XSD-схемы, перенесенные в docbook с помощью OxygenXML. Поскольку у Кислорода здесь нет опций, он всегда выпускал книгу "Статья".

Файл, который включает эти статьи, является книгой "книга". Однако включение приводит к ошибкам: первая ошибка говорит о том, что:

element "article" from namespace "http://docbook.org/ns/docbook" 
not allowed in this context

мой book.xml:

<?xml version="1.0" encoding="utf-8"?>
<book version="5.1" xml:lang="en" xmlns="http://docbook.org/ns/docbook"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xlink2="http://www.w3.org/1999/xlink"
  xmlns:xlink="http://www.w3.org/1999/xhtml"
  xmlns:xi="http://www.w3.org/2001/XInclude"
  xmlns:ns6="http://www.w3.org/2000/svg"
  xmlns:ns5="http://www.w3.org/1998/Math/MathML"
  xmlns:ns2="http://docbook.org/ns/transclusion"
  xmlns:ns="http://docbook.org/ns/docbook">

<title>xyz</title>

<chapter>
  <title>my xsd previously rendered by oxygen</title>
  <xi:include href="generated_schemata/my_xsd.xml"/>
</chapter>
...

и начало сгенерированного my_xsd.xml:

<?xml version="1.0" encoding="UTF-8"?>
<?oxygen RNGSchema="http://www.oasis-open.org/docbook/xml/5.0/rng/docbook.rng" type="xml"?>
<!--XML Schema documentation generated by <oXygen/> XML Developer.-->
<article version="5.0" xmlns="http://docbook.org/ns/docbook"
     xmlns:ns5="http://www.w3.org/1998/Math/MathML"
     xmlns:ns4="http://www.w3.org/1999/xhtml"
     xmlns:ns3="http://www.w3.org/2000/svg"
     xmlns:ns2="http://www.w3.org/1999/xlink"
     xmlns:ns="http://docbook.org/ns/docbook">
  <title>Schema documentation for ServiceCatalogue.xsd</title>

  <info>
    <pubdate>february 20, 2018</pubdate>
  </info>

  <section>
    <title>Namespace: ""</title>
...

Вопрос: есть ли способ включить "статью" в docbook в "книгу" (или какую-то другую структуру, так что в итоге я получу один PDF)?

Инструменты, которые я использую, поставляются вместе с docbkx-plugin.

1 ответ

Решение

Проблема в вашем фрагменте кода заключается в том, что вы включаете (XInclude) статью в chapter - не в пределах book сам. И это запрещено схемой DocBook (article не может быть в chapter)

То есть:

  • book < article (или же set < article) разрешены;
  • НО это (как в вашем образце): book < chapter < article не является

Вы просто не видели полную картину из-за заявления xinclude.

Итак, обходной путь (сравните эти два фрагмента):

С уважением:

<book version="5.1" ...>
...
<title>xyz</title>

<chapter>
   <title>my xsd previously rendered by oxygen</title>
   <xi:include href="generated_schemata/my_xsd.xml"/>
</chapter>
</book>

Правильный:

<book version="5.1"...>
...
<title>xyz</title>

<xi:include href="generated_schemata/my_xsd.xml"/>

</book>

ПРИМЕЧАНИЕ: у вас есть разные проверки схемы в книге (5.1) и статье (5.0)! Будьте в курсе об этом!

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