Index: txtdb/txtdb.scm
==================================================================
--- txtdb/txtdb.scm
+++ txtdb/txtdb.scm
@@ -116,29 +116,29 @@
     (with-output-to-file (conc targdir "/xml/" sheet-name ".xml")
       (lambda ()
 	(print (sxml-serializer#serialize-sxml remaining))))
     sheet-name))
 
+(define (sxml->file dat fname)
+  (with-output-to-file fname
+    (lambda ()
+      (print (sxml-serializer#serialize-sxml dat)))))
 
 (define (extract-txtdb dat targdir)
-  (let* ((wrkbk   (find-section   dat   'http://www.gnumeric.org/v10.dtd:Workbook))
-	 (wrk-rem (remove-section dat   'http://www.gnumeric.org/v10.dtd:Workbook))
-	 (sheets  (find-section   wrkbk 'http://www.gnumeric.org/v10.dtd:Sheets))
-	 (sht-rem (remove-section wrkbk 'http://www.gnumeric.org/v10.dtd:Sheets)))
-    (create-directory (conc targdir "/xml") #t)
-    (with-output-to-file (conc targdir "/xml/workbook.xml")
-      (lambda ()
-	(print (sxml-serializer#serialize-sxml wrk-rem))))
-    (with-output-to-file (conc targdir "/xml/sheets.xml")
-      (lambda ()
-	(print (sxml-serializer#serialize-sxml sht-rem))))
-    (let ((sheet-names (map (lambda (sheet)
-			      (sheet->txtdb sheet targdir))
-			    sheets)))
-      (with-output-to-file (conc targdir "/sheet-names.cfg")
-	(lambda ()
-	  (map print sheet-names))))))
+  (let* ((wrkbk       (find-section   dat   'http://www.gnumeric.org/v10.dtd:Workbook))
+	 (wrk-rem     (remove-section dat   'http://www.gnumeric.org/v10.dtd:Workbook))
+	 (sheets      (find-section   wrkbk 'http://www.gnumeric.org/v10.dtd:Sheets))
+	 (sht-rem     (remove-section wrkbk 'http://www.gnumeric.org/v10.dtd:Sheets))
+	 (sheet-names (map (lambda (sheet)
+			     (sheet->txtdb sheet targdir))
+			   sheets)))
+    (create-directory (conc targdir "/xml") #t)
+    (sxml->file wrk-rem (conc targdir "/xml/workbook.xml"))
+    (sxml->file sht-rem (conc targdir "/xml/sheets.xml"))
+    (with-output-to-file (conc targdir "/sheet-names.cfg")
+      (lambda ()
+	(map print sheet-names)))))
 
 (define (read-gnumeric-file fname)
   (if (not (string-match (regexp ".*.gnumeric$") fname))
       (begin
 	(print "ERROR: Attempt to import gnumeric file with extention other than .gnumeric")
@@ -159,18 +159,26 @@
       (lambda ()
 	(print (sxml-serializer#serialize-sxml sxml-dat))))
     (system (conc "gzip " tmpf))
     (file-copy tmpf fname)
     (delete-file tmpf)))
+
+(define (read-dat fname)
+  (read-file fname read-line)) ;; Placeholder!
     
 (define (txtdb->sxml dbdir)
-  ;; Read sheets list
-  ;; Read sheets
-  ;; Read xml for each sheet
-  ;; Read meta data xml
-  ;; Construct the final sxml and return it
-  #f)
+  (let* ((sht-names (read-file (conc dbdir "/sheet-names.cfg")  read-line))
+	 (wrk-rem   (read-file (conc dbdir "/xml/workbook.xml") read-line))
+	 (sht-rem   (read-file (conc dbdir "/xml/sheets.xml")   read-line))
+	 (sheets    (fold (lambda (sheetname res)
+			    (let ((sheetdat (read-dat (conc dbdir "/" sheetname ".dat")))
+				  (sht-meta (txtdb:read-gnumeric-xml (conc dbdir "/xml/" sheetname ".xml"))))
+			      (cons (cons sht-meta sheetdat)
+				    res)))
+			  '()
+			  sht-names)))
+    (append wrk-rem (list sheets))))
 
 #|  
  (define x (txtdb:read-gnumeric-xml "testdata-stripped.xml"))