Lo siguiente que debemos hacer es agregar a nuestra base de datos los objetos XML que queremos incluir en esta base de datos. Sabemos por lo que hemos visto que Tamino se basa en los esquemas de los documentos XML, el principal problema que tenemos es que para el caso práctico que nos ocupa, el documento XML llamado bib.xml, no tenemos definido el esquema y sí tenemos definido el archivo DTD.
Mediante el Tamino Schema Editor, herramienta para crear esquemas, podemos crear un esquema para nuestro ejemplo práctico a partir del documento DTD del que disponemos.
Figura 5.19. Uso del Tamino Schema Editor (creación del esquema de la base de datos I)
Modificamos el nombre NEW_Schema que encontramos como valor de la propiedad schemaName, en esta caso por biblio y especificamos el nombre de la colección. Una vez hecho esto, mediante el menú Insert seleccionamos DocType para insertar el archivo DTD que nos define el archivo bib.xml
Una vez tenemos hecho esto, seleccionamos la opción Import DTD… del menú File para seleccionar el archivo DTD a partir del que queremos generar el schema. Al final de este proceso tendremos:
Figura 5.21. Uso del Tamino Schema Editor (creación del esquema de la base de datos III)
Observamos que si desplegamos todos los elementos del arbol de navegación tenemos el archivo bib.dtd representado gráficamente:
Por ultimo finalizamos el proceso grabando el esquema que hemos generado como biblio.tsd, el contenido del cual es el siguiente:
<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:tsd = "http://namespaces.softwareag.com/tamino/TaminoSchemaDefinition" xmlns:xs = "http://www.w3.org/2001/XMLSchema">
<xs:annotation> <xs:appinfo>
<tsd:schemaInfo name = "biblio">
<tsd:collection name = "biblio"></tsd:collection> <tsd:doctype name = "NEW_doctype">
<tsd:logical> <tsd:content>closed</tsd:content> </tsd:logical> </tsd:doctype> </tsd:schemaInfo> </xs:appinfo> </xs:annotation>
<xs:element name = "bib"> <xs:complexType> <xs:sequence>
<xs:element ref = "book" minOccurs = "0" maxOccurs = "unbounded"></xs:element> </xs:sequence>
</xs:complexType> </xs:element>
<xs:element name = "book"> <xs:complexType>
<xs:sequence>
<xs:element ref = "title"></xs:element> <xs:choice>
<xs:element ref = "author" maxOccurs = "unbounded"></xs:element> <xs:element ref = "editor" maxOccurs = "unbounded"></xs:element> </xs:choice>
<xs:element ref = "publisher"></xs:element> <xs:element ref = "price"></xs:element> </xs:sequence>
<xs:attribute name = "year" type = "xs:string" use = "required"></xs:attribute> </xs:complexType>
</xs:element>
<xs:element name = "author"> <xs:complexType>
<xs:sequence>
<xs:element ref = "last"></xs:element> <xs:element ref = "first"></xs:element> </xs:sequence>
</xs:complexType> </xs:element>
<xs:element name = "editor"> <xs:complexType>
<xs:sequence>
<xs:element ref = "last"></xs:element> <xs:element ref = "first"></xs:element> <xs:element ref = "affiliation"></xs:element> </xs:sequence>
</xs:complexType> </xs:element>
<xs:element name = "title" type = "xs:string"></xs:element> <xs:element name = "last" type = "xs:string"></xs:element> <xs:element name = "first" type = "xs:string"></xs:element> <xs:element name = "affiliation" type = "xs:string"></xs:element> <xs:element name = "publisher" type = "xs:string"></xs:element> <xs:element name = "price" type = "xs:string"></xs:element> </xs:schema>
Una vez ya tenemos nuestro esquema el siguiente paso es cargar los datos XML a nuestra base de datos Tamino; la manera más sencilla de cargar los datos XML es mediante el Tamino Interactive Interface.
Lo primero que se debe hacer es mediante la pestaña DEFINE, seleccionar el esquema que definirá los datos de nuestra base de datos
Figura 5.23. Carga del esquema de la base de datos en Tamino Interactive Interface
Una vez seleccionado el botón Define ya tenemos cargado el esquema de nuestra base de datos.
Ahora, mediante la pestaña Load seleccionamos el documento XML que aportarán los datos a la base de datos proyecto, en nuestro caso seleccionamos el archivo bib.xml
Figura 5.24. Carga del archivo XML de la base de datos en Tamino Interactive Interface
Para realizar la carga de datos XML a la base de datos también podemos utilizar el comando Data Loader en el que mediante la línea de comandos podemos incluir en nuestra base de datos el documento XML; el comando que ejecuta el data loader es el comando inoxmld al que se deben añadir los parámetros indicados:
Usage: inoxmld <params>
where params are the following :
Function=(Load|Unload|Define) - can be omitted for Load Database=<database name> or
Server=<machine name>:<port> Tamino Server to connect to - MANDATORY User=<uid> Tamino User-Id - if not provided, anonymous
Password=<password>
Collection=<collection>/<doc-type> specification of collection name and doc-type to load data into - MANDATORY Log=<log filename> where to write processing information - optional - default is STDERR
concurrentWrite allow parallel updates
(normally slow, but uses less temporary space) --- for Data Load ---
Input=<input filename> file containing documents to load optional - default is STDIN
Norejects do not tolerate rejects
Rejects=<rejects filename> where to write the rejected documents - optional - not written if omitted
--- for Data Unload ----
Output=<output filename> where to write the unloaded documents - MANDATORY
Así si ejecutamos
inoxmld Database=proyecto Collection=biblio/bib.dtd Input=d:\bib.xml
Tendremos como resultado:
C:\Archivos de programa\Software AG\Tamino\Tamino 4.1.4.1\X_Tools\Tamino_Data_Lo ader>inoxmld Database=proyecto Collection=biblio/bib.dtd Input=d:\bib.xml
<?xml version="1.0" encoding="utf-8" ?>
<ino:response xmlns:ino="http://namespaces.softwareag.com/tamino/response2" xmln s:xql="http://metalab.unc.edu/xql/">
<ino:message>
<ino:messageline>Tamino Data Loader v4.1.4.1 - Copyright (c) Software AG</in o:messageline>
<ino:messageline>Loading from d:\bib.xml to Tamino database proyecto</ino:me ssageline>
<ino:messageline>Start: 2003-09-26T12:03:31</ino:messageline> </ino:message>
<ino:message ino:returnvalue="7935"><ino:messagetext ino:code="INOXDE7935">Sch ema not found</ino:messagetext><ino:messageline>Collection name = biblio</ino:me ssageline></ino:message>
</ino:response>