2015-01-27 4 views
1

Я пытаюсь создать docbook. Я создал основную книгу XML, и внутри нее я использую <xi:include>, чтобы добавить разные главы.Docbook xi: include

Я следую DocBook XSL: The Complete Guide/Using XInclude, чтобы создать файлы книг и глав.

Вот мой основной файл XML book1.xml.

<?xml version="1.0"?> 
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 
         "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> 
<book> 
    <title>MAIN NOTES</title> 
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="CH1.xml" /> 
</book> 

И вот моя глава1 (CH1.xml).

<?xml version='1.0' encoding='UTF-8'?> 
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 
         "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> 
<chapter id="CH1"> 
    <title>Chapter 1</title> 
    <para>This is Test</para> 
</chapter> 

Теперь, когда я эти проверки XML-файлов, CH1.xml нормально. Но я всегда получаю

Нет Declaration найдено для элемента "XI: включить"

для book1.xml. Что мне здесь не хватает? Пожалуйста помоги.

+0

Какой парсер вы используете? Это XInclude-aware или вы можете проверить, включены ли функции XInclude? – potame

+0

Я использую xsltproc с опцией --xinclude. – Joydeep

ответ

0

Как сделать работу по проверке DTD при использовании XInclude описан в другом разделе «DocBook XSL: The Complete Guide»: http://www.sagehill.net/docbookxsl/ValidXinclude.html.

Короче говоря, есть две альтернативы:

  1. Validate после обработки XInclude. С помощью xmllint это можно сделать с помощью этой команды: xmllint --xinclude --postvalid book1.xml
  2. Настроить DTD, чтобы включить элемент xi:include.
+0

Спасибо. Это решает проблему. Я использовал 'xmllint --xinclude --postvalid book1.xml', а output - допустимый xml. – Joydeep

Смежные вопросы