XML – informazioni generali

XML ovvero eXtensible Markup Language è un metalinguaggio per etichettare (“Mark Up”) i dati.
Un file XML contiene sia i dati sia la definizione della loro struttura: ovvero è un modello dati autodescrittivogerarchico. Il modello dati consiste di nodi (i tag). Un tag può contenere dati o altri tag secondo una gerarchia ben precisa.
E’ eXtensible perché ognuno può creare i propri tag se necessario.

L’XML è un linguaggio a tag simile all’HTML. Ambedue sono semplici da leggere e scrivere; ambedue sono standard gestiti dal W3C (World Wide Web Consortium). L’XML non sostituisce l’HTML, in quanto i due linguaggi sono complementari. L’XML aggiunge una struttura dati.
HTML è un linguaggio pensato per un’interazione uomo-macchina: descrive il formato di presentazione di un documento.
XML è un linguaggio pensato per un’interazione macchina-macchina. E’ un linguaggio per “trasportare” i dati non per presentarli.
I tag XML non sono pre-definiti come i tag HTML.

XML è una forma di SGML (Standard Generalized Markup Language) definito con ISO8879.

XML NON è un linguaggio di programmazione. E’ un linguaggio per archiviare e leggere dati.

XML è una tecnologia chiave per lo scambio e l’integrazione dei dati tra sistemi eterogenei, in particolar modo nell’ambito di sviluppo di servizi web (web services).

Esempio

  • elemento: definito da un tag di apertura e il corrispondente tag di chiusura. Eventualmente con dei dati compresi tra i due tag. P.es. <employee>...</employee>.
    • Gli elementi possono essere nidificati.
  • attributo: si trova all’interno di un elemento e “assomiglia” ad una assegnazione di valore ad una variabile. Possono essere multipli. P.es. <employee id="000010" job="PRES">...</employee>

ATTENZIONE: i tag sono case-sensitive!

Un po’ di nomenclatura

  • DTD (document type definition/description): contiene soltanto la lista degli elementi validi in un documento XML e dei loro attributi, oltre a descrivere come gli elementi si correlano tra loro all’interno della struttura gerarchica del documento. E’ sempre meno utilizzato.

  • XSL (Extensible Stylesheet Language) e XSLT (Extensible Stylesheet Language Transformations): servono per convertire l’XML in qualsiasi output
  • XSL-FO (Extensible Stylesheet Language Formatting Objects)
  • XLink (XML Linking Language): permette di collegare i documenti XML ad altre risorse sul Web
  • XPath (XML Path Language) e XPointer (XML Pointer Language): permette di cercare e identificare dati nella struttura gerarchica dei dati
  • namespace (xmlns): sono puntatori (URIs) che permettono di diversificare strutture di XML con elementi o attributi duplicati. Un documento SOAP usa sempre i namespaces. Il namespace può essere paragonato al dizionario del DB2.
  • XML schema definition (xsd file): definisce la struttura logica di un documento XML (in maniera simile a DTD ma più completo). Cfr. https://en.wikipedia.org/wiki/XML_Schema_Editorhttps://www.w3.org/XML/Schema
    • lo schema è scritto anch’esso in formato XML
    • definisce il numero minimo/massimo di ripetizione di elementi
    • definisce regole di convalida dei valori
    • definisci i tipi dati
    • definisce elementi obbligatori o opzionali
    • definisce il namespace

Well-formed

Un documento XML si può definire well-formed quando rispetta alcuni requisiti essenziali. In mancanza di questi requisiti il documento XML non è well-formed, ovvero formalmente errato.

  • il root element deve essere unico
  • ad ogni start tag deve corrispondere un end tag
  • tutti gli elementi devono essere correttamente nidificati
  • i valori degli attributi devono essere racchiusi tra doppi apici
  • può contenere solo caratteri Unicode (UTF-8 ovvero CCSID 1208)

XML valido

Oltre ad essere well-formed un documento XML può essere valido.

Valido significa che:

  • contiene un riferimento a un XML schema (XSD): in un documento XML il riferimento all’XML schema è definito con l’attributo schemaLocation.
  • i suoi elementi ed attributi seguono le regole in essi definite

Tipi di dati

Nello schema XML si possono definire i tipi di dati che saranno contenuti in ogni tag. Esistono tipi dati semplici oppure complessi. Un tipo dato complesso indica un elemento che a sua volta contiene altri elementi e/o attributi.

I tipi di dati semplici sono:

  • boolean: valori consentiti true/false oppure 1/0
  • string: testo (compreso line feed, carriage return e tab)
  • normalizedString: testo (line feed, carriage return e tab vengono rimossi)
  • token: testo (line feed, carriage return, tab e spazi iniziali o finali o multipli vengono rimossi)
  • decimal: numero con decimali (N.B. il separatore dei decimali è il punto)
  • integer: numero intero
  • byte, int, long, negativeInteger, positiveInteger, nonNegativeInteger, nonPositiveInteger, short, unsignedLong, unsignedInt, unsignedShort, unsignedByte: sono tipi dati numerici derivati da decimal
  • double: numero a precisione doppia
  • float: numero a virgola mobile
  • anyURI: specifica un URI
  • date: data in formato aaaa-mm-gg
  • time: ora in formato hh:mm:ss
  • datetime: date e ora in formato aaaa-mm-ggThh:mm:ss
  • duration: indica un periodo di tempo nel formato PnYnMnDTnHnMnS
  • gDay, gMonth, gMonthDay, gYear, gYearMonth: sono tipi derivati da date per indicare porzioni di data
  • base64binary, hexBinary: rappresentano dati in formato binario

CDATA e PCDATA

Il testo in un documento XML è generalmente PCDATA (Parsed Character Data) ovvero i caratteri speciali XML (&, <, >) sono riconosciuti e usati per nomi degli elementi e entità.

Le sezioni CDATA (Character Data) sono trattate come un blocco di dati consentendo di includere qualsiasi carattere. Per esempio:

<?xml version="1.0" encoding="UTF-8"?>
  <sample>
    <description>Paragraphs can include emphasized text.
    </description>
    <example><![CDATA[<p>The pug snoring on the couch next to me is <em>extremely</em> cute</p>]]></example>
  </sample>

Nella sezione CDATA i soli caratteri vietati sono ]]>.

Caratteri speciali

In un documento XML esistono alcuni caratteri speciali che sono vietati ed altri che sarebbe comunque meglio evitare. Questi caratteri vanno sostituiti con alcune combinazioni di caratteri oppure devono essere inclusi in una sezione CDATA (come descritto al paragrafo precedente).

  • i caratteri speciali vietati sono: < e &
  • i caratteri speciali che andrebbero evitati sono: ", ' e >
  • ci sono alcune combinazioni di caratteri (entity reference) che possono essere usate al posto dei caratteri speciali:
&lt; <
&gt; >
&amp; &
&quot; "
&apos; '

Commenti

In un documento XML possono essere inseriti dei commenti.

I commenti sono delimitati da <!-- e -->.

“Leggere” un file XML

L’operazione di lettura di un file XML allo scopo di estrapolare i dati in esso contenuti – ovvero l’equivalente delle operazioni di lettura di un file di database – viene definita XML parsing.

Esistono due metodi per il parsing:

  • DOM (Document Object Model): sono API che permettono di costruire e leggere documenti XML. API orientate alla programmazione ad oggetti.
  • SAX (Simple API for XML): sono API per leggere documenti XML passo-passo. Sono orientate alla programmazione ad eventi.

Strumenti per visualizzare/modificare file XML

Esistono numerosi tool che consentono di visualizzare e modificare in forma strutturata il contenuto di un file XML. Ne elenco alcuni privilegiando le soluzioni freeware e lo strumento di sviluppo per IBM i.

  • NotePad++ (https://notepad-plus-plus.org/): editor di file di testo che interpreta la sintassi XML. E’ disponibile anche un plug-in “XML tool” con le seguenti funzioni:
    • XML syntax Check
    • XML Schema (XSD) + DTD Validation
    • XML tag autoclose
    • Pretty print
    • Linarize XML
    • Current XML Path
    • Conversion XML &lt;-&gt; Text
    • Comment / Uncomment
    • XPath expression evaluation

ed anche il plug-in “Npp XML TreeView”.

  • XML grid (online XML editor) (http://xmlgrid.net)

  • Rational Developer for i (RDi):

Bibliografia