Seção 3: Autores

Q 3.23: O que são os caracteres especiais em XML?

Apenas cinco: &lt; ( < ), &amp; ( & ), &gt; ( > ), &quot; ( " ), e &apos; ( ' ).

Para o texto normal ( não marcação), não há caracteres especiais, exceto < e & : simplesmente certifique-se de que sua Declaração XML se refere ao esquema de codificação correto para o sistema de linguagem e / ou gravação que você deseja usar e que seu computador armazene corretamente o Arquivo usando esse esquema de codificação. Veja a questão sobre caracteres não-latinos para uma explicação mais longa.

Além dos caracteres de controle ASCII invisíveis (aqueles que você não pode digitar), todos os outros caracteres são apenas textos normais. Sinais de moedas (€, £, $, ƒ, ₩, Ƀ e outros), toda a pontuação (exceto < e & ), e todas as outras letras, sinais e símbolos em qualquer idioma ou sistema de escrita são apenas texto (assumindo que você Tem a codificação de caracteres correta).

Se o seu teclado não permitir que você digite os caracteres que deseja, ou se você quiser usar caracteres fora dos limites do esquema de codificação escolhido, você pode usar uma notação simbólica chamada "referência de entidade". As referências de entidades podem ser numericas , usando o ponto de código Unicode decimal ou hexadecimal para o caractere (por exemplo, se o seu teclado não tiver um símbolo do Euro (€), você pode digitar &#8364; ); Ou podem ser caracteres, usando um conjunto estabelecido de nomes que você pode declarar na sua DTD (por exemplo <!ENTITY euro "&#8364;"> ) que, em seguida, permite usar o nome e o &euro; No seu documento. Se você estiver usando um Esquema, você deve usar o formulário numérico para todos exceto os cinco abaixo porque os Esquemas não têm como fazer declarações de entidade de personagem.

Se você usa XML sem DTD, as cinco entidades de caracteres listadas no topo desta questão são assumidas como pré-declaradas, e você pode usá-las sem declará-las separadamente (na verdade, a maioria dos programas impede você de re-declará-las):

&lt;

O caractere inferior a ( < ) inicia a marcação de elemento (o primeiro caractere de uma marca de início ou uma etiqueta final).

&amp;

O caractere do “e” comercial ( & ) inicia a marcação de entidade (o primeiro caractere de uma referência de entidade de personagem).

&gt;

O caractere de maior que ( > ) termina uma tag de início ou uma etiqueta final.

&quot;

O caractere de cotação dupla ( " ) pode ser simbolizado com essa referência de entidade de caractere quando você precisa incorporar uma cotação dupla dentro de uma seqüência de caracteres que já está citar duas vezes.

&apos;

O apóstrofo ou o caractere de citação única ( ' ) podem ser simbolizados com essa referência de entidade de caractere quando você precisa incorporar uma citação única ou apóstrofo dentro de uma string que já está citado.

Se você estiver usando um DTD então você deve declarar todas as entidades de caractere que você precisa usar, então seria uma boa prática declarar qualquer um dos cinco acima que você planeja usar. Se você estiver usando um Schema, você deve usar o formulário numérico para todos, exceto os cinco acima porque os Schemas não têm como fazer declarações de entidade de caractere.

Há circunstâncias em que você pode usar caracteres especiais como eles próprios, como em seções CDATA . A maioria dos caracteres de controle são proibidos em XML: veja a Especificação para detalhes exatos.

Também não há palavras reservadas como tal no namespace do usuário do XML: você pode chamar um elemento e um atributo e assim por diante como no seguinte exemplo (perverso:

    <?xml version="1.0"?>
<!DOCTYPE DOCTYPE SYSTEM "SYSTEM" [
<!ELEMENT DOCTYPE (ELEMENT+)>
<!ATTLIST ELEMENT ATTLIST ENTITY #IMPLIED>
<!NOTATION DOCTYPE SYSTEM "ENTITY">
<!ENTITY NOTATION SYSTEM "ENTITY" NDATA DOCTYPE>
]>
<DOCTYPE>
  <ELEMENT ATTLIST="NOTATION">foo</ELEMENT>
</DOCTYPE>
  

Onde o arquivo SYSTEM contém a declaração: <!ELEMENT ELEMENT (#PCDATA)> e o arquivo ENTITY nem existe ☺

Existem palavras-chave como DOCTYPE e IMPLIED que são Nomes reservados, mas são prefixados por um caractere de bandeira (o caractere de abertura de declaração de marcação ou o Indicador de nome reservado) para que não possam ser confundidos com Nomes especificados pelo usuário.