Ir para conteúdo
Entre para seguir isso  
Flatronez

Aulas de XML - [aula7]

Recommended Posts

Flatronez    1
Flatronez

Olá a todos! Depois de um certo tempo parado, aqui está mais uma aula de XML!

 

 

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.

 

Exemplo: 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 é 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:

• < produz o sinal de menor, <

• > produz o sinal de maior, >

• & produz o E comercial, &

• ' produz um apóstrofo, '

• " 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 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 nos exemplos de aulas anteriores, 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.

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.

Outras questões de marcação

Além da marcação, existem algumas outras questões a considerar: manipulação de espaços em branco, normalização de valores dos atributos e a linguagem com a qual o documento foi escrito.

Manipulação de Espaços em Branco

A manipulação de espaços em brancos é uma questão sutil. Considere o seguinte fragmento de conteúdo:

<piada>

 

<João>Diga <citação>boa noite</citação>, Maria.</João>

O espaço em branco (a nova linha entre <piada> e <João> ) é significante?

Provavelmente não.

Mas como você pode afirmar isto? Você somente pode determinar se um espaço em branco é significante se você conhece o modelo de conteúdo dos elementos em questão. Em resumo, um espaço em branco é significante em conteúdo misturado e insignificante em conteúdo de elemento.

A regra para os processadores XML é que eles devem passar por todos os caracteres que não são marcação na aplicação. Se o processador é um processador de validação, ele também deve informar à aplicação se os caracteres espaços em branco são significantes.

O atributo especial xml:space pode ser usado para indicar explicitamente que os espaços em branco são significantes. Em qualquer elemento que inclua a especificação de atributo xml:space='preserve', todos os espaços em branco naquele elemento (e dentro dos subelementos que não alteram explicitamente xml:space) serão significantes.

Os únicos valores válidos para xml:space são preserve e default. O valor default indica que o processamento padrão é desejado. Em um DTD, o atributo xml:space deve ser declarado como um tipo enumerado com somente estes dois valores.

Uma última observação sobre espaços em branco: em texto analisável, os processadores XML são requeridos para normalizar todas as marcas de final de linha para um um único caracter de alimentação de linha (A;). Isto raramente é de interesse dos autores, mas elimina um número de questões de portabilidade de plataformas cruzadas.

 

 

Normalização dos valores de atributos

O processador XML executa a normalização dos valores de atributos em valores de atributos: referências a caracteres são substituídas por caracteres referenciados, referências a entidades sã resolvidas (recursivamente) e os espaços em branco são normalizados.

 

 

Identificação da linguagem

Muitas aplicações de processamento de documentos podem se beneficiar da informação sobre a linguagem natural com a qual o documento foi escrito. A XML define o atributo xml:lang para identificar a linguagem. Visto que o propósito deste atributo é padronizar a informação entre as aplicações, a especificação XML também descreve como as linguagens devem ser identificadas.

 

 

Então esta foi a nossa aula sobre XML de hoje! Em breve mais aulas

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Razor    1
Razor

Assim como as outras aulas.

Topico aprovadissimo.

 

esK~

Compartilhar este post


Link para o post
Compartilhar em outros sites
Jackson Zani    1
Jackson Zani

Você devia trocar os exemplos por exemplos do xml de otserv ;}

Ficaria mais facil para "iniciantes" entender hehehe.

 

Mais alêm disso fico da ora.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Flatronez    1
Flatronez

@Jackson

 

essas aulas não são relacionadas as otserv em específico, é sobre a programação XML em geral, sem restrições.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Jackson Zani    1
Jackson Zani

@Flatronez

 

Sim, eu sei, hehehe

Apenas estou te dando idéias ;D

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites
sorcer of dead    0
sorcer of dead

oo veii

ótimo

<span style="font-family:Microsoft Sans Serif"> mas me ensina por mensagem privada como botar imagens em posts e como botar foto no meu perfil flws</span>

Compartilhar este post


Link para o post
Compartilhar em outros sites
Daveson    0
Daveson

Nossa li a aula 6 e a 7 duas vezes, acho que aprendi muita coisa. Apesar de eu já saber lidar com XML, eu não sabia muito sobre essas coisas mais internas.

Belos tópicos,

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Azuth    0
Azuth

otimo tuto, parabéns mermu, aprovado

Compartilhar este post


Link para o post
Compartilhar em outros sites
vinipodecrer    0
vinipodecrer

Mandou ver vlw gostei...

XAU BYE FLWS...http://www.travian.net

Compartilhar este post


Link para o post
Compartilhar em outros sites
neri    0
neri

XD rox

fera gestei

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites
Rutiio631    0
Rutiio631

bump up lurkI believe that we are not real social workers. We may be doing social work in the eyes of the people, but we are really contemplatives in the heart of the world. For we are touching the body of Christ twenty-four hours…And I think that in our family we don’t need bombs and guns, to destroy, to bring peace, just get together, love one another, bring that peace, that joy, that strength of presence of each other in the home. And we will be able to overcome all the evil that is in the world.Come and buy age of conan gold, AoC Gold, AoC Power Leveling and AoC Accounts here, aoc gold the easiest and safest way to enjoy a wonderful Age of Conan life! aoc power leveling, aoc power leveling, age of conan power leveling..

Compartilhar este post


Link para o post
Compartilhar em outros sites
Psiu rox    0
Psiu rox

bom xml eu ja sei tudo mas vai ajuda muitas pessoas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×