sexta-feira, 27 de maio de 2011

Oque é XML pt4

O processador XML executa a normalização dos valores dos atributos nos valores dos atributos: as referências de caracter são substuituídas por caracteres referenciados, referências a entidades são resolvidas (recursivamente) e espaços em branco são normalizados.
Declarações de Entidades
Declarações de entidades lhe permitem associar um nome com algum outro fragmento de conteúdo. Essa construção pode ser um pedaço de texto normal, um pedaço de uma declaração de tipo de documento ou uma referência a um arquivo externo que contém ou texto ou dados binários.
Declarações de entidades típicas são mostradas no Exemplo 3.
Exemplo 3: declaração de entidades típica
<!ENTITY
ATI
"ArborText, Inc.">

<!ENTITY boilerplate SYSTEM
"/standard/legalnotice.xml">

<!ENTITY ATIlogo
SYSTEM "/standard/logo.gif" NDATA GIF87A>
Existem três tipos de entidades:
Entidades Internas
Entidades internas associam um nome com uma cadeia de caracteres ou texto literal. A primeira entidade no Exemplo 3 é uma entidade interna. Usando &ATI; em qualquer lugar do documento inserirá "ArborText, Inc" naquele local. Entidades internas permitem a você definir atalhos para textos freqüentemente digitados ou textos que se espera que sejam alterados, como o estado de revisão de um documento.
Entidades internas podem incluir referências para outras entidades internas, mas é errado elas serem recursivas.
A especificação XML pré-define cinco entidades internas:
· &lt; produz o sinal de menor, <
· &gt; produz o sinal de maior, >
· &amp; produz o E comercial, &
· &apos; produz um apóstrofo, '
· &quot; produz aspas, "
Entidades Externas
Entidades externas associam um nome com o conteúdo de um outro arquivo. Entidades externas permitem a documento XML referenciar o conteúdo de um outro arquivo; elas contém ou texto ou dados binários. Se elas contém texto, o conteúdo do arquivo externo é inserido no ponto de referência e analisado como parte do documento referente. Dados binários não são analisados e podem somente ser referenciados em um atributo; eles são usados para referenciar figuras e outro conteúdo não-XML no documento.
A segunda e a terceira entidades no Exemplo 3 são entidades externas.
O uso de &boilerplate; inserirá o conteúdo do arquivo /standard/ legalnotice.xml no local da referência da entidade. O processador XML analisará o conteúdo deste arquivo como se ele ocorresse literalmente no local.
A entidade ATIlogo também é uma entidade externa, mas o seu conteúdo é binário. A entidade ATIlogo pode ser usada somente como o valor de um atributo ENTITY (ou ENTITIES) (em um elemento graphic, talvez). O processador XML passará esta informação para a aplicação, mas ele não tenta processar o conteúdo de /standard/logo.gif.
Entidades Parâmetro
A entidade parâmetro somente pode ocorrer na declaração de tipo de documento. Uma declaração de uma entidade parâmetro é identificada por "% " (porcento e espaço) defronte ao seu nome na declaração. O sinal de porcento também é usado em referências para entidades parâmetro, ao invés do E comercial. As referências a entidade parâmetro são imediatamente expandidas na declaração de tipo de documento e seu texto de substituição é parte da declaração, onde as referências a entidades normais não são expandidas. Entidades parâmetro não são reconhecidas no corpo de um documento.
Voltando às declarações de elementos no Exemplo 2, você perceberá que dois deles têm o mesmo modelo de conteúdo:
<!ELEMENT João (#PCDATA | citação)*>

<!ELEMENT José (#PCDATA | citação)*>
Até o momento, estes dois elementos são a mesma coisa somente porque eles têm a mesma definição literal. A fim de tornar mais explícito o fato de que estes dois elementos são semânticamente a mesma coisa, é usada uma entidade parâmetro para definir seus modelos de conteúdo. Há duas vantagens em se usar uma entidade parâmetro. Primeiramente, ela lhe permite dar um nome descritivo ao conteúdo, e segundo que lhe permite alterar o modelo de conteúdo em somente um local, se você desejar atualizar as declarações do elemento, garantindo que elas sempre fiquem as mesmas:
<!ENTITY % pessoascontentes "#PCDATA | citação">

<!ELEMENT João (%pessoascontentes;)*>

<!ELEMENT José (%pessoascontentes;)*>
Declarações de Notação
Declarações de notação identificam tipos específicos de dados binários externos. Estas informações são passadas para a aplicação de processamento, que pode fazer o uso que quiser ou que desejar. Uma declaração de notação típica é:
<!NOTATION GIF87A SYSTEM "GIF">
Eu preciso de uma Declaração de Tipo de Documento?
Como foi visto, o conteúdo XML pode ser processado sem uma declaração de tipo de documento. Entretanto, existem alguns casos onde a declaração é necessária:
Ambientes de autoria
A maioria dos ambientes de autoria precisa ler e processar declarações de tipo de documento a fim de entender e reforçar o modelo de conteúdo do documento.
Valores padrões de atributos
Se um documento XML conta com valores padrões de atributos, pelo menos uma parte da declaração deve ser processada a fim de se obter os valores padrões corretos.
Manipulação de espaços em branco
A semântica associada com espaço em branco em conteúdo de elementos diferem da semântics associada com espaço em branco em conteúdo misturado. Sem um DTD, não há maneira para o processador distingüir os casos, e todos os elementos são efetivamente conteúdo misturado. Para mais detalhes, veja a seção chamada Manipulação de Espaços em Branco, neste trabalho.
Em aplicações onde uma pessoa compõe ou edita os dados, um DTD provavelmente vai ser preciso se qualquer estrutura deve ser garantida.
Incluindo uma Declaração de Tipo de Documento
Se presente, a declaração de tipo de documento deve ser a primeira coisa em um documento depois de comentários e instruções de processamento opcionais.
A declaração de tipo de documento identifica o elemento raiz do documento e pode conter declarações adicionais. Todos os documentos XML devem ter um elemento raiz único que contenha todo o conteúdo do documento. Declarações adicionais podem vir de um DTD externo, chamado de subconjunto externo, ou ser incluído diretamente no documento, o subconjunto interno, ou ambos:
<?XML version="1.0" standalone="no"?>

<!DOCTYPE chapter SYSTEM "dbook.dtd" [

<!ENTITY %ulink.module "IGNORE">

<!ELEMENT ulink (#PCDATA)*>

<!ATTLIST ulink

xml:link CDATA #FIXED "SIMPLE"

xml-attributes CDATA #FIXED "HREF URL"

URL CDATA #REQUIRED>

]>

<chapter>...</chapter>
Este exemplo referencia um DTD externo, dbook.dtd, e inclui declarações de elementos e atributos para o elemento ulink no subconjunto interno. Neste caso, ulink dá a semântica de um link simples da especificação XLink.
Note que as declarações no subconjunto interno não leva em conta as declarações no subconjunto externo. O processador XML lê o subconjunto interno antes do externo e a primeira declaração tem precedência.
A fim de determinar se um documento é válido, o processador XML deve ler a declaração de tipo de documento inteira (ambos os subconjuntos). Mas para algumas aplicações, a validação pode não ser precisa, e pode ser suficiente para o processador ler somente o subconjunto interno. No exemplo acima, se a validade não é importante e a única razão para ler a declaração de tipo de documento é identifcar a semântica de ulink, a leitura do subconjunto externo não é necessária.
Você pode comunicar estas informações na declaração de documento standalone. A declaração de documento standalone, standalone="yes" ou standalone="no", ocorre na declaração XML. Um valor yes indica que somente declarações internas precisam ser processadas. Um valor no indica que ambas as declarações interna e externa devem ser processadas.

Nenhum comentário:

Postar um comentário