Namespaces Resumo Descrição de um padrão para construir documentos que incluem componentes de domínios diferentes, definidos em diferentes DTDs.
Namespace É possível que um único documento XML contenha fragmentos que estão definidos em diferentes DTDs Descrever um padrão para construir documentos que incluem componentes de domínios diferentes Três tópicos: identificar a qual esquema um determinado elemento pertence como evitar duplicação de elementos e nomes de atributos validação de documentos contendo fragmentos de diferentes DTDs 1
Múltiplos namespaces <shoe> <boot> <slipper> Footwear DTD <bonnet> <wheel> <boot> Vehicle DTD 2
Namespaces Um único esquema ou DTD é considerado possuir um namespace: ambiente no qual todos os nomes de elementos são únicos, e todos os nomes de atributos (dentro do contexto de um elemento particular) são únicos também Múltiplos namespaces: conceito de um único documento conter informações definidas em mais de um domínio namespace O padrão focaliza dois tópicos: identificação de namespaces usados no documento identificação de qual namespace um elemento ou atributo pertence 3
Identificação de Namespaces Utiliza uma URL: identificador único URL: é somente uma string de caracteres Elementos e atributos de diferentes namespaces são diferenciados uns dos outros através de um prefixo URLs são adequadas para identificação, mas não como prefixos O autor do documento ou DTD tem pleno controle sobre nomes de prefixos: garantia que cada prefixo é único dentro do documento ou classe de documentos 4
Usando Namespaces São definidos usando atributos Atributo xmlns: declara o namespace e o prefixo para elementos e atributos <X:html xmlns:x="http://www.w3.org/tr/rec-html40">...<x:p>an HTML paragraph.</x:p>... </X:html> Este exemplo referencia um namespace e dá o prefixo local X 5
Embora namespaces possam ser definidos dentro do elemento raiz, eles podem ser especificados em qualquer elemento Ex: incluir uma tabela HTML em um documento XML: <Q:para>A normal paragraph</q:para> <X:table xmlns:x="http://www.w3.org/tr/rec-html40">...<x:td>an HTML table cell.</x:td>... </X:table> <Q:para>A normal paragraph</q:para> 6
Um elemento pode declarar mais de um namespace <Q:book xmlns:q="file:/dtds/book.dtd" xmlns:x="http://www.w3.org/tr/rec-html40">...<q:para>a normal paragraph.</q:para>......<x:td>an Html table cell.</x:td>... </Q:book> 7
Atributos de um namespace podem ser usados em elementos de um outro namespace <Q:house Q:style="Georgian" X:style="color:red"> O elemento House contém dois atributos Style. O primeiro é do namespace house, e explica que tipo de propriedade o elemento House descreve. O segundo é um atributo Html que é usado para formatar o conteúdo do elemento (texto em vermelho) 8
Namespace default: quando todo elemento e atributo tem um prefixo, o documento pode tornar-se difícil para ler, além de aumentar seu tamanho. Isso pode ser simplificado. Em atributos: automaticamente omitem-se ao namespace do elemento que eles estão. O primeiro exemplo <Q:house Q:style="Georgian" X:style="color:red"> pode ser simplificado para: <Q:house style="georgian" X:style="color:red"> 9
Em elementos: declara o namespace usando o atributo xmlns sem sufixo. <Q:book xmlns:q="file:/dtds/book.dtd" xmlns:x="http://www.w3.org/tr/rec-html40">...<q:para>a normal paragraph.</q:para>......<x:td>an Html table cell.</x:td>... </Q:book> pode ser simplificado para: <book xmlns="file:/dtds/book.dtd" xmlsns:x="http://www.w3.org/tr/rec-html40">...<para>a normal paragraph.</para>......<x:td>an Html table cell.</x:td>... </book> 10
Usando namespaces A fim de fazer o parse de documentos contra uma DTD, é necessário incluir os prefixos nas definições dos elementos: <!ELEMENT document (shoe boot slipper veh:boonet veh:boot veh:wheel)*> isso significa que a seleção de prefixos é realizada pelo autor da DTD, ao invés do autor do documento o autor deve estar consciente de quais namespaces são permitidos em todos os documentos que adaptam-se a DTD 11
A definição do namespace pode também ser incluída na DTD, mostrando um bom uso do tipo de atributo FIXED: <!ATTLIST document xmlns:veh #FIXED "file:///c:/veh.dtd"> 12