Eu estava tentando converter um documento docbook com fragmentado / parcial inclui para pdf usando Xerces 2.7.1 e Xalan 2.7.0.
<xi:include href="./TestDocument.included.xml" xpointer="Section2"/>
Isso não funcionou até que eu descobri que, para usar as inclusões parciais, é necessário fornecer um caminho resolvível para o arquivo de esquema usando <!DOCTYPE ..>
.
Mas, com o Docbook 5.0, deve-se usar declarações de namespace em vez de 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">
Como posso fornecer o docbookxi.rng para o toolchain?
Respostas:
1 para resposta № 1Não há como "fornecer o docbookxi.rng para o conjunto de ferramentas" que ajudaria nesse caso. Não existe uma maneira padrão de associar um documento XML a um esquema RELAX NG. xmlns="http://docbook.org/ns/docbook"
declaração de namespace identifica o documento como DocBook 5 (junto com o version
atributo), mas não diz nada sobre a localização do esquema.
Uma linha como esta,
<xi:include href="./TestDocument.included.xml" xpointer="Section2"/>
significa: "incluir a porção de TestDocument.included.xml
que é identificado pelo elemento que possui um atributo do tipo ID com um valor de Section2
".
No DocBook 5, xml:id
é usado para identificadores exclusivos. Este atributo é reconhecido como sendo do tipo ID, e não há necessidade de um esquema para determinar sua "ID-ness" (veja http://www.w3.org/TR/xml-id/). Então, se você tem algumaid
atributos em seus documentos do DocBook 5, altere-os para xml:id
.
Além disso, você também deve se certificar de que o analisador XML suporta xml:id
. Xerces parece estar faltando aqui, então ainda pode não funcionar para você https://issues.apache.org/jira/browse/XERCESJ-1113).
Se houver problemas, você pode tentar usar o DocBook 5 DTD (sim, há um DTD mesmo que o esquema normativo esteja escrito em RELAX NG). Que DTD declara xml:id
para ser do tipo ID.