Documenti XML

Ogni documento XML è caratterizzato da una struttura gerarchica ad albero (si veda ). Analizziamo ad esempio il seguente documento XML contenente le informazioni personali di un utente.

<user>
  <name>
    <first>Marco</first>
    <last>Rossi</last>
  </name>
  <tel>02361425</tel>
  <email>rossi@email.com</email>
</user>

La struttura logica di un documento XML è composta da diversi elementi annidati tra cui: un nodo radice (seme), diversi nodi intermedi, diversi nodi finali (foglie) e diversi collegamenti (rami). I nodi di un documento XML vengono anche detti tag, i tag possono contenere le informazioni al loro interno, oppure all’interno di particolari attributi in grado di descriverne le proprietà.

<user>
  <name>
    <first>Marco</first>
    <last>Rossi</last>
  </name>
  <tel type="office">02361425</tel>
  <email type="personal">rossi@email.com</email>
</user>

Un documento XML è detto:

  • Etichettato, se ad ogni etichetta viene associato un nodo;
  • Non classificato, se non esistono informazioni precedenti riguardanti il numero dei figli collegati ad un dato nodo;
  • Ordinato, se l’ordine con cui vengono posti i figli di un nodo è in qualche modo rilevante.

L’XML specifica solo la sintassi del linguaggio, non esiste un significato a priori legato alle etichette che compongono un documento, tale significato deve essere dedotto dal contesto.

Si veda di seguito l’esempio di documento XML:

<ricettario>
  <ricetta id="25">
    <titolo>Lasagne alla bolognese</titolo>
    <tempo_praparazioe tempo="100" unita="minuti"/>
    <ingredienti>
      <ingrediente nome="Parmiggiano reggiano" quantita="250" unita="grammi"/>
      <ingrediente nome="Carote" quantita="50" unita="grammi"/>
      <ingrediente nome="Cipolle" quantita="60" unita="grammi"/>
      <ingrediente nome="Sedano" quantita="50" unita="grammi"/>
      <!-- … -->
    </ingredienti>
    <preparazione>
      <passo n="1">Per preparare le lasagne alla bolognese cominciate con la preparazione del ragù che necessità di lunghi tempi di cottura...</passo>
      <!-- … -->
    </preparazione>
  </ricetta>
</ricettario>