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>