# XML/Database e XML

XML
Copertina Tutti i moduli · Sviluppo
PrefazioneXML/Prefazione
* IntroduzioneXML/Introduzione
* Entità singoleXML/Entità singole
* Strutture dati di baseXML/Strutture dati di base
* Relazione uno-moltiXML/Relazione uno-molti
* Relazione uno-unoXML/Relazione uno-uno
* Relazione molti-moltiXML/Relazione molti-molti
* Relazioni ricorsiveXML/Relazioni ricorsive
* Schemi di datiXML/Schemi di dati
* Document Type Definition (DTD)XML/DTD
* XHTMLXML/XHTML
* XPathXML/XPath
* XLinkXML/XLink
* CSSXML/CSS
* XSLT e fogli di stileXML/XSLT e fogli di stile
* CocoonXML/Cocoon
* Parsing di file XMLXML/Parsing di file XML
* XULXML/XUL
* Asynchronous JavaScript and XML (AJAX)XML/AJAX
* Web serviceXML/Web service
* XMLHttpRequestXML/XMLHttpRequest
* Database e XMLXML/Database e XML
* SVGXML/SVG
* VoiceXMLXML/VoiceXML
* DocBookXML/DocBook
* SMILXML/SMIL
* XBRLXML/XBRL
* WDDX
* RPCXML/RPC
* RDFXML/RDF - Resource Description Framework
* RSSXML/RSS
* NamespaceXML/Namespace
* Gestire XML con MySQL
* XML EncryptionXML/XML Encryption
* XQueryXML/XQuery
* XML e JDBC
* XFormsXML/XForms
* OpenOffice.org e l'OpenDocument FormatXML/OpenOffice.org e l'OpenDocument Format
* KML e Google EarthXML/KML
* Lo standard ACORD - XML nel settore delle assicurazioniXML/ACORD
Modifica il sommario
Obiettivi di apprendimento
* Introduzione ai database XML nativi
* Imparare la tecnologia conversione
* Creare tabelle e recuperare informazioni

## Database XML nativi

Il termine "database XML nativo" è diventato popolare dal 1999, dopo che la società Software AG ha rilasciato la prima versione del proprio server XML nativo Tamino, che includeva un database XML nativo. Una definizione di un database nativo è che:
Definizione
Per modellare i dati in XML, vengono utilizzati principalmente due approcci: documenti incentrati sui dati e documenti incentrati sui documenti.
* I documenti incentrati sui dati (per il trasporto dei dati) hanno una struttura abbastanza regolare, l'ordine in genere non ha importanza e il contenuto misto è scarso o nullo.
* I documenti incentrati sui documenti (di solito per il consumo umano) hanno una struttura meno regolare o irregolare, un ordine significativo degli elementi e un sacco di contenuti misti.

### Esempi di database nativi

| Prodotto | Sviluppatore | Licenza | Tipo di DB |
| Tamino | Software AG | commerciale, proprietaria | relazionale tramite ODBC |
| XediX Multimedia Solution | XediX Tera Solution | commerciale | proprio |
| eXist | Wolfgang Meier | open source | relazionale |
| dbXML | dbXML Group | open source | proprio |
| Xindice | Apache Software Foundation | open source | proprietario (basato su modello) |

### eXist

eXist è un progetto open source che si propone di sviluppare un sistema di database XML nativo, strettamente integrato con strumenti di sviluppo XML già esistenti, come Apache Cocoon. Il database può essere facilmente implementato, sia in modalità standalone, sia all'interno di un motore servlet o direttamente integrato in un'applicazione.
Alcune funzionalità disponibili in eXist e che possono essere trovate nella maggior parte dei database XML nativi sono:
* archiviazione schema-less: i documenti non devono essere associati allo schema o al tipo di documento, il che significa che devono essere solo ben formati;
* raccolte: una raccolta svolge un ruolo simile a una directory in un file system; quando si invia una query, l'utente può scegliere una parte distinta della gerarchia della raccolta o anche tutti i documenti contenuti nel database;
* linguaggi di query: tra i più diffusi, quelli supportati dai database XML nativi sono XPath (con estensioni per le query su più documenti) e XQuery.

## Database relazionali

I fornitori di database come IBM, Microsoft, Oracle e Sybase hanno sviluppato strumenti per assistere nella conversione di documenti XML in tabelle relazionali. Diamo un'occhiata a IBM e Oracle.

### Tecnologia IBM

DB2 XML Extender consente di accedere, archiviare e trasformare dati XML tramite funzioni definite dall'utente e procedure di archiviazione. Offre 2 modelli di archiviazione chiave: XML Colums e XML Collections.
* XML Colums: memorizza e recupera interi documenti XML come dati di colonna DB2. L'uso di XML Colums è consigliato quando esistono documenti XML e/o quando è necessario archiviare documenti XML nella loro entità.
* XML Collections: compone documenti XML da una raccolta di tabelle relazionali.
Un file di definizione di accesso ai dati (Data Access Definition, DAD) viene utilizzato sia da XML Column sia da XML Collection per definire la "mappatura" tra le tabelle del database e la struttura del documento XML.
<Xcollection> specifica che i dati XML devono essere scomposti dai documenti XML in una raccolta di tabelle relazionali o essere composti in documenti XML da una raccolta di tabelle relazionali.
Il file DAD definisce la struttura ad albero del documento XML, utilizzando i seguenti tipi di nodi:
* root_node: specifica l'elemento radice del documento;
* element_node: identifica un elemento, che può essere l'elemento radice o un elemento figlio;
* text_node: Rappresenta il testo CDATA di un elemento;
* attribute_node: Rappresenta un attributo di un elemento.

### Oracle

XML SQL Utility (XSU) di Oracle utilizza una mappatura schematica che definisce come associare tabelle e viste, incluse le caratteristiche relazionali degli oggetti, ai documenti XML. Oracle traduce la catena dei riferimenti agli oggetti dal database nella struttura gerarchica degli elementi XML.
Un documento XML corrispondente generato da un dato modello object-relational si presenta così:
XSU può essere utilizzato per eseguire query in un ambiente Java e recuperare XML dal database.

## Linguaggi per le query
### XPath

XPath è un linguaggio per indirizzare parti di un documento XML ed è il localizzatore comune utilizzato da XSLT e XPointer. Un'espressione XPath è una serie di passi di posizione separati da "/". Ogni passaggio seleziona un insieme di nodi che diventano i nodi correnti per il passaggio successivo. L'insieme di nodi selezionati dall'espressione sono i nodi rimanenti dopo l'elaborazione di ogni passaggio nell'ordine.

### XQuery

XQuery è un linguaggio di query in fase di sviluppo da parte del World Wide Web Consortium (W3C). Il compito ambizioso è quello di sviluppare il primo standard mondiale per l'interrogazione di documenti Web. XQuery è un linguaggio di marcatura versatile, in grado di etichettare il contenuto informativo di diverse fonti di dati, inclusi documenti strutturati e semi-strutturati, database relazionali e repository di oggetti.

## MySQL 5.1

MySQL ha una utility da riga di comando per eseguire query su un database MySQL e ha un'opzione per l'utilizzo di XML come formato di output. Consente anche la conversione in XML. Ulteriori informazioni possono essere trovate in Convertire MySQL in XML.
MySQL consente agli utenti di eseguire qualsiasi query SQL. mysqldump consente agli utenti di specificare quali tabelle eseguire il dump e di specificare una clausola where per limitare le righe che vengono scaricate. Nella sua versione Beta di MySQL 5.1, sono state aggiunte diverse funzionalità incluse le nuove funzioni XML .
Per comprendere queste nuove funzioni, utilizzeremo la seguente tabella:

### Funzioni XML

MySQL versione 5.1 ha funzioni per la ricerca e la modifica di documenti XML: ExtractValue e UpdateXML.
Questa funzione richiede 2 argomenti di stringa: il primo parametro corrisponde alla stringa XML_document e il secondo parametro XPath_string (XPath expression / locator). Questo restituirà una stringa contenente un valore preso dal documento.
Questa funzione richiede tre argomenti di stringa: i primi due parametri sono simili a quelli usati con extractValue, XML_document e XPath_string. Il terzo parametro è il nuovo valore che sostituirà quello trovato. Questa funzione restituirà quindi l'XML modificato.

## Note

* ↑ Bourret, 2002
* ↑ http://exist.sourceforge.net/
* ↑ XML for DB2 Information Integration Redbook
* ↑ Catalogo di XQuery Processors