As entidades são usadas para definir atalhos aos caráteres especiais dentro dos originais de XML. As entidades podem ser primeiramente do tipo quatros:
Entidades incorporados
Entidades do caráter
Entidades gerais
Entidades de parâmetro
Geralmente, as entidades podem ser podem ser declaradas internamente ou externamente. Deixe-nos compreender como segue cada um destes e de sua sintaxe:
Se uma entidade é declarada dentro de um DTD está chamada como a entidade interna.
SintaxeSeguir é a sintaxe para a declaração de entidade interna:
<!ENTITY entity_name "entity_value">
Na sintaxe acima:
entity_name é o nome da entidade seguido por seu valor dentro das citações dobro ou das únicas citações.
entity_value guarda o valor para o nome de entidade.
O valor da entidade da entidade interna de-é provido adicionando o prefixo & ao nome de entidade i.e. &entity_name.
Seguir é um exemplo simples para a declaração de entidade interna:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE address [ <!ELEMENT address (#PCDATA)> <!ENTITY name "Tanmay patil"> <!ENTITY company "Howcodex"> <!ENTITY phone_no "(011) 123-4567"> ]> <address> &name; &company; &phone_no; </address>
No exemplo acima, os nomes de entidade respectivos nome, Empresa e phone_no são substituídos por seus valores no original de XML. Os valores da entidade de-são providos adicionando o prefixo & to the entity name.
Salvar este arquivo como sample.xml e abra-o em todo o navegador, você observará que os valores da entidade para nome, Empresa, phone_no são substituídos respectivamente.
Se uma entidade é declarada fora de um DTD está chamada como a entidade externo. Você pode referir uma entidade externo usando identificadores do sistema ou identificadores públicos.
SintaxeSeguir é a sintaxe para a declaração de entidade externo:
<!ENTITY name SYSTEM "URI/URL">
Na sintaxe acima:
nome é o nome da entidade.
SISTEMA é a palavra-chave.
URI/URL é o endereço da fonte externo fechada dentro das citações dobro ou únicas.
Você pode referir um DTD externo por qualquer um que usa-se:
Identificadores do sistema - Um identificador do sistema permite-o de especificar o lugar de um arquivo externo que contém declarações do DTD. A sintaxe é como segue:
<!DOCTYPE name SYSTEM "address.dtd" [...]>
Como você pode ver contém o SISTEMA da palavra-chave e uma referência de URI que aponta ao document's lugar.
Identificadores públicos -
Os identificadores públicos fornecem um mecanismo para encontrar recursos do DTD e são escritos como abaixo:<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
Como você pode ver, começa com o PÚBLICO da palavra-chave, seguido por um identificador especializado. Os identificadores públicos são usados para identificar uma entrada em um catálogo. Os identificadores públicos podem seguir todo o formato; contudo, um formato de uso geral é chamado Formal Public Identifiers, or FPIs.
Deixe-nos compreender a entidade externo com o seguinte exemplo:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE address SYSTEM "address.dtd"> <address> <name>Tanmay Patil</name> <company>Howcodex</company> <phone>(011) 123-4567</phone> </address>
Está abaixo o índice do arquivo do DTD endereço.dtd:
<!ELEMENT address (name, company, phone)> <!ELEMENT name (#PCDATA)> <!ELEMENT company (#PCDATA)> <!ELEMENT phone (#PCDATA)>
Todos os parsers de XML devem apoiar entidades incorporados. Geralmente, você pode usar estas referências de entidade em qualquer lugar. Você pode igualmente usar o texto normal dentro do original de XML, como em índices do elemento e valores de atributo.
Há cinco entidades incorporados que jogam seu papel em XML bem-formado, eles está:
ampersand: &
Únicas citações: '
Maior do que: >
Menos do que: <
Citações dobro: "
O exemplo de seguimento demonstra a declaração de entidade incorporado:
<?xml version="1.0"?> <note> <description>I'm a technical writer & programmer</description> <note>
Como você pode ver aqui & o caráter é substituído perto & sempre que o processador encontra este.
As entidades do caráter são usadas para nomear algumas das entidades que são representação simbólica da informação i.e os caráteres que são difíceis ou impossíveis de datilografar podem ser substituídos por entidades do caráter.
O exemplo de seguimento demonstra a declaração de entidade do caráter:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE author[ <!ELEMENT author (#PCDATA)> <!ENTITY writer "Tanmay patil"> <!ENTITY copyright "©"> ]> <author>&writer;©right;</author>
Você observará que aqui nós nos usamos © como o valor para o caráter dos direitos reservados. Salvar este arquivo como amostra.xml e abra-o em seu navegador e você verá que os direitos reservados estão substituídos pelo caráter ©.
As entidades gerais devem ser declaradas dentro do DTD antes que possam ser usadas dentro de um original de XML. Em vez de representar somente um único caráter, as entidades gerais podem representar caráteres, parágrafos, e mesmo originais inteiros.
Para declarar uma entidade geral, use uma declaração deste formulário geral em seu DTD:
<!ENTITY ename "text">
O exemplo de seguimento demonstra a declaração de entidade geral:
<?xml version="1.0"?> <!DOCTYPE note [ <!ENTITY source-text "howcodex"> ]> <note> &source-text; </note>
Sempre que um parser de XML encontra uma referência a fonte-texto entidade, fornecerá o texto de substituição à aplicação em o ponto da referência.
A finalidade de uma entidade de parâmetro é permiti-lo de criar seções reusáveis do texto de substituição.
Seguir é a sintaxe para a declaração de entidade do parâmetro:
<!ENTITY % ename "entity_value">
entity_value é todo o caráter que não for '&', '%' or ' " '.
O exemplo de seguimento demonstra a declaração de entidade do parâmetro. Supõe que você tem declarações de elemento como abaixo:
<!ELEMENT residence (name, street, pincode, city, phone)> <!ELEMENT apartment (name, street, pincode, city, phone)> <!ELEMENT office (name, street, pincode, city, phone)> <!ELEMENT shop (name, street, pincode, city, phone)>
Supõe agora que você quer adicionar o elemento adicional país, então então você precisa de adicioná-lo a todas as quatro declarações. Daqui nós podemos ir para uma referência de entidade do parâmetro. Agora usando a referência de entidade do parâmetro o exemplo acima será :
<!ENTITY % area "name, street, pincode, city"> <!ENTITY % contact "phone">
As entidades de parâmetro dereferenced da mesma forma como uma referência de entidade geral, somente com um sinal de por cento em vez de um ampersand:
<!ELEMENT residence (%area;, %contact;)> <!ELEMENT apartment (%area;, %contact;)> <!ELEMENT office (%area;, %contact;)> <!ELEMENT shop (%area;, %contact;)>
Quando o parser ler estas declarações, substitui o texto de substituição da entidade para a referência de entidade.