DTD - Entità
Le entità vengono utilizzate per definire collegamenti a caratteri speciali all'interno dei documenti XML. Le entità possono essere principalmente di quattro tipi:
Entità incorporate
Entità di carattere
Entità generali
Entità parametro
Sintassi della dichiarazione di entità
In generale, le entità possono essere dichiarate internally o externally. Cerchiamo di capire ciascuno di questi e la loro sintassi come segue:
Entità interna
Se un'entità è dichiarata all'interno di una DTD, viene chiamata come entità interna.
Syntax
Di seguito è riportata la sintassi per la dichiarazione di entità interna:
<!ENTITY entity_name "entity_value">
Nella sintassi sopra -
entity_name è il nome dell'entità seguito dal suo valore tra virgolette doppie o virgolette singole.
entity_value contiene il valore per il nome dell'entità.
Il valore dell'entità dell'entità interna viene de-referenziato aggiungendo un prefisso & al nome dell'entità, ad esempio & nome_entità.
Example
Di seguito è riportato un semplice esempio di dichiarazione di entità interna:
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE address [
<!ELEMENT address (#PCDATA)>
<!ENTITY name "Tanmay patil">
<!ENTITY company "TutorialsPoint">
<!ENTITY phone_no "(011) 123-4567">
]>
<address>
&name;
&company;
&phone_no;
</address>
Nell'esempio precedente, i rispettivi nomi di entità name , company e phone_no vengono sostituiti dai rispettivi valori nel documento XML. I valori dell'entità vengono de-referenziati aggiungendo il prefisso & al nome dell'entità.
Salva questo file come sample.xmle aprilo in qualsiasi browser, noterai che i valori di entità per nome , azienda , phone_no vengono rispettivamente sostituiti.
Entità esterna
Se un'entità è dichiarata al di fuori di una DTD, viene chiamata come entità esterna. È possibile fare riferimento a un'entità esterna utilizzando identificatori di sistema o identificatori pubblici.
Syntax
Di seguito è riportata la sintassi per la dichiarazione di entità esterne:
<!ENTITY name SYSTEM "URI/URL">
Nella sintassi sopra -
name è il nome dell'entità.
SYSTEM è la parola chiave.
URI/URL è l'indirizzo della fonte esterna racchiuso tra virgolette doppie o singole.
Types
È possibile fare riferimento a un DTD esterno utilizzando:
System Identifiers - Un identificatore di sistema consente di specificare la posizione di un file esterno contenente dichiarazioni DTD.
Come puoi vedere, contiene la parola chiave SYSTEM e un riferimento URI che punta alla posizione del documento. La sintassi è la seguente:
<!DOCTYPE name SYSTEM "address.dtd" [...]>
Public Identifiers - Gli identificatori pubblici forniscono un meccanismo per individuare le risorse DTD e sono scritti come di seguito -
Come puoi vedere, inizia con la parola chiave PUBLIC, seguita da un identificatore specializzato. Gli identificatori pubblici vengono utilizzati per identificare una voce in un catalogo. Gli identificatori pubblici possono seguire qualsiasi formato; tuttavia, un formato comunemente utilizzato è chiamato identificatori pubblici formali o FPI.
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
Example
Cerchiamo di capire l'entità esterna con il seguente esempio:
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
<name>
Tanmay Patil
</name>
<company>
TutorialsPoint
</company>
<phone>
(011) 123-4567
</phone>
</address>
Di seguito è riportato il contenuto del file DTD address.dtd -
<!ELEMENT address (name, company, phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
Entità incorporate
Tutti i parser XML devono supportare entità integrate. In generale, puoi usare questi riferimenti a entità ovunque. È inoltre possibile utilizzare testo normale all'interno del documento XML, ad esempio nel contenuto degli elementi e nei valori degli attributi.
Ci sono cinque entità integrate che svolgono il loro ruolo in XML ben formato, sono:
e commerciale: & amp;
Virgolette singole: & apos;
Maggiore di: & gt;
Meno di: & lt;
Virgolette doppie: & quot;
Esempio
L'esempio seguente mostra la dichiarazione di entità incorporata:
<?xml version = "1.0"?>
<note>
<description>I'm a technical writer & programmer</description>
<note>
Come puoi vedere qui, il & amp; il carattere è sostituito da & ogni volta che il processore lo incontra.
Entità di carattere
Le entità carattere sono usate per nominare alcune delle entità che sono rappresentazioni simboliche di informazioni, cioè i caratteri che sono difficili o impossibili da digitare possono essere sostituiti da entità carattere.
Esempio
L'esempio seguente mostra la dichiarazione di entità carattere -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE author[
<!ELEMENT author (#PCDATA)>
<!ENTITY writer "Tanmay patil">
<!ENTITY copyright "©">
]>
<author>&writer;©right;</author>
Noterai qui che abbiamo usato ©come valore per il carattere del copyright. Salva questo file come sample.xml e aprilo nel tuo browser e vedrai che il copyright è sostituito dal carattere ©.
Entità generali
Le entità generali devono essere dichiarate all'interno della DTD prima di poter essere utilizzate all'interno di un documento XML. Invece di rappresentare un solo carattere, le entità generali possono rappresentare caratteri, paragrafi e persino interi documenti.
Sintassi
Per dichiarare un'entità generale, usa una dichiarazione di questa forma generale nel tuo DTD -
<!ENTITY ename "text">
Esempio
L'esempio seguente mostra la dichiarazione di entità generale:
<?xml version = "1.0"?>
<!DOCTYPE note [
<!ENTITY source-text "tutorialspoint">
]>
<note>
&source-text;
</note>
Ogni volta che un parser XML incontra un riferimento a un'entità di testo sorgente , fornirà il testo sostitutivo all'applicazione nel punto di riferimento.
Entità parametro
Lo scopo di un'entità parametro è consentire di creare sezioni riutilizzabili di testo sostitutivo.
Sintassi
Di seguito è riportata la sintassi per la dichiarazione dell'entità parametro:
<!ENTITY % ename "entity_value">
entity_value è qualsiasi carattere che non sia '&', '%' o '"'.
Esempio
L'esempio seguente mostra la dichiarazione di entità del parametro. Supponiamo di avere dichiarazioni di elementi come di seguito:
<!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)>
Supponiamo ora di voler aggiungere un ulteriore paese di eleement , quindi è necessario aggiungerlo a tutte e quattro le dichiarazioni. Quindi possiamo andare per un riferimento all'entità parametro. Ora usando il riferimento all'entità parametro, l'esempio precedente sarà:
<!ENTITY % area "name, street, pincode, city">
<!ENTITY % contact "phone">
Le entità parametro vengono dereferenziate allo stesso modo di un riferimento a entità generale, solo con un segno di percentuale anziché una e commerciale -
<!ELEMENT residence (%area;, %contact;)>
<!ELEMENT apartment (%area;, %contact;)>
<!ELEMENT office (%area;, %contact;)>
<!ELEMENT shop (%area;, %contact;)>
Quando il parser legge queste dichiarazioni, sostituisce il testo sostitutivo dell'entità per il riferimento all'entità.