DTD - Elementi
Gli elementi XML possono essere definiti come blocchi di costruzione di un documento XML. Gli elementi possono comportarsi come un contenitore per contenere testo, elementi, attributi, oggetti multimediali o un insieme di tutti.
Un elemento DTD viene dichiarato con una dichiarazione ELEMENT. Quando un file XML viene convalidato da DTD, il parser verifica inizialmente l'elemento radice e quindi gli elementi figlio vengono convalidati.
Sintassi
Tutte le dichiarazioni di elementi DTD hanno questa forma generale:
<!ELEMENT elementname (content)>
La dichiarazione ELEMENT viene utilizzata per indicare al parser che stai per definire un elemento.
elementname è il nome dell'elemento (chiamato anche identificatore generico ) che stai definendo.
il contenuto definisce quale contenuto (se presente) può andare all'interno dell'elemento.
Tipi di contenuto degli elementi
Il contenuto della dichiarazione degli elementi in una DTD può essere classificato come di seguito:
Contenuto vuoto
Contenuto dell'elemento
Contenuto misto
Qualsiasi contenuto
Contenuto vuoto
Questo è un caso speciale di dichiarazione di elementi. Questa dichiarazione di elemento non contiene alcun contenuto. Questi vengono dichiarati con la parola chiaveEMPTY.
Syntax
Di seguito è riportata la sintassi per la dichiarazione di elementi vuoti:
<!ELEMENT elementname EMPTY >
Nella sintassi sopra -
ELEMENTè la dichiarazione dell'elemento della categoria EMPTY
elementname è il nome di un elemento vuoto.
Example
Di seguito è riportato un semplice esempio che dimostra la dichiarazione di elementi vuoti:
<?xml version = "1.0"?>
<!DOCTYPE hr[
<!ELEMENT address EMPTY>
]>
<address />
In questo esempio l' indirizzo è dichiarato come un elemento vuoto. Il markup per l' elemento address apparirà come <address />.
Contenuto elemento
Nella dichiarazione dell'elemento con contenuto dell'elemento, il contenuto sarebbe elementi consentiti tra parentesi. Possiamo anche includere più di un elemento.
Syntax
Di seguito è riportata una sintassi della dichiarazione dell'elemento con il contenuto dell'elemento:
<!ELEMENT elementname (child1, child2...)>
ELEMENT è il tag di dichiarazione dell'elemento
elementname è il nome dell'elemento.
child1, child2 .. sono gli elementi e ogni elemento deve avere una propria definizione all'interno della DTD.
Example
L'esempio seguente mostra un semplice esempio di dichiarazione di elementi con contenuto di elementi:
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
]>
<address>
<name>Tanmay Patil</name>
<company>TutorialsPoint</company>
<phone>(011) 123-4567</phone>
</address>
Nell'esempio precedente, l' indirizzo è l'elemento padre e nome , azienda e phone_no sono i suoi elementi figlio.
Elenco di operatori e regole di sintassi
La tabella seguente mostra l'elenco degli operatori e delle regole di sintassi che possono essere applicate nella definizione degli elementi figli -
Operatore | Sintassi | Descrizione | Esempio |
---|---|---|---|
+ | <! ELEMENT nome-elemento (child1 +)> | Indica che l'elemento figlio può ricorrere una o più volte all'interno dell'elemento genitore. | <! ELEMENT indirizzo (nome +)> Il nome dell'elemento figlio può ricorrere una o più volte all'interno dell'indirizzo del nome dell'elemento . |
* | <! ELEMENT nome-elemento (child1 *)> | Indica che l'elemento figlio può ricorrere zero o più volte all'interno dell'elemento genitore. | <! ELEMENT indirizzo (nome *)> Il nome dell'elemento figlio può ricorrere zero o più volte all'interno dell'indirizzo del nome dell'elemento . |
? | <! ELEMENT nome-elemento (child1?)> | Indica che l'elemento figlio può verificarsi zero o una volta all'interno dell'elemento genitore. | <! ELEMENT indirizzo (nome?)> Il nome dell'elemento figlio può ricorrere zero o una volta all'interno dell'indirizzo del nome dell'elemento . |
, | <! ELEMENT nome-elemento (figlio1, figlio2)> | Fornisce una sequenza di elementi figlio separati da virgola che devono essere inclusi nel nome dell'elemento. | <! ELEMENT indirizzo (nome, azienda)> Sequenza del nome degli elementi figlio , azienda , che deve essere presente nello stesso ordine all'interno dell'indirizzo del nome dell'elemento . |
| | <! ELEMENT nome-elemento (figlio1 | figlio2)> | Permette di fare scelte nell'elemento figlio. | <! ELEMENT indirizzo (nome | azienda)> Ti permette di scegliere uno degli elementi figli, cioè il nome o la società , che deve trovarsi all'interno dell'indirizzo del nome dell'elemento . |
Regole
Dobbiamo seguire alcune regole se c'è più di un contenuto di elemento -
Sequences - Spesso gli elementi all'interno dei documenti DTD devono apparire in un ordine distinto. Se questo è il caso, definisci il contenuto utilizzando una sequenza.
La dichiarazione indica che l'elemento <address> deve avere esattamente tre elementi secondari - <name>, <company> e <phone> - e che devono essere visualizzati in questo ordine. Ad esempio:
<!ELEMENT address (name,company,phone)>
Choices- Supponi di dover consentire un elemento o un altro, ma non entrambi. In questi casi è necessario utilizzare il carattere barra verticale (|). La pipe funziona come un OR esclusivo. Ad esempio:
<!ELEMENT address (mobile | landline)>
Contenuto di elementi misti
Questa è la combinazione di (#PCDATA) e elementi figlio. PCDATA sta per dati carattere analizzati, ovvero testo che non è markup. All'interno di modelli di contenuto misto, il testo può apparire da solo o può essere intervallato tra gli elementi. Le regole per i modelli di contenuto misto sono simili al contenuto dell'elemento come discusso nella sezione precedente.
Syntax
Di seguito è riportata una sintassi generica per il contenuto di elementi misti:
<!ELEMENT elementname (#PCDATA|child1|child2)*>
ELEMENT è il tag di dichiarazione dell'elemento.
elementname è il nome dell'elemento.
PCDATAè il testo che non è markup. #PCDATA deve essere il primo nella dichiarazione di contenuto misto.
child1, child2 .. sono gli elementi e ogni elemento deve avere una propria definizione all'interno della DTD.
L'operatore (*) deve seguire la dichiarazione di contenuto misto se sono inclusi elementi figli
Le dichiarazioni degli elementi (#PCDATA) e figli devono essere separate dall'operatore (|).
Example
Di seguito è riportato un semplice esempio che mostra la dichiarazione di elementi di contenuto misto in una DTD.
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address (#PCDATA|name)*>
<!ELEMENT name (#PCDATA)>
]>
<address>
Here's a bit of text mixed up with the child element.
<name>
Tanmay Patil
</name>
</address>
QUALSIASI contenuto dell'elemento
Puoi dichiarare un elemento utilizzando la parola chiave ANY nel contenuto. Viene spesso definito elemento di categoria mista. ANY è utile quando devi ancora decidere i contenuti consentiti dell'elemento.
Syntax
Di seguito è riportata la sintassi per dichiarare elementi con QUALSIASI contenuto:
<!ELEMENT elementname ANY>
Qui, la parola chiave ANY indica che il testo (PCDATA) e / o qualsiasi elemento dichiarato all'interno della DTD può essere utilizzato all'interno del contenuto dell'elemento <elementname>. Possono essere utilizzati in qualsiasi ordine un numero qualsiasi di volte. Tuttavia, la parola chiave ANY non consente di includere elementi non dichiarati nella DTD.
Example
Di seguito è riportato un semplice esempio che dimostra la dichiarazione dell'elemento con QUALSIASI contenuto:
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address ANY>
]>
<address>
Here's a bit of sample text
</address>