D.5. NameSpaces in XML (XML Namespace)

Esta é mais uma proposta no sentido de adoptar a filosofia dos objectos para o SGML. A ideia é podermos criar um documento em que uma parte obedeça a um DTD e outras partes obedeçam a outros. Ou seja, podemos criar novas estruturas documentais combinando partes de outras já existentes.

Esta proposta está ainda num estado embrionário e o respectivo suporte a nível de ferramentas de processamento é quase inexistente.

Para terminar apresentamos um exemplo da sua aplicação.


Exemplo D-9. XML NameSpaces

Voltemos ao DTD das receitas. Agora, pretende-se criar uma nova receita mas quer-se colocar para cada ingrediente uma marca aconselhada. Como não se previu nenhum elemento para isso vai-se importá-lo do DTD de artigos (descreve os produtos à venda no mercado).

Declara-se a importação de novos elementos:

<?xml:namespace name="http://jcr.pt/"
                         href="http://jcr.pt/dtds/artigo.dtd"
                         as="art"?>
a partir deste momento todos os elementos do dtd artigo podem ser usados desde que prefixados com "art".

Assim, pode-se escrever:

<RECEITAS>
  <TITULO> O Meu Livro de Receitas </TITULO>
  <RECEITA ORIGEM="Portugal">
    <TITULO> Bolo </TITULO>
    <INGREDIENTE> 500g de farinha </INGREDIENTE>
    <art:MARCA>Branca de Neve</art:MARCA>
    <INGREDIENTE> 200g de açucar </INGREDIENTE>
    <art:MARCA>Português</art:MARCA>
    <INGREDIENTE> 300g de manteiga </INGREDIENTE>
    <art:MARCA>Loreto</art:MARCA>
  </RECEITA>
</RECEITAS>