Преобразование Docbook 5.0 (с частичным включением) в PDF - PullRequest
0 голосов
/ 19 декабря 2011

Я пытался преобразовать документ docbook с фрагментированными / частичными включениями в pdf, используя Xerces 2.7.1 и Xalan 2.7.0.

<xi:include href="./TestDocument.included.xml" xpointer="Section2"/>

Это не сработало, пока я не выяснил, что дляиспользование частичного включает в себя, чтобы предоставить разрешаемый путь к файлу схемы, используя <!DOCTYPE ..>.

Но в Docbook 5.0 нужно / нужно использовать декларации пространства имен вместо DOCTYPE.

<?xml version="1.0" encoding="UTF-8"?>
<article xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
xml:lang="de" version="5.0" status="DRAFT" security="confidential"> 

Какя могу предоставить docbookxi.rng для цепочки инструментов?

1 Ответ

1 голос
/ 19 декабря 2011

Нет способа "предоставить docbookxi.rng для цепочки инструментов", который помог бы в этом случае.Нет даже стандартного способа связать документ XML со схемой RELAX NG.Объявление пространства имен xmlns="http://docbook.org/ns/docbook" идентифицирует документ как DocBook 5 (вместе с атрибутом version), но ничего не говорит о расположении схемы.

Строка, подобная этой,

<xi:include href="./TestDocument.included.xml" xpointer="Section2"/>

означает: «включает часть TestDocument.included.xml, которая идентифицируется элементом, который имеет атрибут типа ID со значением Section2».

В DocBook 5, xml:id используется для уникальных идентификаторов.Этот атрибут распознается как идентификатор типа, и для схемы не требуется определять его «идентификатор» (см. http://www.w3.org/TR/xml-id/). Так что, если у вас есть какие-либо атрибуты id в ваших документах DocBook 5, изменитеих на xml:id.

Тем не менее, вы также должны убедиться, что синтаксический анализатор XML поддерживает xml:id. Кажется, здесь отсутствует Xerces, поэтому он все еще может не работать для вас (см. https://issues.apache.org/jira/browse/XERCESJ-1113).

Если есть проблемы, вы можете попробовать использовать DocBook 5 DTD (да, есть DTD, хотя нормативная схема написана в RELAX NG). Этот DTD объявляет xml:id дляиметь тип ID.

...