/ / Konwersja Docbook 5.0 (z częściowym włączeniem) do formatu PDF - xml, xerces, docbook, xinclude

Konwersja Docbook 5.0 (z częściowym włączeniem) do formatu PDF - xml, xerces, docbook, xinclude

Próbowałem przekonwertować dokument docbook z fragmentarycznymi / częściowymi włączeniami do pdf przy użyciu Xerces 2.7.1 i Xalan 2.7.0.

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

To nie zadziałało, dopóki nie doszedłem do wniosku, że aby użyć częściowego włączenia, trzeba zapewnić możliwą do rozwiązania ścieżkę do schematu za pomocą <!DOCTYPE ..>.

Ale Docbook 5.0 powinien / musi używać deklaracji przestrzeni nazw zamiast 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">

Jak mogę udostępnić plik docbookxi.rng w zestawie narzędzi?

Odpowiedzi:

1 dla odpowiedzi № 1

Nie ma sposobu, aby "dostarczyć docbookxi.rng do toolchain", które pomogłyby w tym przypadku. Nie istnieje nawet standardowy sposób na powiązanie dokumentu XML ze schematem RELAX NG xmlns="http://docbook.org/ns/docbook" deklaracja przestrzeni nazw identyfikuje dokument jako DocBook 5 (wraz z version atrybut), ale nie mówi nic o lokalizacji schematu.

Linia taka jak ta,

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

oznacza: "uwzględnij część TestDocument.included.xml jest identyfikowany przez element, który ma atrybut typu ID o wartości Section2".

W DocBook 5, xml:id służy do unikalnych identyfikatorów. Ten atrybut jest rozpoznawany jako identyfikator typu i nie ma potrzeby, aby schemat określał jego "ID-ność" (patrz http://www.w3.org/TR/xml-id/). Więc jeśli maszid atrybuty w dokumentach DocBook 5, zmień je na xml:id.

Powinieneś jednak upewnić się, że parser XML obsługuje xml:id. Wydaje się, że brakuje tutaj Xerces, więc może nadal nie działać dla ciebie (zob https://issues.apache.org/jira/browse/XERCESJ-1113).

Jeśli występują problemy, możesz spróbować użyć DocBook 5 DTD (tak, istnieje DTD, mimo że normatywny schemat jest napisany w RELAX NG). Deklaruje DTD xml:id być identyfikatorem typu.