Editando Documentos DocBook XML

ArticleCategory: [Artikel Kategorie]

Applications

AuthorImage:[Bild des Autors]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in en Egon Willighagen

en to pt Bruno Sousa

AboutTheAuthor:[Über den Autor]

Obteve o seu mestrado em química na Universidade de Nijmegen, e vai fazer a sua tese doutoramento acerca da representação molecular, na mesma Universidade. Joga basketball e programa aplicações Java.

Abstract:[Zusammenfassung]

Este artigo descreve o uso do programa Kate e do seu plugin XML como um utilitário para editar documentos DocBook XML.

ArticleIllustration:[Titelbild des Artikels]

[Illustration]

ArticleBody:[Der eigentliche Artikel]

Introdução

A edição de XML no OpenSource tem sido uma grande dor de cabeça. As pessoas precisam de um editor que possa produzir XML válido e, preferencialmente, que permita ver o output ao mesmo tempo. Existem editores que podem fazer isto, mas são proprietários. No Mundo do OpenSource existem programas que não lhe fornecem um aspecto gráfico muito bom, mas podem produzir documentos XML válidos, e aconselhá-lo acerca dos elementos que são permitidos numa determinada posição do documento.

Claro que existe o Emacs e seu pequeno modo DocBook, que trabalha bem (veja o artigo acerca DocBook anterior). Este modo especial, torna possível a escolha dos elementos filhos a serem colocados no documento tendo por base os elementos já existentes. E permite assim a completação através do tab, baseado neste conhecimento.

Mas neste artigo, não discutirei isto, em invés introduzirei o Kate como um editor de DocBook XML.

Kate

O Kate é um dos editores do ambiente do desktop do KDE. É, razoavelmente, leve, suporta a abertura de múltiplos ficheiros e tem sintaxe highlighting, também para o XML. Ainda mais que o ano passado foi escrito um plugin XML por Daniel Naber, para o ajudar a escrever documentos XML válidos. No KDE 3.0 este plugin XML para o Kate é incluído no pacote kde-addon. Se o pacote addon do KDE 3.0 não está instalado, faça-o instalando o pacote binário de muitas distribuições, ou compilando o pacote a partir do código fonte:
./configure --prefix=/path/where/your/kde3/is/installed
make
sudo make install

Quando o plugin está instalado, precisa ainda de o dar a conhecer ao Kate. Para fazer isto, seleccione "Configure Kate" no menu "Settings". No administrador de "Plugins" pode por o plugin XML na lista dos plugins carregados:

[Kate's plugin manager]

Construindo a Meta DTD

As Meta DTDs são geradas com o dtdparser de Norman Walsh, cujos pacotes podem ser obtidos a partir de SourceForge.net.

Eu utilizei a versão 2.0beta6 ligeiramente alterada. Por exemplo, eu tive de corrigir o caminho no programa dtdparser, na primeira linha, para apontar para a localização correcta da minha instalação do Perl. Correndo o programa, produziria uma saída mais ou menos assim:

> ./dtdparse /path/to/docbookx.dtd
Public ID: unknown
System ID: /usr/share/sgml/docbook/dtd/xml/4.1.2/docbookx.dtd
SGML declaration: unknown, using defaults for xml and namecase
Loading dbnotnx.mod
Loading dbcentx.mod
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOamsa.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOamsb.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOamsc.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOamsn.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOamso.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOamsr.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISObox.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOcyr1.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOcyr2.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOdia.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOgrk1.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOgrk2.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOgrk3.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOgrk4.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOlat1.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOlat2.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOnum.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOpub.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOtech.ent
Loading dbpoolx.mod
Loading calstblx.dtd
Loading dbhierx.mod
Loading dbgenent.mod
Parse complete.
Writing docbookx.dtd.xml...
Done.

Note no grande número de entidades que são carregadas. Parcialmente, devido a isto a Meta DTD resultante tem 1.63Mibibytes Mas com um processador XSLT como o xsltproc isto pode ser diminuído para 0.96 MiB com a folha de estilo simplify_dtd.xsl do pacote kde-addon:

> xsltproc simplify_dtd.xsl docbookx.dtd.xml > docbook-xml-4.1.2.dtd.xml

O docbook-xml-4.1.2.dtd.xml resultante pode ser copiado para /path/to/kde3/share/apps/katexmltools/ onde /path/to é alterada para a localização onde o KDE3 está, actualmente, instalado. Mas o seu directório de trabalho também serve, visto que o plugin XML lhe pedirá por um nome de ficheiro ao atribuir uma nova Meta DTD (veja abaixo).

Editando

Ao criar um novo documento DocBook XML é preciso atribuir uma Meta DTD. Isto é feito escolhendo "Assign Meta DTD" no menu "XML Plugin". Uma caixa de diálogo de ficheiros aparecerá e pode seleccionar a DTD que quer utilizar. Neste caso, é a DocBook XML 4.1.2 Meta DTD que acabámos de construir. Um novo diálogo indicará a progressão:

[Meta DTD parsing dialog]

No documento novo e vazio, digitamos "<book>". Para fechar o elemento carregamos no F11. Se sintaxe highlighting ainda não estiver activada , pode activá-la seleccionando "Highlight Mode" no menu "Document". A sintaxe XML highlighting está no submenu "Markup".

Porque nos esquecemos dos atributos que o elemento book tem, pomos o cursor no fim da palavra book na tag de abertura e premimos Ctrl+Return. Aparecerá um menu pop up com uma lista de todos os possíveis atributos para o elemento corrente:

[Inserting an attribute]

Colocando o cursor entre os "'s e premindo Ctrl+Return dá-lhe mesmo os valores possíveis para o atributo, se estiverem definidos na DTD. O que não é o caso para o atributo id.

Depois de termos inserido o atributo temos o seguinte código DocBook XML:

<book id="SomeID">
</book>

Colocando o cursor entre o inicio e o fim da tag do elemento book e premindo Ctrl+Return, nessa posição obtemos uma nova lista pop up, mas agora com todos os possíveis elementos filhos do elemento book. Por exemplo, podemos seleccionar o elemento title:

[Inserting an attribute]

Um senão deste plugin é que só tem conhecimento dos elementos filhos e não tem conhecimento da ordem ou do número de vezes que pode ocorrer. Por exemplo, a DTD não permite dois ou mais elementos title, mas o plugin XML não o avisa acerca disto. Como o plugin não tem (ainda) uma opção de validação, é muito fácil obter documentos inválidos.

Um resumo da funcionalidade do plugin é dado na tabela abaixo:

Tarefa Comando
Inserir (elementos e atributos) XML Ctrl+Return
Inserir Entidade F10
Fechar a Tag F11

O DocBook do KDE

O próprio projecto do KDE também utiliza o DocBook como um formato para a sua documentação. Logo que o plugin de XML venha por omissão com uma versão personalizada do DocBook, atribuir a Meta DTD para o DocBook passa a ser preferível sobre a Meta DTD para DocBook XML 4.1.2, se considerarmos a escrita de documentação KDE.

O MathML e o SVG

Nos dias de hoje o DocBook também suporta a MathML para incluir equações matemáticas nos documentos. Uma DTD remisturada para validar documentos DocBook com o código MathML pode ser encontrado neste mensagem de email.

As DTD do SVG, infelizmente, foram escritas de um modo que não é possível incluí-las no DocBook. Mas estão a ser feitos esforços para o tornar possível.

A utilização do plugin XML do Kate requer que se faça uma nova Meta DTD baseada na combinação do DTD com o dtdparse.

Conclusão

O plugin de XML para o Kate pode ajudá-lo imenso na edição de documentos DocBook XML. Não é perfeito, mas mais uma vez, foi desenvolvido recentemente. Com o KDE 3.0 está disponível para muito gente.