it-swarm.dev

Significado de - <? Xml version = "1.0" encoding = "utf-8"?>

Eu sou novo em XML e estou tentando entender o básico. Eu li a linha abaixo em "Learning XML", mas ainda não está claro, para mim. Alguém pode me apontar para um livro ou site que explique essas noções básicas com clareza?

De Learning XML:

A declaração XML descreve algumas das propriedades mais gerais do documento, informando ao processador XML que ele precisa de um analisador XML para interpretar este documento.

O que isto significa?

Eu entendo a parte xml version - tanto o doc quanto o usuário do doc devem "conversar" na mesma versão do XML. Mas e a parte encoding? Por que isso é necessário?

88
XML Boy

Para entender o atributo "codificação", você precisa entender a diferença entre bytes e caracteres .

Pense nos bytes como números entre 0 e 255, enquanto os caracteres são coisas como "a", "1" e "Ä". O conjunto de todos os caracteres disponíveis é chamado de conjunto de caracteres .

Cada caractere possui uma seqüência de um ou mais bytes usados ​​para representá-lo; no entanto, o número e o valor exatos dos bytes dependem da codificação usada e existem muitas codificações diferentes.

A maioria das codificações é baseada em um antigo conjunto de caracteres e codificação chamado ASCII que é um único byte por caractere (na verdade, apenas 7 bits) e contém 128 caracteres, incluindo muitos caracteres comuns usados ​​em inglês americano.

Por exemplo, aqui estão 6 caracteres no conjunto de caracteres ASCII representados pelos valores 60 a 65.

Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║  Character   ║
╠══════╬══════════════║
║  60  ║      <       ║
║  61  ║      =       ║
║  62  ║      >       ║
║  63  ║      ?       ║
║  64  ║      @       ║
║  65  ║      A       ║
╚══════╩══════════════╝

No conjunto completo ASCII, o valor mais baixo usado é zero e o mais alto é 127 (ambos são caracteres de controle ocultos).

No entanto, uma vez que você comece a precisar de mais caracteres que o ASCIIbásico - fornece (por exemplo, letras com acentos, símbolos de moeda, símbolos gráficos, etc.),ASCII não é adequado e você precisa algo mais extenso. Você precisa de mais caracteres (um conjunto de caracteres diferente) e precisa de uma codificação diferente, já que 128 caracteres não são suficientes para acomodar todos os caracteres. Algumas codificações oferecem um byte (256 caracteres) ou até seis bytes.

Com o tempo, muitas codificações foram criadas. No mundo do Windows, há o CP1252, ou ISO-8859-1, enquanto os usuários do Linux tendem a favorecer o UTF-8. Java usa o UTF-16 de forma nativa.

Uma sequência de valores de bytes para um caractere em uma codificação pode representar um caractere completamente diferente em outra codificação ou pode até ser inválida.

Por exemplo, em ISO 8859-1 , â é representado por um byte de valor 226, enquanto em UTF-8 é dois bytes: 195, 162. No entanto, em ISO 8859-1 , 195, 162 seria dois caracteres, Ã, ¢ .

Pense no XML como não uma sequência de caracteres, mas uma sequência de bytes.

Imagine que o sistema que recebe o XML veja os bytes 195, 162. Como ele sabe quais são esses personagens?

Para que o sistema interprete esses bytes como caracteres reais (e, portanto, exiba-os ou converta-os em outra codificação), ele precisa conhecer a codificação usada no XML.

Como as codificações mais comuns são compatíveis com ASCII, no que diz respeito aos caracteres alfabéticos básicos e símbolos, nesses casos, a própria declaração pode usar apenas caracteres ASCIIpara dizer qual é a codificação. Em outros casos, o analisador deve tentar descobrir a codificação da declaração. Como sabe que a declaração começa com <?xml, é muito mais fácil fazer isso.

Finalmente, o atributo version especifica a versão XML, dos quais existem dois no momento (veja Versões XML da Wikipédia Existem pequenas diferenças entre as versões, então um analisador XML precisa saber o que está tratando Na maioria dos casos (para falantes de inglês), a versão 1.0 é suficiente.

111
rghome

Uma declaração XML não é necessária em todos os documentos XML; no entanto, os autores de documentos XHTML são fortemente encorajados a usar declarações XML em todos os seus documentos. Essa declaração é necessária quando a codificação de caracteres do documento é diferente do padrão UTF-8 ou UTF-16 e nenhuma codificação foi determinada por um protocolo de nível superior. Aqui está um exemplo de um documento XHTML. Neste exemplo, a declaração XML está incluída.

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html 
 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Virtual Library</title>
  </head>
  <body>
    <p>Moved to <a href="http://example.org/">example.org</a>.</p>
 </body>
</html>

Por favor, consulte o padrões W3 para XML .

20
Pavan

Este é o XML opcional preâmbulo.

  • version="1.0" significa que este é o padrão XML em que este arquivo está em conformidade
  • encoding="utf-8" significa que o arquivo é codificado usando a codificação Unicode UTF-8
3
Oded

A declaração de codificação identifica qual codificação é usada para representar os caracteres no documento.

Mais sobre a Declaração XML aqui: http://msdn.Microsoft.com/en-us/library/ms256048.aspx =

3
robasta

Alguém pode me apontar para um livro ou site que explique essas noções básicas com clareza?

Você pode verificar isso XML Tutorial com exemplos.

Mas e a parte da codificação? Por que isso é necessário?

O W3C fornece explicação sobre a codificação:

"O conjunto de caracteres do documento para XML e HTML 4.0 é Unicode (também conhecido como ISO 10646). Isso significa que os navegadores HTML e XML devem se comportar como se usassem Unicode internamente. Mas isso não significa que os documentos precisam ser transmitidos em Unicode. Contanto que o cliente e o servidor concordem com a codificação, eles podem usar qualquer codificação que possa ser convertida em Unicode ... "

2
O.Badr