Можно ли включить учебник "статья" в "книгу"?
Возникла проблема с генерацией из 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)! Будьте в курсе об этом!