quinta-feira, 26 de maio de 2011

Oque é XML Pt3

Instruções de Processamento
Instruções de processamento (PIs) são formas de fornecer informações a uma aplicação. Assim como os comentários, elas não são textualmente parte de um documento XML, mas o processador XML é necessário para reconhecê-las na aplicação.
As instruções de processamento têm a forma: <?nome dadospi?>. O nome, chamado de alvo PI, identifica a PI na aplicação. As aplicações processariam somente os alvos que eles reconhecem e ignoram todas as outras PIs. Qualquer dado que segue oalvo PI é opcional; é para a aplicação que reconhece o alvo. Os nomes usados em PIs podem ser declarados como notações a fim de identificá-los formalmente.
Os nomes de PI que iniciam com xml são reservados para a padronização da XML.
Seções CDATA
Em um documento, uma seção CDATA instrui o analisador para ignorar a maioria dos caracteres de marcação.
Considere um código-fonte em um documento XML. Ele pode conter caracteres que o analisador XML iria normalmente reconhecer como marcação (< e &, por exemplo). Para prevenir isto, uma seção CDATA pode ser usada.
<![CDATA[

*p = &q;
b = (i <= 3);

]]>
Entre o início da seção, <![CDATA[, e o fim da seção, ]]>, todos os dados de caracteres são passados diretamente para a aplicação, sem interpretação. Elementos, referências a entidades, comentários e instruções de processamento são todos irreconhecíveis e os caracteres que os compõem são passados literalmente para a aplicação.
A única cadeia de caracteres que não pode ocorrer em uma seção CDATA é "]]>".
Declarações de Tipos de Documentos
Uma grande porcentagem da especificação da XML trata de vários tipos de declarações que são permitidas em XML. Se você tem experiência com SGML, você reconhecerá estas declarações dos SGML DTDs (Definições de Tipos de Documentos). Se você já viu isto antes, o seu significado pode não ser imediatamente óbvio.
Um dos maiores poderes da XML é que ela permite que você crie seus próprios nomes para marcas. Mas, para uma dada aplicação, é provável não ser significativo para marcas que ocorrer em uma ordem completamente arbitrária. Considere o exemplo 1. Isto teria significado?
<João>Diga <citação>boa noite</citação>, Maria.</João>
<José><citação>Boa noite, Maria.</citação></José>

Sai totalmente do que normalmente esperamos que tenha senso. Simplesmente não significa nada.
Entretanto, de um ponto de vista estritamente sintático, não há nada de errado com este documento XML. Assim, se o documento deve ter significado, e certamente há se você estiver escrevendo uma folha de estilos ou aplicação para processá-lo, deve haver alguma restrição na seqüência e aninhamento das marcas. Declarações são onde estas restrições podem ser expressadas.
Mais genericamente, as declarações permitem a um documento comunicar meta-informações ao analisados a respeito do seu conteúdo. Meta-informação inclui as seqüências e aninhamentos permitidos para as marcas, valores de atributos e seus tipos e padrões, os nomes de arquivos externos que podem ser refernciados e se eles podem ou não conter XML, o formato de algum dado (não-XML) externo que pode ser referenciado e as entidades que podem ser encontradas.
Há quatro tipos de declarações em XML: declarações de tipos de elementos, declarações de listas de atributos, declarações de entidades e declarações de notações.
Declarações de Tipos de Elementos
Declarações de tipos de elementos identificam os nomes dos elementos e a natureza do seu conteúdo. Uma declaração de tipo de elemento típica se parece com isto:
<!ELEMENT piada (João+, José, aplausos?)>
Esta declaração identifica o elemento nomeado como piada. Seu modelo de conteúdo segue o nome do elemento. O modelo de conteúdo define o que um elemento pode conter. Neste caso, uma piada deve conter João e José e pode conter aplausos. As vírgulas entre os nomes dos elementos indicam que eles devem ocorrer em sucessão. O sinal de adição após João indica que ele pode ser repetido mais de uma vez, mas deve ocorrer pelo menos uma vez. O ponto de interrogação após aplausos indica que ele é opcional (pode estar ausente ou ocorrer somente uma vez). Um nome sem pontuação, como José, deve ocorrer somente uma vez.
As declarações para todos os elementos usados em qualquer modelo de conteúdo deve estar presente para que um processador XML verifique a validade do documento.
Além dos nomes de elementos, o símbolo especial #PCDATA é reservado para indicar dados de caracter. A cláusula PCDATA significa dado de caracter analisável.
Os elementos que contêm somente outros elementos são ditos que têm conteúdo de elementos. Os elementos que contêm outros elementos e #PCDATA são ditos que têm conteúdo misturado.
Por exemplo, a definição para José pode ser
<!ELEMENT José (#PCDATA | citação)*>
A barra vertical indica um relacionamento "ou" e o asterisco indica que o conteúdo é opcional (pode ocorrer zero ou mais vezes); por esta definição, portanto, José pode conter zero ou mais caracteres e marcas citação, misturadas em qualquer ordem. Todos os modelos de conteúdo misturado devem ter esta forma: #PCDATA deve vir primeiro, todos os elementos devem ser separados por barras verticais e o grupo inteiro deve ser opcional.
Outros dois modelos de conteúdo são possíveis: EMPTY indica que o elemento não possui conteúdo (e, conseqüentemente, não tem marca de término) e ANY indica que qualquer conteúdo é permitido. O modelo de conteúdo ANY é algumas vezes útil durante a conversão de documentos, mas deveria ser evitado ao máximo em um ambiente de produção, pois desabilita toda a verificação do conteúdo deste elemento.
Aqui está um conjunto completo das declarações de elementos para o Exemplo 1:
Exemplo 2: declarações de elementos para Exemplo 1
<!ELEMENT piada (João+, José, aplausos?)>
<!ELEMENT João (#PCDATA | citação)*>
<!ELEMENT José (#PCDATA | citação)*>
<!ELEMENT citação (#PCDATA)*>
<!ELEMENT aplausos EMPTY>

Declarações de Listas de Atributos
Declarações de listas de atributos identificam que elementos podem ter atributos, que atributos eles podem ter, que valores os atributos podem suportar e qual valor é o padrão. Uma dclaração de lista de atributos típica se parece com isto:
<!ATTLIST piada
nome
ID
#REQUIRED
rótulo
CDATA
#IMPLIED
estado ( engraçada | nãoengraçada ) 'engraçada'>

Neste exemplo, o elemento piada possui três atributos: nome, que é um ID e é obrigatório; rótulo, que é uma cadeia de caracteres (dados de caracter) e não é obrigatório; e estado, que deve ser ou engraçada ou nãoengraçada e por padrão é engraçada, se nenhum valor é especificado.
Cada atributo em uma declaração tem três partes: um nome, um tipo e um valor padrão.
Você tem liberdade para selecionar qualquer nome desejado, sujeito a algumas pequenas restrições, mas os nomes não podem ser repetidos no mesmo elemento.

Nenhum comentário:

Postar um comentário