4.9

Sezione 4: Sviluppatori

Q 4.9: Come faccio a inserire o rimuovere il mio XML dal mio database?

Chiedi al produttore del tuo database

 

Quasi tutti i sistemi di gestione di database ora forniscono moduli di importazione ed esportazione XML per connettere applicazioni XML a database.

In alcuni casi banali ci sarà un’associazione 1:1 fra campi di nome nella tabella database e i nomi di tipo di elemento nello Schema XML o DTD, ma nella maggior parte dei casi qualche programmazione richiederà lo stabilimento delle associazioni desiderate. Questo può solitamente essere memorizzato come una procedura in modo che gli utilizzi successivi siano semplicemente comandi o chiamate con parametri rilevanti.

In alternativa, la maggior parte dei sistemi di database ora forniscono un formato dump XML che ti permette di esportare una tabella così com’è, per esempio circondando i valori di campo con tag chiamati dopo i nomi di campo. Per esempio, l’opzione -X al comando mysql farà questo, ad es.

$ echo 'select * from news;' | mysql -X -u username -p password dbname

<?xml version="1.0"?>
<resultset statement="select * from news" 
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <row>
	<field name="id">1</field>
	<field name="stamp">0</field>
	<field name="title"></field>
	<field name="date">0000-00-00</field>
	<field name="time">test</field>
	<field name="description">News Engine test item 1</field>
  </row>
</resultset>
$

In casi meno banali ma comunque semplici, potresti esportare scrivendo una routine di report che formatta gli output come documento XML aggiungendo i tag rilevanti come letterali prima e dopo ogni valore di dato; e potresti importare scrivendo una trasformazione XSLT o simile che formatta i dati XML come file di caricamento nel tuo formato preferito del database. Per esempio, con questi dati:

<news>
  <entry xml:id="N1" stamp="0" date="0000-00-00" time="test">
    <title></title>
    <description>News Engine test item 1</description>
  </entry>
</news>

potresti trasformarlo in un’affermazione  MySQL con lxprintf:

$ lxprintf -e entry \
  'INSERT INTO `news` VALUES (%s,%s,"%s","%s","%s","%s");\n' \
  'substring(@xml:id,2)' @stamp title @date @time description \
	mynews.xml | mysql -u username -p password dbname

Questo comunica tale comando su MySQL

INSERT INTO `news` VALUES (1,0,"","0000-00-00","test","News Engine test item 1")

Gli utenti con un background di database o di informatica dovrebbero sapere che XML non è un sistema di gestione di database: è un sistema di markup di testo. Seppure ci sono somiglianze, alcuni dei concetti di uno sono semplicemente inesistenti nell’altro: XML non possiede alcune caratteristiche tipiche di un database, così come i database non possiedono quelle tipiche del markup. È un errore comune quello di credere che XML sia un DBMS come Oracle o Access e dunque possieda le stesse infrastrutture. Non le ha.

Gli utenti di database dovrebbero leggere l’articolo (Salminen e Tompa, 2001) [grazie a Bart Later per averlo identificato.] Ronald Bourret gestisce inoltre una buona risorsa su XML e Database dove discute database nativi in XML suhttp://www.rpbourret.com/xml/XMLAndDatabases.htm.

Ci sono delle informazioni sul Linguaggio XQuery (XQL) nella nota sulla Ricerca.

Leave a Comment

Your email address will not be published. Required fields are marked *