L'utente ha il compito di raccogliere informazioni nel database degli ordini di acquisto esistente, SALES_DB, e di estrarre le informazioni chiave da memorizzare nei documenti XML. Il settore assistenza clienti utilizzerà questi documenti XML per rispondere alle richieste e ai commenti dei clienti. Il settore assistenza clienti richiede dati specifici da includere e fornisce una struttura standard per i documenti XML.
Utilizzando i dati esistenti, si comporrà un documento XML, getstart.xml, dai dati compresi in queste tabelle.
Inoltre si pianifica e si crea un file DAD che associa le colonne delle tabelle correlate a una struttura di documento XML che fornisce un record degli ordini di acquisto. Poiché questo documento si compone di più tabelle, si creerà una raccolta XML, associando le tabelle a una struttura XML e a una DTD. Utilizzare questa DTD per definire la struttura del documento XML. E' inoltre possibile utilizzarla per convalidare il documento XML composto nelle applicazioni.
I dati del database esistente relativi al documento XML è descritto nelle seguenti tabelle. I nomi di colonna specificati in corsivo sono le colonne richieste dal settore assistenza clienti nella struttura del documento XML.
Nome colonna | Tipo di dati |
---|---|
ORDER_KEY | INTEGER |
CUSTOMER | VARCHAR(16) |
CUSTOMER_NAME | VARCHAR(16) |
CUSTOMER_EMAIL | VARCHAR(16) |
Nome colonna | Tipo di dati |
---|---|
PART_KEY | INTEGER |
COLOR | CHAR(6) |
QUANTITY | INTEGER |
PRICE | DECIMAL(10,2) |
TAX | REAL |
ORDER_KEY | INTEGER |
Nome colonna | Tipo di dati |
---|---|
DATE | DATE |
MODE | CHAR(6) |
COMMENT | VARCHAR(128) |
PART_KEY | INTEGER |
Prima di utilizzare XML Extender per la composizione dei documenti, è necessario stabilire la struttura del documento XML e la relativa corrispondenza alla struttura dei dati del database. Questa sezione fornisce una panoramica della struttura del documento XML richiesta dal settore assistenza clienti, della DTD da utilizzare per definire la struttura del documento XML e delle associazioni di questo documento con le colonne contenenti i dati utilizzati per compilare i documenti.
La struttura del documento XML raccoglie le informazioni per un ordine specifico da più tabelle e crea un documento XML a esso relativo. Ciascuna di queste tabelle contiene informazioni relative all'ordine è possono essere unite nelle relative colonne chiave. Il settore assistenza clienti desidera che il documento sia strutturato con il numero ordine come primo livello, il cliente, la parte e le informazioni sulla spedizione come livelli successivi. Inoltre desidera che la struttura sia flessibile, con gli elementi che siano una descrizione dei dati anziché della struttura del documento. Ad esempio, il nome del cliente deve essere riportato nell'elemento denominato "cliente (customer)" e non in un paragrafo. A seconda della richiesta effettuata, la struttura gerarchica della DTD e del documento XML deve essere simile a quella descritta in Figura 5.
Una volta stabilita la struttura del documento, sarà necessario creare una DTD per descrivere la struttura del documento XML. Questo supporto didattico fornisce un documento XML e una DTD. E' possibile consultare il file DTD nell'Appendice B, Esempi. Tale file corrisponde alla struttura riportata nella Figura 5.
Figura 5. La struttura gerarchica della DTD e del documento XML
![]() |
Una volta stabilita la struttura e creata la DTD, è necessario conoscere le relazioni tra la struttura del documento e le tabelle DB2 che verranno utilizzate per compilare gli elementi e gli attributi. E' possibile associare la struttura gerarchica alle colonne specifiche delle tabelle relazionali, come riportato nella Figura 6.
Figura 6. il documento XML associato alle colonne della tabella relazionale
![]() |
Utilizzare questa descrizione per creare file DAD che definiscono le relazioni tra i dati relazionali e la struttura del documento XML.
Per creare il file DAD della raccolta XML, è necessario comprendere le modalità di corrispondenza del documento XML alla struttura del database, come descritto nella Figura 6, in modo che sia possibile risalire alle tabelle e alle colonne di origine da cui derivano i dati della struttura del documento XML relativi agli elementi e agli attributi. Queste informazioni verranno utilizzate per creare il file DAD della raccolta XML.
In questo supporto didattico, viene fornita una serie di script per consentire l'impostazione dell'ambiente. Questi script si trovano nella directory DXX_INSTALL\samples\cmd (dove DXX_INSTALL è l'unità e la directory di installazione di XML Extender, ad esempio c:\dxx\samples\cmd) ed essi sono i seguenti:
In questa sezione si utilizza un comando per l'impostazione del database. Questo comando crea un database di esempio, ne stabilisce il collegamento, crea le tabelle in cui memorizzare i dati e quindi inserisce i dati.
Importante: se la lezione sulla colonna XML è stata completata e non è stata eseguita la cancellazione dei dati dell'ambiente in uso, ignorare questo passo. Accertarsi di disporre di un database SALES_DB.
Per creare il database:
DB2CMD
getstart_db.cmd
Per memorizzare le informazioni XML nel database, è necessario abilitarlo per XML Extender. Quando si abilita un database per XML, XML Extender effettua le seguenti operazioni:
Importante: se la lezione sulla colonna XML è stata completata e non è stata eseguita la cancellazione dei dati dell'ambiente in uso, ignorare questo passo.
Per abilitare il database per XML:
Dalla finestra Comandi DB2, eseguire il seguente script per abilitare il database SALES_DB:
getstart_prep.cmd
Questo script esegue il bind del database con le procedure memorizzate XML Extender e le CLI DB2. Inoltre esegue l'opzione del comando dxxadm per abilitare il database:
dxxadm enable_db SALES_DB
Poiché i dati sono già presenti in più tabelle, si creerà una raccolta XML che associa le tabelle al documento XML. Per creare una raccolta XML, definirla preparando un file DAD.
Nella sezione Pianificazione sono state stabilite le colonne del database relazionale in cui sono presenti i dati e come i dati delle tabelle verranno strutturati in un documento XML. In questa sezione, si creerà lo schema di associazione nel file DAD che specifica la relazione tra le tabelle e la struttura del documento XML.
Nei seguenti passi, si fa riferimento agli elementi del file DAD come tag e agli elementi della struttura del documento XML come elementi. Un esempio di un file DAD simile a quello creato è nel percorso c:\dxx\samples\dad\getstart_xcollection.dad il quale presenta alcune differenze dal file generato nei seguenti passi. Se si utilizza tale file per la lezione, è possibile che i percorsi file differiscano dall'ambiente utilizzato.
Per creare il file DAD per la composizione di un documento XML:
<?xml version="1.0"?> <!DOCTYPE DAD SYSTEM "c:\dxx\dtd\dad.dtd">
XML Extender presume che il prodotto sia stato installato in c:\dxx. In caso contrario, modificare, nel seguente passo e in quelli successivi, questo valore con quello relativo all'unità e alla directory specificata durante l'installazione del prodotto.
<validation>NO</validation>
<Xcollection> </Xcollection>
<SQL_stmt> SELECT o.order_key, customer_name, customer_email, p.part_key, color, quantity, price, tax, ship_id, date, mode from order_tab o, part_tab p, table (select substr(char(timestamp(generate_unique())),16) as ship_id, date, mode, part_key from ship_tab) s WHERE o.order_key = 1 and p.price > 20000 and p.order_key = o.order_key and s.part_key = p.part_key ORDER BY order_key, part_key, ship_id </SQL_stmt>
Questa istruzione SQL utilizza le seguenti indicazioni quando utilizza l'associazione SQL. Per la struttura del documento fare riferimento alla Figura 6.
Per i requisiti relativi alla scrittura di un'istruzione SQL consultare la sezione Requisiti dello schema di associazione.
<prolog>?xml version="1.0"?</prolog>
E' richiesto il testo esatto per tutti i file DAD.
<doctype>! DOCTYPE Order SYSTEM "c:\dxx\samples\dtd\getstart.dtd"</doctype>
Per ulteriori informazioni relative a questi nodi consultare la sezione File DAD. La Figura 6 illustra la struttura gerarchica del documento XML e le colonne della tabella DB2 e indica i tipi di nodi utilizzati. Le caselle a sfondo grigio indicano i nomi delle colonne delle tabelle DB2 da cui i dati verranno estratti per comporre il documento XML.
Eseguire i seguenti passi per aggiungere i vari tipi di nodi, uno per volta.
<root_node> <element_node name="Order"> <element_node name="Customer"> <element_node name="Name"> </element_node> <element_node name="Email"> </element_node> </element_node> <element_node name="Part"> <element_node name="key"> </element_node> <element_node name="Quantity"> </element_node> <element_node name="ExtendedPrice"> </element_node> <element_node name="Tax"> </element_node> <element_node name="Shipment" multi_occurrence="YES"> <element_node name="ShipDate"> </element_node> <element_node name="ShipMode"> </element_node> </element_node> <!-- end Shipment --> </element_node> <!-- end Part --> </element_node> <!-- end Order --> </root_node>
Tenere presente che l'elemento secondario <Shipment> presenta l'attributo multi_occurence="YES". Questo attributo è utilizzato per gli elementi privi di attributo che si ripetono nel documento. L'elemento <Part> non utilizza l'attributo multi-occurence in quanto presenta un attributo color che lo rende unico.
<root_node> <element_node name="Order"> <attribute_node name="key"> </attribute_node> <element_node name="Customer"> <element_node name="Name"> </element_node> <element_node names"Email"> </element_node> </element_node> <element_node name="Part"> <attribute_node name="color"> </attribute_node> <element_node name="key"> </element_node> <element_node name="Quantity"> </element_node> ... </element_node> <!-- end Part --> </element_node> <!-- end Order --> </root_node>
<root_node> <element_node name="Order"> <attribute_node name="key"> </attribute_node> <element_node name="Customer"> <element_node name="Name"> <text_node> </text_node> </element_node> <element_node name="Email"> <text_node> </text_node> </element_node> </element_node> <element_node name="Part"> <attribute_node name="color"> </attribute_node> <element_node name="key"> <text_node> </text_node> </element_node> <element_node name="Quantity"> <text_node> </text_node> </element_node> <element_node name="ExtendedPrice"> <text_node> </text_node> </element_node> <element_node name="Tax"> <text_node> </text_node> </element_node> <element_node name="Shipment" multi-occurence="YES"> <element_node name="ShipDate"> <text_node> </text_node> </element_node> <element_node name="ShipMode"> <text_node> </text_node> </element_node> </element_node> <!-- end Shipment --> </element_node> <!-- end Part --> </element_node> <!-- end Order --> </root_node>
<root_node> <element_node name="Order"> <attribute_node name="key"> <column name="order_key"/> </attribute_node> <element_node name="Customer"> <element_node name="Name"> <text_node> <column name="customer_name"/> </text_node> </element_node> <element_node name="Email"> <text_node> <column name="customer_email"/> </text_node> </element_node> </element_node> <element_node name="Part"> <attribute_node name="color"> <column name="color"/> </attribute_node> <element_node name="key"> <text_node> <column name="part_key"/> </text_node> <element_node name="Quantity"> <text_node> <column name="quantity"/> </text_node> </element_node> <element_node name="ExtendedPrice"> <text_node> <column name="price"/> </text_node> </element_node> <element_node name="Tax"> <text_node> <column name="tax"/> </text_node> </element_node> <element_node name="Shipment" multi-occurence="YES"> <element_node name="ShipDate"> <text_node> <column name="date"/> </text_node> </element_node> <element_node name="ShipMode"> <text_node> <column name="mode"/> </text_node> </element_node> </element_node> <!-- end Shipment --> </element_node> <!-- end Part --> </element_node> <!-- end Order --> </root_node>
E' possibile confrontare il file appena creato con il file di esempio c:\dxx\samples\dad\getstart_xcollection.dad. Questo file è una copia di lavoro del file DAD richiesto per la composizione del documento XML. Il file di esempio contiene istruzioni di percorso che è possibile modificare in modo da soddisfare i requisiti dell'ambiente utilizzato.
Nell'applicazione, l'utente utilizzerà frequentemente una raccolta XML per comporre documenti, è possibile definire un nome di raccolta abilitando la raccolta. L'abilitazione della raccolta esegue la relativa registrazione nella tabella XML_USAGE e ne migliora le prestazione quando si specifica il nome della raccolta (e non il nome del file DAD) durante l'esecuzione delle procedure memorizzate. Nelle seguenti lezioni, non si eseguirà l'abilitazione della raccolta. Per ulteriori informazioni su tale operazione consultare la sezione Abilitazione delle raccolte XML.
In questo passo si utilizza la procedura memorizzata dxxGenXML() per comporre il documento XML specificato dal file DAD. Questa procedura restituisce il documento come XMLVARCHAR UDT.
Per comporre il documento XML:
getstart_stp.cmd
Il documento XML viene composto e memorizzato nella tabella RESULT_TAB.
Gli esempi delle procedure memorizzate che è possibile utilizzare in questo passo sono riportati nei seguenti file:
DB2 CONNECT TO SALES_DB DB2 SELECT db2xml.Content(db2xml.xmlvarchar(doc), 'c:\dxx\samples\cmd\getstart.xml') FROM RESULT_TAB
In alternativa, per esportare il file è possibile eseguire il seguente comando:
getstart_exportXML.cmd
Questa lezione illustra come utilizzare la funzione della serie dei risultati delle procedure memorizzate DB2 che consente la lettura sequenziale delle righe per richiamare il documento XML composto. E' possibile esportare in un file le righe richiamate dal documento, questo rappresenta il metodo più semplice per dimostrare tale funzione. Per dimostrazioni più efficienti della lettura sequenziale dei dati consultare gli esempi CLI riportati in c:\dxx\samples\cli.