Seção 3: Autores

Q 3.18: Como usar gráficos no XML?

Referencie-os como para HTML ou use XLink. Ou inclua SVG.

Os gráficos tradicionalmente apenas foram links que passaram a ter um arquivo de imagem no final em vez de outro texto. Eles podem, portanto, ser implementados de qualquer maneira suportados pelas especificações XLink e XPointer (veja como o XML afetará os links dos meus documentos? ), Incluindo o uso de sintaxe semelhante às imagens HTML existentes. Eles também podem ser referenciados usando o mecanismo incorporado NOTATION e ENTITY do XML de forma semelhante ao SGML padrão, como entidades externas não comparadas.

No entanto, Vetores Gráficos Escaláveis (uma especificação XML para gráficos vetoriais) permite que você use a marcação XML para desenhar objetos de vetores gráficos diretamente no seu arquivo XML. Isso proporciona enorme poder para a inclusão de gráficos portáteis, especialmente seqüências interativas ou animadas, e agora está sendo suportado em navegadores e pode ser exportado a partir de programas gráficos padrão (desenho), como o GIMP .

As especificações de ligação XML para imagens externas proporcionam um controle muito melhor sobre o percurso e a ativação de links, portanto, um autor pode especificar, por exemplo, se uma imagem aparece ou a página é carregada, ou em um clique do usuário , Ou em uma janela separada, sem ter que recorrer a scripts.

O próprio XML não predica ou restringe os formatos de arquivos gráficos: GIF, JPG, TIFF, PNG, CGM, EPS e SVG, no mínimo, pareceriam sensíveis; No entanto, os formatos vetoriais (EPS, SVG) são normalmente essenciais para imagens não fotográficas (diagramas).

Gráficos binários incorporados

Você não pode incorporar um arquivo de gráficos binários brutos (ou qualquer outro dado binário [sem texto] diretamente em um arquivo XML porque qualquer bytes que se assemelham a marcação seria mal interpretado: você deve se referir ao link (veja abaixo). No entanto, é possível incluir uma transformação codificada por texto de um arquivo binário como uma Seção Marcada de CDATA, usando algo como UUencode com os caracteres de marcação], e> removido do mapa para que eles não pudessem ocorrer como um CDATA errado Seqüência de término e seja mal interpretado. Você poderia usar apenas uma codificação hexadecimal simples, como usado no PostScript. Para gráficos vetoriais, no entanto, a solução é usar SVG (veja a dica de Peter Murray-Rust ).

Os arquivos de som são objetos binários da mesma forma que os gráficos externos são, portanto, eles só podem ser referenciados externamente (usando as mesmas técnicas que para gráficos). Os arquivos de música escritos no MusiXML ou uma variante XML do SMDL podem, no entanto, ser incorporados da mesma forma que para SVG.

O ponto sobre o uso de entidades para gerenciar seus gráficos é que você pode manter a lista de declarações de entidades separadas do resto do documento, para que você possa reutilizar os nomes se uma imagem for necessária mais de uma vez, mas apenas armazene o arquivo físico Especificação em um único local. As entidades externas estão disponíveis somente quando se utiliza uma DTD, e não um Schema.

Bob DuCharme escreve:

Todos os dados em uma entidade de documento XML devem ser XML de análise. Você pode definir uma entidade externa como uma entidade analisada (XML analisável) ou uma entidade não compartilhada (qualquer outra coisa). As entidades não compartilhadas podem ser usadas para arquivos de imagem, arquivos de som, arquivos de filme ou o que você quiser. Eles só podem ser referenciados a partir de um documento como o valor de um atributo (bem como uma imagem de bitmap em uma página da Web HTML é o valor do atributo src do elemento img e não faz parte do documento real. Em um documento XML, este atributo deve ser declarado de tipo ENTITY , e a declaração da entidade deve especificar uma NOTATION , declarada, porque se a entidade não for XML, o processador XML precisa saber o que é. Por exemplo, no documento a seguir, a entidade colliepic é declarada ter uma notação de JPEG, e é usada como o valor do atributo de picfile do elemento de cão vazio.


<?xml version="1.0"?> 
<!DOCTYPE dog [ 
<!NOTATION JPEG SYSTEM "Joint Photographic Experts Group"> 
<!ENTITY colliepic SYSTEM "lassie.jpg" NDATA JPEG>
<!ELEMENT dog EMPTY> 
<!ATTLIST dog picfile ENTITY #REQUIRED> 
]> 
<dog picfile="colliepic"/> 
      

O método Entity é particularmente útil quando você tem muitas imagens, ou muitos usos repetidos das mesmas imagens, porque você só as declara uma vez, na parte superior do documento, facilitando o gerenciamento de imagens.

As especificações de ligação XLink e XPointer descrevem outras formas de apontar para um arquivo não XML, como um gráfico. Estes oferecem um controle mais sofisticado sobre a posição, manuseio e aparência da entidade externa dentro do documento XML.

Peter Murray-Rust escreve:

GIFs e JPEGs atendem bitmaps (representações de pixels de imagens: todas compostas de pontos coloridos). Os gráficos vetoriais (escaláveis, compostos de especificações de desenho) são abordados na atividade gráfica do W3C como gráficos vetoriais escaláveis ​​(veja http://www.w3.org/Graphics/SVG ). Com a especificação agora completa, é possível transmitir a representação gráfica como vetores diretamente no arquivo XML. Para muitos objetos gráficos isso significará um tempo de download bastante reduzido e uma escala sem perda de detalhes.

Max Dunn escreve:

SVG realmente retirou recentemente, e é uma história de sucesso XML [...] existem [muitas] implementações conformes. Recentemente, iniciamos um FAQ do SVG em http://www.svgfaq.com/ .

XSLT pode ser usado para gerar SVG a partir de XML; Os detalhes estão em http://www.svgfaq.com/xslt.asp (tenha cuidado ao usar o XSLT, não o WD-xsl obsoleto da Microsoft ). Os documentos também podem interagir com imagens SVG (consulte http://www.xml.com/pub/a/2000/03/22/style/index.html ).