XML

Da Skypedia.

L'XML, acronimo di eXtensible Markup Language, ovvero «Linguaggio di marcatura estensibile» è un metalinguaggio creato e gestito dal World Wide Web Consortium (W3C) [1]. È una semplificazione e adattamento dell'SGML [2] (Standard Generalized Markup Language), da cui è nato nel 1998, e permette di definire la grammatica di diversi linguaggi specifici derivati. Un linguaggio di markup descrive i meccanismi di rappresentazione (strutturali, semantici o presentazionali) del testo che, utilizzando convenzioni standardizzate, sono gestibili da più supporti.

Rispetto all'HTML, l'XML ha uno scopo ben diverso: mentre il primo è un linguaggio per la realizzazione della struttura di template di pagine Web, il secondo è un linguaggio utile allo scambio dei dati, quindi di back-office e non di front-office, o di esposizione che dir si voglia. Per scambio dei dati si intende la conservazione in una struttura XML di dati presi, presumibilmente, da un database o da altre fonti, oppure memorizzati direttamente all'interno di una struttura XML.

A differenza dell’HTML, anch'esso derivato da SGML, è possibile definire un proprio insieme di tag (DTD) ammessi per i propri documenti XML. I tag XML dovrebbero consentire di descrivere la struttura dei dati, e non la loro rappresentazione su browser (come avviene attualmente con l’HTML). Un documento XML è composto da un insieme di entità, porzioni fisiche di un unico documento logico. Le entità possono essere:

  • interne di tipo testo, quando ad esempio una porzione di testo si ripete nello stesso file;
  • esterne di tipo testo, quando su altri file si trovano porzioni logiche dello stesso documento;
  • esterne di tipo binario, ad esempio immagini.

Un esempio di documento XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<utenti>
   <utente>
      <nome>Luca</nome>
      <cognome>Ruggero</cognome>
      <indirizzo>Milano</indirizzo>
   </utente>

   <utente>
      <nome>Max</nome>
      <cognome>Rossi</cognome>
      <indirizzo>Roma</indirizzo>
   </utente>
</utenti>

XHTML

XHTML (eXtensible HyperText Markup Language [3]) è un linguaggio di markup basato su XML, che associa alcune proprietà di XML con le caratteristiche di HTML:

  • file XHTML: file XML scritto con i termini dell’HTML
  • riformulazione di HTML 4.01 come applicazione di XML 1.0.

Si ha così un utilizzo più restrittivo dei tag HTML e della grammatica ad essi associata:

  • Solo la struttura della pagina è scritta in XHTML, mentre il layout è imposto dai fogli di stile a cascata (CSS, Cascading Style Sheets)


Per inserire gli script Javascript all'interno delle pagine bisogna utilizzare un CDATA che contenga lo script come commento della pagina stessa:

<script language="JavaScript type=text/javascript">
<![CDATA[
document.write("Hi there");
]]>
</script>


Per aprire un documento XHTML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

Document Type Definition

Il DTD o Document Type Definition stabilisce le regole formali per la struttura del documento, contiene infatti non solo l’elenco dei tag ammessi ed i loro attributi, ma anche la loro organizzazione gerarchica ammessa nel documento, ad esempio sequence (,), choice (|), quantity control (*,+). Il DTD non è obbligatorio, ma averlo consente di usare un XML processor per verificare se un dato documento è o no conforme alle regole definite nel DTD stesso.

Un XML processor verifica successivamente:

  • se un documento è well-formed (es. tag di chiusura presenti);
  • se un documento è valido (conforme ad un DTD).

Un DTD può essere interno o esterno ad un documento. Se è esterno, può essere usato per più documenti. Sono stati scritti DTD per la rappresentazione e gestione delle espressioni matematiche (MathML) e chimiche (ChemML).

Esempio di DTD

<! Element InstanceTechnology ( ListAttrTechnology, Rules,
 Hierarchy) >
 <! Element ListAttrTechnology ( Name, UserDefFields ) >
 <! Element Name ( #PCDATA ) >
 <! Element Rules ( Rule* ) >
 <! Element Rule empty >
 <! Attlist Rule     href CDATA #REQUIRED
                     xml:link CDATA #FIXED “simple”
                     show ( embed | replace | new ) embed
        actuate ( user | auto ) auto >
 <! Element Hierarchy (Process) >
 <! Attlist Hierarchy xml:link CDATA #FIXED “simple” >
 <! Element Processes (locator+) >
 <! Attlist Processes xml:link CDATA #FIXED “extended” >
 <! Element locator empty >
 <! Attlist locator href CDATA #REQUIRED
 show (embed | replace | new ) embed
 actuate ( user | auto ) auto >

Ed ecco l'XML conforme al DTD precedente:

<IstanceTechnology>

       <ListAttribTechnology>

       Name=FS551

       ...

       </ListAttribTechnology>

<Rules>

          <Rule xml:link=”simple” href=//…#id(R1) show=embed

actuate=auto />

</Rules>

<Hierarchy xml:link=”simple” href=http://…#id(SubT) show=embed

actuate=auto >

<Process xml:link=”extended”>

<locator href=”http://...#id(……)show=”embed” actuate=”auto”/>

</Process>

</Hierarchy>