Project

General

Profile

« Previous | Next » 

Revision 14

added Ron Bourret's xmldbms package for loading xml documents into databases

View differences:

xmldbms/BugsEnhancements.htm
1
<html>
2
<head>
3
   <title>Bugs and Enhancements</title>
4
</head>
5
<body>
6

  
7
<H2>Bugs and Enhancements</H2>
8

  
9
<p>This file is a combination of <a href="#bugs">bugs</a> and potential future <a href="#enhance">enhancements</a>. It is not always clear which is which...</p>
10

  
11
<h3><a name="bugs">Known Bugs</a></h3>
12

  
13
<p><b>Title: </b>Reuse of prepared SELECT statements with JDBC-ODBC bridge and Access doesn't work<br />
14
<b>Description: </b>Either the JDBC-ODBC bridge or the MS Access driver does not correctly support the reuse of prepared SELECT statements. As a consequence, the code to reuse these statements has been commented out. If your driver does correctly support prepared SELECT statements, see the comments in Map.checkInSelectStmt for how to increase performance.</p>
15

  
16
<p><b>Title: </b>KeyGeneratorImpl doesn't work with Microsoft Access<br />
17
<b>Description: </b>KeyGeneratorImpl doesn't work with Microsoft Access. The problem is that the transaction that updates the XMLDBMSKey table is never committed, in spite of a call to do this. As a workaround, comment out the line of code that sets auto-commit to false. Presumably, this means there is
18
a possibility two users could receive the same high key value. Note that it is not clear whether the problem is with Microsoft Access itself or the ODBC driver supplied by Microsoft.</p>
19

  
20
<p><b>Title: </b>Namespace prefix "lost" of more than one prefix defined for same namespace<br />
21
<b>Description: </b>If more than one prefix is declared in SubsetToDTD.convertDocument or SubsetToDTD.convertExternalSubset, then the prefix actually used is the first one encountered in the DTD.</p>
22

  
23
<p><b>Title: </b>Order not supported when foreign key in parent<br />
24
<b>Description: </b>When the foreign key in a parent/child relationship between two element types-as-classes is in the table of the parent element type, order information can be saved for the 
25
child element type but not retrieved. For example, consider the following:</p>
26
<pre>
27
   &lt;SalesOrder&gt;
28
      &lt;Number&gt;123&lt;/Number&gt;
29
      &lt;Customer&gt;
30
         &lt;Name&gt;ABC Industries&lt;/Name&gt;
31
         &lt;Address&gt;123 Main St., Chicago&lt;/Address&gt;
32
      &lt;/Customer&gt;
33
   &lt;/SalesOrder&gt;
34
</pre>
35
<p>If the foreign key used to join the sales order and customer tables is in the sales order table, then no information about the order in which the Customer element appears in the SalesOrder element can be retrieved from the database. The problem here is that the code to construct SELECT statements and the code to access data in result sets assumes that SELECTs are done over a single table. In this case, the order column for the Customer element is stored in the Sales table, so a join to the Sales table needs to be done when retrieving customer data. Fixing this is likely to require some rethinking in the way in which the statement-generation code in Map and data retrieval code in Row (as well as elsewhere) works.</p>
36

  
37
<p><b>Title: </b>Root table assumed to have a key<br />
38
<b>Description: </b>If the root table does not have a candidate key, then the DocumentInfo object returned by DOMToDBMS.storeDocument() cannot be used to retrieve the data. It is also quite likely that some code will fail, although this has not been tested.</p>
39

  
40
<p><b>Title: </b>Columns with markup not expanded<br />
41
<b>Description: </b>When a column containing markup is retrieved from the database, it is not expanded into the corresponding DOM nodes. Instead, it remains as marked up text.</p>
42

  
43
<p><b>Title: </b>Markup not escaped on serialization<br />
44
<b>Description: </b>Any markup that occurs when serializing a Map or DDML document is not replaced with entities as it should be. XMLOutputStream.characters needs to be fixed.</p>
45

  
46
<p><b>Title: </b>Markup characters not serialized correctly<br />
47
<b>Description: </b>The code that serializes the contents of a DOM node needs to know how to serialize markup characters that are not true markup. For example, if an element contains &quot;a&lt;b&quot;, how should the &lt; character be serialized? If it is serialized as a &lt; character, it will generate an error when it is retrieved from the database, as the code will try to parse it as markup. If it is serialized as the entity &amp;lt;, the data in the database cannot be searched for the expected text, but must instead be searched for the &amp;lt; entity usage. Which route to follow should be left as a choice for the user -- probably designated on a per-element-type basis in the mapping document.</p>
48

  
49
<p><b>Title: </b>Duplicate keys not handled correctly?<br />
50
<b>Description: </b>If the code encounters a duplicate key value when inserting data into the database, it returns an error. Although this makes sense in some cases -- for example, it is clearly an error to insert the same sales order twice -- it does not make sense in others. For example, suppose part information is sent with each sales order. Because multiple sales orders can refer to the same part, all sales orders after the first that refer to a given part will fail because they get a duplicate key error inserting the part information. One possible solution to this is to ignore duplicate key errors when the foreign key in the parent/child relationship is in the table of the parent element; in such a situation, the contents of the child and all its children would presumably be ignored. However, because it is not clear what to do in this case, the best solution for the moment is to simply throw the duplicate key error and find out how people are using the software and what they expect.</p>
51

  
52
<p><b>Title: </b>Empty elements-as-classes inserted as row of all NULLs<br />
53
<b>Description: </b>If an element-as-class is empty and has no attributes, the code (probably) inserts in a row with all NULLs into the database, which will often cause an INSERT error. It is not clear whether this is the correct behavior.</p>
54

  
55
<p><b>Title: </b>SubsetToDTD ignores encoding declarations<br />
56
<b>Description: </b>SubsetToDTD ignores encoding declarations, instead depending on the native abilities of Java to decode the bytes. This will most likely be encountered while using MapFactory_DTD.</p>
57

  
58
<h3><a name="enhance">Future Enhancements</a></h3>
59

  
60
<p>Some of these changes are probably not that difficult; others will require a lot of work. If you are interested in implementing any of these, you might want to send me email first, as I can often explain what needs to be done and where the potential problems lie.</p>
61

  
62
<p><b>Title: </b>Pass-through classes<br />
63
<b>Description: </b>Pass-through is a way to compress structure that exists in the XML document but not in the database. The simplest example of pass-through is the IgnoreRoot element in the XML-DBMS mapping language. However, much more sophisticated types of pass-through as possible as well. For example, imagine that you have an Address element inside a Customer element and the Address element contains Street, City, PostCode, etc. elements. In the object-tree view supported by XML-DBMS, Address would generally require its own table. However, in many cases it is desirable to eliminate the Address element and store Street, City, PostCode directly in the Customer table.</p>
64

  
65
<p>Pass-through like this is relatively easy when transferring data from XML documents to the database, but can prove impossible in the other direction, as multiple XML structures can be mapped to the same database structure. More sophisticated types of pass-through are imaginable as well. For more information, see <a href="PassThrough.txt">PassThrough.txt</a>.</p>
66

  
67
<p><b>Title: </b>Binary data not supported<br />
68
<b>Description: </b>Binary data is not supported either internally (Base64) or externally (unparsed 
69
entities).</p>
70

  
71
<p><b>Title: </b>CREATE TABLE statements inadequate<br />
72
<b>Description: </b>Currently, CREATE TABLE statements have a number of drawbacks. 1) They do not correctly support DECIMAL and NUMERIC columns. 2) They use hard-coded data type names instead of querying the database for these names. 3) They do not state whether columns are nullable. 4) They do not include primary key / foreign key constraints. None of these should be difficult to fix except possible the primary key / foreign key constraints.</p>
73

  
74
<p><b>Title: </b>Map construction code is a mess<br />
75
<b>Description: </b>The code in the Temp*Map classes is a mess, especially TempMap. (The map factory code is generally pretty good.) The problem is that the Temp*Map classes do not have well-defined interfaces, allowing direct access to class variables instead. Thus, writing map factories can be very confusing and the maps themselves never really track whether they are in a valid or invalid state. Furthermore, the code is poorly commented, especially TempMap.java. For more information, see <a href="TempMap.txt">TempMap.txt</a>.</p>
76

  
77
<p><b>Title: </b>No pretty printing<br />
78
<b>Description: </b>The code that serializes the contents of a DOM node needs to have pretty-printing options: a) indent nested elements, b) normalize carriage return/line feeds as spaces, c) insert line breaks at a specified line length.</p>
79

  
80
<p><b>Title: </b>Code to order DOM nodes very inefficient<br />
81
<b>Description: </b>When retrieving data from the database, the code that inserts ordered child nodes into a parent node is very inefficient. It uses a linear search to determine where to place the child. This code should be rewritten, possibly using a binary search.</p>
82

  
83
<p><b>Title: </b>Number formats<br />
84
<b>Description: </b>Currently, there is no way to specify the format of numbers in the XML document. It should be relatively easy to support this in a manner similar to date formats through an option in the mapping file. See the XMLDBMS DTD, MapFactory_MapDocument, Parameters, and DBMSToDOM for ideas.</p>
85

  
86
<p><b>Title: </b>Per-property formats<br />
87
<b>Description: </b>In many cases, it is useful to assign date/time or number formats on a per-property basis. This is most easily done by adding a Name attribute to the formats described in the mapping document (type ID) and optional Formats subelements to property maps. The Formats subelement would have IDREF attributes for the number and date/time formats to use (e.g. Number, DateTime). These must refer to formats defined in the Options element. If present, they would be used; if not present, the default format (defined in the Options element) would be used.</p>
88

  
89
<p><b>Title: </b>Rewrite DOMToDBMS as SAX application<br />
90
<b>Description: </b>It is possible that DOMToDBMS can be rewritten as a SAX application. If done, the result should be named SAXToDBMS and DOMToDBMS left in the package, as it will sometimes be useful to pass a DOM tree to the database. For more information, see <a href="SAXToDBMS.txt">SAXToDBMS.txt</a>.</p>
91

  
92
</body>
93
</html>
0 94

  
xmldbms/docs/de.tudarmstadt.ito.schemas.dtd.ParameterEntity.html
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
2
<!--NewPage-->
3
<html>
4
<head>
5
<!-- Generated by javadoc on Fri Sep 24 03:23:03 CEST 1999 -->
6
<title>
7
  Class de.tudarmstadt.ito.schemas.dtd.ParameterEntity
8
</title>
9
</head>
10
<body>
11
<a name="_top_"></a>
12
<pre>
13
<a href="packages.html">All Packages</a>  <a href="tree.html">Class Hierarchy</a>  <a href="Package-de.tudarmstadt.ito.schemas.dtd.html">This Package</a>  <a href="de.tudarmstadt.ito.schemas.dtd.Notation.html#_top_">Previous</a>  <a href="de.tudarmstadt.ito.schemas.dtd.ParsedGeneralEntity.html#_top_">Next</a>  <a href="AllNames.html">Index</a></pre>
14
<hr>
15
<h1>
16
  Class de.tudarmstadt.ito.schemas.dtd.ParameterEntity
17
</h1>
18
<pre>
19
java.lang.Object
20
   |
21
   +----<a href="de.tudarmstadt.ito.schemas.dtd.Entity.html#_top_">de.tudarmstadt.ito.schemas.dtd.Entity</a>
22
           |
23
           +----de.tudarmstadt.ito.schemas.dtd.ParameterEntity
24
</pre>
25
<hr>
26
<dl>
27
  <dt> public class <b>ParameterEntity</b>
28
  <dt> extends <a href="de.tudarmstadt.ito.schemas.dtd.Entity.html#_top_">Entity</a>
29
</dl>
30
Class representing a parameter entity.
31
<p>
32
<hr>
33
<a name="index"></a>
34
<h2>
35
  <img src="images/variable-index.gif" width=207 height=38 alt="Variable Index">
36
</h2>
37
<dl>
38
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
39
	<a href="#value"><b>value</b></a>
40
  <dd>  The value of the parameter entity.
41
</dl>
42
<h2>
43
  <img src="images/constructor-index.gif" width=275 height=38 alt="Constructor Index">
44
</h2>
45
<dl>
46
  <dt> <img src="images/yellow-ball-small.gif" width=6 height=6 alt=" o ">
47
	<a href="#ParameterEntity()"><b>ParameterEntity</b></a>()
48
  <dd> Construct a ParameterEntity.
49
  <dt> <img src="images/yellow-ball-small.gif" width=6 height=6 alt=" o ">
50
	<a href="#ParameterEntity(java.lang.String)"><b>ParameterEntity</b></a>(String)
51
  <dd> Construct a ParameterEntity and set its name.
52
</dl>
53
<a name="variables"></a>
54
<h2>
55
  <img src="images/variables.gif" width=153 height=38 alt="Variables">
56
</h2>
57
<a name="value"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
58
<b>value</b>
59
<pre>
60
 public String value
61
</pre>
62
<dl>
63
  <dd> The value of the parameter entity. This also serves as a flag
64
 that the entity is an internal entity. It must be null if the
65
 systemID or publicID variables inherited from Entity are non-null.<p>
66
</dl>
67
<a name="constructors"></a>
68
<h2>
69
  <img src="images/constructors.gif" width=231 height=38 alt="Constructors">
70
</h2>
71
<a name="ParameterEntity"></a>
72
<a name="ParameterEntity()"><img src="images/yellow-ball.gif" width=12 height=12 alt=" o "></a>
73
<b>ParameterEntity</b>
74
<pre>
75
 public ParameterEntity()
76
</pre>
77
<dl>
78
  <dd> Construct a ParameterEntity.
79
<p>
80
</dl>
81
<a name="ParameterEntity(java.lang.String)"><img src="images/yellow-ball.gif" width=12 height=12 alt=" o "></a>
82
<b>ParameterEntity</b>
83
<pre>
84
 public ParameterEntity(String name)
85
</pre>
86
<dl>
87
  <dd> Construct a ParameterEntity and set its name.
88
<p>
89
</dl>
90
<hr>
91
<pre>
92
<a href="packages.html">All Packages</a>  <a href="tree.html">Class Hierarchy</a>  <a href="Package-de.tudarmstadt.ito.schemas.dtd.html">This Package</a>  <a href="de.tudarmstadt.ito.schemas.dtd.Notation.html#_top_">Previous</a>  <a href="de.tudarmstadt.ito.schemas.dtd.ParsedGeneralEntity.html#_top_">Next</a>  <a href="AllNames.html">Index</a></pre>
93
</body>
94
</html>
0 95

  
xmldbms/docs/de.tudarmstadt.ito.schemas.dtd.UnparsedEntity.html
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
2
<!--NewPage-->
3
<html>
4
<head>
5
<!-- Generated by javadoc on Fri Sep 24 03:23:03 CEST 1999 -->
6
<title>
7
  Class de.tudarmstadt.ito.schemas.dtd.UnparsedEntity
8
</title>
9
</head>
10
<body>
11
<a name="_top_"></a>
12
<pre>
13
<a href="packages.html">All Packages</a>  <a href="tree.html">Class Hierarchy</a>  <a href="Package-de.tudarmstadt.ito.schemas.dtd.html">This Package</a>  <a href="de.tudarmstadt.ito.schemas.dtd.Reference.html#_top_">Previous</a>  <a href="Package-de.tudarmstadt.ito.schemas.dtd.html">Next</a>  <a href="AllNames.html">Index</a></pre>
14
<hr>
15
<h1>
16
  Class de.tudarmstadt.ito.schemas.dtd.UnparsedEntity
17
</h1>
18
<pre>
19
java.lang.Object
20
   |
21
   +----<a href="de.tudarmstadt.ito.schemas.dtd.Entity.html#_top_">de.tudarmstadt.ito.schemas.dtd.Entity</a>
22
           |
23
           +----de.tudarmstadt.ito.schemas.dtd.UnparsedEntity
24
</pre>
25
<hr>
26
<dl>
27
  <dt> public class <b>UnparsedEntity</b>
28
  <dt> extends <a href="de.tudarmstadt.ito.schemas.dtd.Entity.html#_top_">Entity</a>
29
</dl>
30
Class representing an unparsed entity.
31
<p>
32
<hr>
33
<a name="index"></a>
34
<h2>
35
  <img src="images/variable-index.gif" width=207 height=38 alt="Variable Index">
36
</h2>
37
<dl>
38
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
39
	<a href="#notation"><b>notation</b></a>
40
  <dd> The notation used by the entity.
41
</dl>
42
<h2>
43
  <img src="images/constructor-index.gif" width=275 height=38 alt="Constructor Index">
44
</h2>
45
<dl>
46
  <dt> <img src="images/yellow-ball-small.gif" width=6 height=6 alt=" o ">
47
	<a href="#UnparsedEntity()"><b>UnparsedEntity</b></a>()
48
  <dd> Construct a new UnparsedEntity.
49
  <dt> <img src="images/yellow-ball-small.gif" width=6 height=6 alt=" o ">
50
	<a href="#UnparsedEntity(java.lang.String)"><b>UnparsedEntity</b></a>(String)
51
  <dd> Construct a new UnparsedEntity and set its name.
52
</dl>
53
<a name="variables"></a>
54
<h2>
55
  <img src="images/variables.gif" width=153 height=38 alt="Variables">
56
</h2>
57
<a name="notation"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
58
<b>notation</b>
59
<pre>
60
 public String notation
61
</pre>
62
<dl>
63
  <dd> The notation used by the entity.<p>
64
</dl>
65
<a name="constructors"></a>
66
<h2>
67
  <img src="images/constructors.gif" width=231 height=38 alt="Constructors">
68
</h2>
69
<a name="UnparsedEntity"></a>
70
<a name="UnparsedEntity()"><img src="images/yellow-ball.gif" width=12 height=12 alt=" o "></a>
71
<b>UnparsedEntity</b>
72
<pre>
73
 public UnparsedEntity()
74
</pre>
75
<dl>
76
  <dd> Construct a new UnparsedEntity.
77
<p>
78
</dl>
79
<a name="UnparsedEntity(java.lang.String)"><img src="images/yellow-ball.gif" width=12 height=12 alt=" o "></a>
80
<b>UnparsedEntity</b>
81
<pre>
82
 public UnparsedEntity(String name)
83
</pre>
84
<dl>
85
  <dd> Construct a new UnparsedEntity and set its name.
86
<p>
87
</dl>
88
<hr>
89
<pre>
90
<a href="packages.html">All Packages</a>  <a href="tree.html">Class Hierarchy</a>  <a href="Package-de.tudarmstadt.ito.schemas.dtd.html">This Package</a>  <a href="de.tudarmstadt.ito.schemas.dtd.Reference.html#_top_">Previous</a>  <a href="Package-de.tudarmstadt.ito.schemas.dtd.html">Next</a>  <a href="AllNames.html">Index</a></pre>
91
</body>
92
</html>
0 93

  
xmldbms/docs/GenerateMap.html
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
2
<!--NewPage-->
3
<html>
4
<head>
5
<!-- Generated by javadoc on Fri Sep 24 03:22:03 CEST 1999 -->
6
<title>
7
  Class GenerateMap
8
</title>
9
</head>
10
<body>
11
<a name="_top_"></a>
12
<h1>
13
  Class GenerateMap
14
</h1>
15
<pre>
16
java.lang.Object
17
   |
18
   +----GenerateMap
19
</pre>
20
<hr>
21
<dl>
22
  <dt> public class <b>GenerateMap</b>
23
  <dt> extends Object
24
</dl>
25
This application generates a map and a file of CREATE TABLE statements
26
 from an input document. The input document can be a DTD, DDML document,
27
 or XML document that has a DTD (including referencing an external DTD).
28
 The document type is determined from the extension: .dtd for DTDs and
29
 .ddm for DDML documents; everything else is assumed to be an XML document.
30
 The documents have the same base name as the input document, but uses
31
 extensions of .map and .sql.
32
 <P>The command line syntax for this application is:</P>
33
 <PRE>
34
    java GenerateMap <input-file>
35
 </PRE>
36
<p>
37
<hr>
38
<a name="index"></a>
39
<h2>
40
  <img src="images/constructor-index.gif" width=275 height=38 alt="Constructor Index">
41
</h2>
42
<dl>
43
  <dt> <img src="images/yellow-ball-small.gif" width=6 height=6 alt=" o ">
44
	<a href="#GenerateMap()"><b>GenerateMap</b></a>()
45
  <dd> 
46
</dl>
47
<h2>
48
  <img src="images/method-index.gif" width=207 height=38 alt="Method Index">
49
</h2>
50
<dl>
51
  <dt> <img src="images/green-ball-small.gif" width=6 height=6 alt=" o ">
52
	<a href="#main(java.lang.String[])"><b>main</b></a>(String[])
53
  <dd> 
54
</dl>
55
<a name="constructors"></a>
56
<h2>
57
  <img src="images/constructors.gif" width=231 height=38 alt="Constructors">
58
</h2>
59
<a name="GenerateMap"></a>
60
<a name="GenerateMap()"><img src="images/yellow-ball.gif" width=12 height=12 alt=" o "></a>
61
<b>GenerateMap</b>
62
<pre>
63
 public GenerateMap()
64
</pre>
65
<a name="methods"></a>
66
<h2>
67
  <img src="images/methods.gif" width=151 height=38 alt="Methods">
68
</h2>
69
<a name="main(java.lang.String[])"><img src="images/green-ball.gif" width=12 height=12 alt=" o "></a>
70
<a name="main"><b>main</b></a>
71
<pre>
72
 public static void main(String argv[])
73
</pre>
74
</body>
75
</html>
0 76

  
xmldbms/docs/de.tudarmstadt.ito.schemas.converters.SubsetToDTD.html
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
2
<!--NewPage-->
3
<html>
4
<head>
5
<!-- Generated by javadoc on Fri Sep 24 03:23:03 CEST 1999 -->
6
<title>
7
  Class de.tudarmstadt.ito.schemas.converters.SubsetToDTD
8
</title>
9
</head>
10
<body>
11
<a name="_top_"></a>
12
<pre>
13
<a href="packages.html">All Packages</a>  <a href="tree.html">Class Hierarchy</a>  <a href="Package-de.tudarmstadt.ito.schemas.converters.html">This Package</a>  <a href="de.tudarmstadt.ito.schemas.converters.DTDToDDML.html#_top_">Previous</a>  <a href="Package-de.tudarmstadt.ito.schemas.converters.html">Next</a>  <a href="AllNames.html">Index</a></pre>
14
<hr>
15
<h1>
16
  Class de.tudarmstadt.ito.schemas.converters.SubsetToDTD
17
</h1>
18
<pre>
19
java.lang.Object
20
   |
21
   +----de.tudarmstadt.ito.schemas.converters.SubsetToDTD
22
</pre>
23
<hr>
24
<dl>
25
  <dt> public class <b>SubsetToDTD</b>
26
  <dt> extends Object
27
</dl>
28
Converts an external DTD or the DTD in an XML document into a DTD object.
29
 <p>Note that while SubsetToDTD checks for most syntactic errors in the DTD
30
 it does not check for all of them. Thus, results are undetermined if the
31
 DTD is not syntactically correct.</p>
32
<p>
33
<hr>
34
<a name="index"></a>
35
<h2>
36
  <img src="images/constructor-index.gif" width=275 height=38 alt="Constructor Index">
37
</h2>
38
<dl>
39
  <dt> <img src="images/yellow-ball-small.gif" width=6 height=6 alt=" o ">
40
	<a href="#SubsetToDTD()"><b>SubsetToDTD</b></a>()
41
  <dd> Create a new SubsetToDTD object.
42
</dl>
43
<h2>
44
  <img src="images/method-index.gif" width=207 height=38 alt="Method Index">
45
</h2>
46
<dl>
47
  <dt> <img src="images/red-ball-small.gif" width=6 height=6 alt=" o ">
48
	<a href="#convertDocument(org.xml.sax.InputSource, java.util.Hashtable)"><b>convertDocument</b></a>(InputSource, Hashtable)
49
  <dd>  Convert the DTD in an XML document containing an internal subset,
50
 reference to an external subset, or both, into a DTD object.
51
  <dt> <img src="images/red-ball-small.gif" width=6 height=6 alt=" o ">
52
	<a href="#convertExternalSubset(org.xml.sax.InputSource, java.util.Hashtable)"><b>convertExternalSubset</b></a>(InputSource, Hashtable)
53
  <dd>  Convert the DTD in an external subset into a DTD object.
54
</dl>
55
<a name="constructors"></a>
56
<h2>
57
  <img src="images/constructors.gif" width=231 height=38 alt="Constructors">
58
</h2>
59
<a name="SubsetToDTD"></a>
60
<a name="SubsetToDTD()"><img src="images/yellow-ball.gif" width=12 height=12 alt=" o "></a>
61
<b>SubsetToDTD</b>
62
<pre>
63
 public SubsetToDTD()
64
</pre>
65
<dl>
66
  <dd> Create a new SubsetToDTD object.
67
<p>
68
</dl>
69
<a name="methods"></a>
70
<h2>
71
  <img src="images/methods.gif" width=151 height=38 alt="Methods">
72
</h2>
73
<a name="convertDocument(org.xml.sax.InputSource, java.util.Hashtable)"><img src="images/red-ball.gif" width=12 height=12 alt=" o "></a>
74
<a name="convertDocument"><b>convertDocument</b></a>
75
<pre>
76
 public <a href="de.tudarmstadt.ito.schemas.dtd.DTD.html#_top_">DTD</a> convertDocument(InputSource src,
77
                            Hashtable namespaceURIs) throws <a href="de.tudarmstadt.ito.schemas.dtd.DTDException.html#_top_">DTDException</a>, MalformedURLException, IOException, EOFException
78
</pre>
79
<dl>
80
  <dd> Convert the DTD in an XML document containing an internal subset,
81
 reference to an external subset, or both, into a DTD object.
82
<p>
83
  <dd><dl>
84
    <dt> <b>Parameters:</b>
85
    <dd> src - A SAX InputSource for the XML document.
86
    <dd> namespaceURIs - A Hashtable mapping prefixes used in the DTD to
87
  namespace URIs. May be null.
88
    <dt> <b>Returns:</b>
89
    <dd> The DTD object.
90
    <dt> <b>Throws:</b> <a href="de.tudarmstadt.ito.schemas.dtd.DTDException.html#_top_">DTDException</a>
91
    <dd> Thrown if a DTD error is found.
92
    <dt> <b>Throws:</b> EOFException
93
    <dd> Thrown if EOF is reached prematurely.
94
    <dt> <b>Throws:</b> MalformedURLException
95
    <dd> Thrown if a system ID is malformed.
96
    <dt> <b>Throws:</b> IOException
97
    <dd> Thrown if an I/O error occurs.
98
  </dl></dd>
99
</dl>
100
<a name="convertExternalSubset(org.xml.sax.InputSource, java.util.Hashtable)"><img src="images/red-ball.gif" width=12 height=12 alt=" o "></a>
101
<a name="convertExternalSubset"><b>convertExternalSubset</b></a>
102
<pre>
103
 public <a href="de.tudarmstadt.ito.schemas.dtd.DTD.html#_top_">DTD</a> convertExternalSubset(InputSource src,
104
                                  Hashtable namespaceURIs) throws <a href="de.tudarmstadt.ito.schemas.dtd.DTDException.html#_top_">DTDException</a>, MalformedURLException, IOException, EOFException
105
</pre>
106
<dl>
107
  <dd> Convert the DTD in an external subset into a DTD object.
108
<p>
109
  <dd><dl>
110
    <dt> <b>Parameters:</b>
111
    <dd> src - A SAX InputSource for DTD (external subset).
112
    <dd> namespaceURIs - A Hashtable mapping prefixes used in the DTD to
113
  namespace URIs. May be null.
114
    <dt> <b>Returns:</b>
115
    <dd> The DTD object.
116
    <dt> <b>Throws:</b> <a href="de.tudarmstadt.ito.schemas.dtd.DTDException.html#_top_">DTDException</a>
117
    <dd> Thrown if a DTD error is found.
118
    <dt> <b>Throws:</b> EOFException
119
    <dd> Thrown if EOF is reached prematurely.
120
    <dt> <b>Throws:</b> MalformedURLException
121
    <dd> Thrown if a system ID is malformed.
122
    <dt> <b>Throws:</b> IOException
123
    <dd> Thrown if an I/O error occurs.
124
  </dl></dd>
125
</dl>
126
<hr>
127
<pre>
128
<a href="packages.html">All Packages</a>  <a href="tree.html">Class Hierarchy</a>  <a href="Package-de.tudarmstadt.ito.schemas.converters.html">This Package</a>  <a href="de.tudarmstadt.ito.schemas.converters.DTDToDDML.html#_top_">Previous</a>  <a href="Package-de.tudarmstadt.ito.schemas.converters.html">Next</a>  <a href="AllNames.html">Index</a></pre>
129
</body>
130
</html>
0 131

  
xmldbms/docs/de.tudarmstadt.ito.domutils.DocumentFactoryException.html
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
2
<!--NewPage-->
3
<html>
4
<head>
5
<!-- Generated by javadoc on Fri Sep 24 03:23:03 CEST 1999 -->
6
<title>
7
  Class de.tudarmstadt.ito.domutils.DocumentFactoryException
8
</title>
9
</head>
10
<body>
11
<a name="_top_"></a>
12
<pre>
13
<a href="packages.html">All Packages</a>  <a href="tree.html">Class Hierarchy</a>  <a href="Package-de.tudarmstadt.ito.domutils.html">This Package</a>  <a href="Package-de.tudarmstadt.ito.domutils.html">Previous</a>  <a href="Package-de.tudarmstadt.ito.domutils.html">Next</a>  <a href="AllNames.html">Index</a></pre>
14
<hr>
15
<h1>
16
  Class de.tudarmstadt.ito.domutils.DocumentFactoryException
17
</h1>
18
<pre>
19
java.lang.Object
20
   |
21
   +----java.lang.Throwable
22
           |
23
           +----java.lang.Exception
24
                   |
25
                   +----de.tudarmstadt.ito.domutils.DocumentFactoryException
26
</pre>
27
<hr>
28
<dl>
29
  <dt> public class <b>DocumentFactoryException</b>
30
  <dt> extends Exception
31
</dl>
32
Exception thrown by methods in the DocumentFactory interface.
33
<p>
34
<hr>
35
<a name="index"></a>
36
<h2>
37
  <img src="images/constructor-index.gif" width=275 height=38 alt="Constructor Index">
38
</h2>
39
<dl>
40
  <dt> <img src="images/yellow-ball-small.gif" width=6 height=6 alt=" o ">
41
	<a href="#DocumentFactoryException(java.lang.String)"><b>DocumentFactoryException</b></a>(String)
42
  <dd> 
43
</dl>
44
<a name="constructors"></a>
45
<h2>
46
  <img src="images/constructors.gif" width=231 height=38 alt="Constructors">
47
</h2>
48
<a name="DocumentFactoryException"></a>
49
<a name="DocumentFactoryException(java.lang.String)"><img src="images/yellow-ball.gif" width=12 height=12 alt=" o "></a>
50
<b>DocumentFactoryException</b>
51
<pre>
52
 public DocumentFactoryException(String message)
53
</pre>
54
<hr>
55
<pre>
56
<a href="packages.html">All Packages</a>  <a href="tree.html">Class Hierarchy</a>  <a href="Package-de.tudarmstadt.ito.domutils.html">This Package</a>  <a href="Package-de.tudarmstadt.ito.domutils.html">Previous</a>  <a href="Package-de.tudarmstadt.ito.domutils.html">Next</a>  <a href="AllNames.html">Index</a></pre>
57
</body>
58
</html>
0 59

  
xmldbms/docs/de.tudarmstadt.ito.xmldbms.TableMap.html
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
2
<!--NewPage-->
3
<html>
4
<head>
5
<!-- Generated by javadoc on Fri Sep 24 03:23:03 CEST 1999 -->
6
<title>
7
  Class de.tudarmstadt.ito.xmldbms.TableMap
8
</title>
9
</head>
10
<body>
11
<a name="_top_"></a>
12
<pre>
13
<a href="packages.html">All Packages</a>  <a href="tree.html">Class Hierarchy</a>  <a href="Package-de.tudarmstadt.ito.xmldbms.html">This Package</a>  <a href="de.tudarmstadt.ito.xmldbms.Table.html#_top_">Previous</a>  <a href="Package-de.tudarmstadt.ito.xmldbms.html">Next</a>  <a href="AllNames.html">Index</a></pre>
14
<hr>
15
<h1>
16
  Class de.tudarmstadt.ito.xmldbms.TableMap
17
</h1>
18
<pre>
19
java.lang.Object
20
   |
21
   +----de.tudarmstadt.ito.xmldbms.TableMap
22
</pre>
23
<hr>
24
<dl>
25
  <dt> public class <b>TableMap</b>
26
  <dt> extends Object
27
</dl>
28
Maps a table to a class or property; <A HREF="../readme.html#NotForUse">
29
 not for general use</A>.
30
 <P>TableMaps contain all the information necessary to map a table to
31
 a class or property: table information, class (element type) name,
32
 column maps, information about related tables, and so on. Note that
33
 the arrays containing information about related tables (relatedTables,
34
 parentKeyIsCandidate, parentKeys, childKeys, and orderColumns) are read
35
 in parallel and must contain the same number of entries in the same
36
 order.</P>
37
 <P>TableMaps are stored in an array in the Map class and in the
38
 relatedTableMaps hash table in TableMap, which is keyed by table name.</P>
39
<p>
40
<hr>
41
<a name="index"></a>
42
<h2>
43
  <img src="images/variable-index.gif" width=207 height=38 alt="Variable Index">
44
</h2>
45
<dl>
46
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
47
	<a href="#childKeys"><b>childKeys</b></a>
48
  <dd>  An array containing the Columns in each child key used to join the
49
 parent table to the child table (see parentKeyIsCandidate).
50
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
51
	<a href="#columnMaps"><b>columnMaps</b></a>
52
  <dd>  ColumnMaps for each column in the table.
53
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
54
	<a href="#elementType"><b>elementType</b></a>
55
  <dd>  Unprefixed name of the element type to which a class table is
56
 mapped.
57
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
58
	<a href="#orderColumns"><b>orderColumns</b></a>
59
  <dd>  An array containing order Columns and/or nulls.
60
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
61
	<a href="#parentKeyIsCandidate"><b>parentKeyIsCandidate</b></a>
62
  <dd>  An array stating whether the parent table or the child table contains
63
 the candidate key.
64
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
65
	<a href="#parentKeys"><b>parentKeys</b></a>
66
  <dd>  An array containing the Columns in each parent key used to join the
67
 parent table to each child table (see parentKeyIsCandidate).
68
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
69
	<a href="#prefixedElementType"><b>prefixedElementType</b></a>
70
  <dd>  Prefixed name of the element type to which a class table is
71
 mapped.
72
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
73
	<a href="#relatedTables"><b>relatedTables</b></a>
74
  <dd>  An array containing a TableMap for each related property table or
75
 class table.
76
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
77
	<a href="#table"><b>table</b></a>
78
  <dd> Table object of the mapped table.
79
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
80
	<a href="#type"><b>type</b></a>
81
  <dd>  What the table is mapped to: TYPE_CLASSTABLE or TYPE_PROPERTYTABLE.
82
  <dt> <img src="images/blue-ball-small.gif" width=6 height=6 alt=" o ">
83
	<a href="#TYPE_CLASSTABLE"><b>TYPE_CLASSTABLE</b></a>
84
  <dd> Map the table to a class.
85
  <dt> <img src="images/blue-ball-small.gif" width=6 height=6 alt=" o ">
86
	<a href="#TYPE_PROPERTYTABLE"><b>TYPE_PROPERTYTABLE</b></a>
87
  <dd> Map the table to a property.
88
</dl>
89
<h2>
90
  <img src="images/constructor-index.gif" width=275 height=38 alt="Constructor Index">
91
</h2>
92
<dl>
93
  <dt> <img src="images/yellow-ball-small.gif" width=6 height=6 alt=" o ">
94
	<a href="#TableMap()"><b>TableMap</b></a>()
95
  <dd> Construct a TableMap.
96
  <dt> <img src="images/yellow-ball-small.gif" width=6 height=6 alt=" o ">
97
	<a href="#TableMap(de.tudarmstadt.ito.xmldbms.Table, int, java.lang.String, java.lang.String, de.tudarmstadt.ito.xmldbms.ColumnMap[], int)"><b>TableMap</b></a>(Table, int, String, String, ColumnMap[], int)
98
  <dd> Construct and initialize a TableMap.
99
</dl>
100
<a name="variables"></a>
101
<h2>
102
  <img src="images/variables.gif" width=153 height=38 alt="Variables">
103
</h2>
104
<a name="TYPE_CLASSTABLE"><img src="images/blue-ball.gif" width=12 height=12 alt=" o "></a>
105
<b>TYPE_CLASSTABLE</b>
106
<pre>
107
 public static final int TYPE_CLASSTABLE
108
</pre>
109
<dl>
110
  <dd> Map the table to a class.<p>
111
</dl>
112
<a name="TYPE_PROPERTYTABLE"><img src="images/blue-ball.gif" width=12 height=12 alt=" o "></a>
113
<b>TYPE_PROPERTYTABLE</b>
114
<pre>
115
 public static final int TYPE_PROPERTYTABLE
116
</pre>
117
<dl>
118
  <dd> Map the table to a property.<p>
119
</dl>
120
<a name="table"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
121
<b>table</b>
122
<pre>
123
 public <a href="de.tudarmstadt.ito.xmldbms.Table.html#_top_">Table</a> table
124
</pre>
125
<dl>
126
  <dd> Table object of the mapped table.<p>
127
</dl>
128
<a name="type"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
129
<b>type</b>
130
<pre>
131
 public int type
132
</pre>
133
<dl>
134
  <dd> What the table is mapped to: TYPE_CLASSTABLE or TYPE_PROPERTYTABLE.<p>
135
</dl>
136
<a name="elementType"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
137
<b>elementType</b>
138
<pre>
139
 public String elementType
140
</pre>
141
<dl>
142
  <dd> Unprefixed name of the element type to which a class table is
143
 mapped. Null if the table is mapped to a property. In the future,
144
 this and prefixedElementType should probably be replaced by an NSName.<p>
145
  <dd><dl> 
146
    <dt> <b>See Also:</b>
147
    <dd> <a href="de.tudarmstadt.ito.xmldbms.DBMSToDOM.html#usePrefixes(boolean)">usePrefixes</a>
148
  </dl></dd>
149
</dl>
150
<a name="prefixedElementType"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
151
<b>prefixedElementType</b>
152
<pre>
153
 public String prefixedElementType
154
</pre>
155
<dl>
156
  <dd> Prefixed name of the element type to which a class table is
157
 mapped. Null if the table is mapped to a property. In the future,
158
 this and elementType should probably be replaced by an NSName.<p>
159
  <dd><dl> 
160
    <dt> <b>See Also:</b>
161
    <dd> <a href="de.tudarmstadt.ito.xmldbms.DBMSToDOM.html#usePrefixes(boolean)">usePrefixes</a>
162
  </dl></dd>
163
</dl>
164
<a name="columnMaps"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
165
<b>columnMaps</b>
166
<pre>
167
 public <a href="de.tudarmstadt.ito.xmldbms.ColumnMap.html#_top_">ColumnMap</a> columnMaps[]
168
</pre>
169
<dl>
170
  <dd> ColumnMaps for each column in the table.
171
 <P>These must be ordered such that all columns mapped to element types
172
 occur before any columns mapped to attributes of these elements or
173
 PCDATA. This guarantees that, when retrieving data from the database,
174
 the desired element will be available when the attribute column is
175
 processed.</P>
176
 <P>A table mapped to a property can contain only one ColumnMap -- that of
177
 the column containing the property. In the future, if we allow attributes
178
 of element types-as-properties to be stored, then one column map of the
179
 property table would map to an element type and all other column maps
180
 would map to attributes of that element type.</P><p>
181
</dl>
182
<a name="relatedTables"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
183
<b>relatedTables</b>
184
<pre>
185
 public <a href="#_top_">TableMap</a> relatedTables[]
186
</pre>
187
<dl>
188
  <dd> An array containing a TableMap for each related property table or
189
 class table.<p>
190
</dl>
191
<a name="parentKeyIsCandidate"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
192
<b>parentKeyIsCandidate</b>
193
<pre>
194
 public boolean parentKeyIsCandidate[]
195
</pre>
196
<dl>
197
  <dd> An array stating whether the parent table or the child table contains
198
 the candidate key. The parent table is the table described in this
199
 TableMap; the child table is the table described in the TableMap in
200
 relatedTables. The array must match relatedTables in size and order.<p>
201
</dl>
202
<a name="parentKeys"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
203
<b>parentKeys</b>
204
<pre>
205
 public <a href="de.tudarmstadt.ito.xmldbms.Column.html#_top_">Column</a> parentKeys[][]
206
</pre>
207
<dl>
208
  <dd> An array containing the Columns in each parent key used to join the
209
 parent table to each child table (see parentKeyIsCandidate). The
210
 outer array must match relatedTables in size and order.<p>
211
</dl>
212
<a name="childKeys"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
213
<b>childKeys</b>
214
<pre>
215
 public <a href="de.tudarmstadt.ito.xmldbms.Column.html#_top_">Column</a> childKeys[][]
216
</pre>
217
<dl>
218
  <dd> An array containing the Columns in each child key used to join the
219
 parent table to the child table (see parentKeyIsCandidate). The
220
 outer array must match relatedTables in size and order.<p>
221
</dl>
222
<a name="orderColumns"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
223
<b>orderColumns</b>
224
<pre>
225
 public <a href="de.tudarmstadt.ito.xmldbms.Column.html#_top_">Column</a> orderColumns[]
226
</pre>
227
<dl>
228
  <dd> An array containing order Columns and/or nulls. For related class
229
 tables, an entry can be a Column that describes the order in which
230
 the class elements are to be created in the parent element or null
231
 if there is no such column. For related property tables, an entry
232
 is always null, as property order information is stored in the
233
 ColumnMap for the column corresponding to the property.<p>
234
</dl>
235
<a name="constructors"></a>
236
<h2>
237
  <img src="images/constructors.gif" width=231 height=38 alt="Constructors">
238
</h2>
239
<a name="TableMap"></a>
240
<a name="TableMap()"><img src="images/yellow-ball.gif" width=12 height=12 alt=" o "></a>
241
<b>TableMap</b>
242
<pre>
243
 public TableMap()
244
</pre>
245
<dl>
246
  <dd> Construct a TableMap.
247
<p>
248
</dl>
249
<a name="TableMap(de.tudarmstadt.ito.xmldbms.Table, int, java.lang.String, java.lang.String, de.tudarmstadt.ito.xmldbms.ColumnMap[], int)"><img src="images/yellow-ball.gif" width=12 height=12 alt=" o "></a>
250
<b>TableMap</b>
251
<pre>
252
 public TableMap(<a href="de.tudarmstadt.ito.xmldbms.Table.html#_top_">Table</a> table,
253
                 int type,
254
                 String elementType,
255
                 String prefixedElementType,
256
                 <a href="de.tudarmstadt.ito.xmldbms.ColumnMap.html#_top_">ColumnMap</a> columnMaps[],
257
                 int numRelatedTables)
258
</pre>
259
<dl>
260
  <dd> Construct and initialize a TableMap.
261
<p>
262
</dl>
263
<hr>
264
<pre>
265
<a href="packages.html">All Packages</a>  <a href="tree.html">Class Hierarchy</a>  <a href="Package-de.tudarmstadt.ito.xmldbms.html">This Package</a>  <a href="de.tudarmstadt.ito.xmldbms.Table.html#_top_">Previous</a>  <a href="Package-de.tudarmstadt.ito.xmldbms.html">Next</a>  <a href="AllNames.html">Index</a></pre>
266
</body>
267
</html>
0 268

  
xmldbms/docs/de.tudarmstadt.ito.xmldbms.RootTableMap.html
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
2
<!--NewPage-->
3
<html>
4
<head>
5
<!-- Generated by javadoc on Fri Sep 24 03:23:03 CEST 1999 -->
6
<title>
7
  Class de.tudarmstadt.ito.xmldbms.RootTableMap
8
</title>
9
</head>
10
<body>
11
<a name="_top_"></a>
12
<pre>
13
<a href="packages.html">All Packages</a>  <a href="tree.html">Class Hierarchy</a>  <a href="Package-de.tudarmstadt.ito.xmldbms.html">This Package</a>  <a href="de.tudarmstadt.ito.xmldbms.RootClassMap.html#_top_">Previous</a>  <a href="de.tudarmstadt.ito.xmldbms.Table.html#_top_">Next</a>  <a href="AllNames.html">Index</a></pre>
14
<hr>
15
<h1>
16
  Class de.tudarmstadt.ito.xmldbms.RootTableMap
17
</h1>
18
<pre>
19
java.lang.Object
20
   |
21
   +----de.tudarmstadt.ito.xmldbms.RootTableMap
22
</pre>
23
<hr>
24
<dl>
25
  <dt> public class <b>RootTableMap</b>
26
  <dt> extends Object
27
</dl>
28
Provides information needed to retrieve data from root tables beyond
29
 that found in TableMap; <A HREF="../readme.html#NotForUse">not for general
30
 use</A>.
31
<p>
32
<hr>
33
<a name="index"></a>
34
<h2>
35
  <img src="images/variable-index.gif" width=207 height=38 alt="Variable Index">
36
</h2>
37
<dl>
38
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
39
	<a href="#candidateKey"><b>candidateKey</b></a>
40
  <dd> The key used to retrieve data from the table.
41
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
42
	<a href="#ignoredRootType"><b>ignoredRootType</b></a>
43
  <dd>  The unprefixed name of the ignored root element type to be constructed
44
 as a parent of the root table's element type.
45
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
46
	<a href="#orderColumn"><b>orderColumn</b></a>
47
  <dd>  The column used to order column retrieved from the table.
48
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
49
	<a href="#prefixedIgnoredRootType"><b>prefixedIgnoredRootType</b></a>
50
  <dd>  The prefixed name of the ignored root element type to be constructed
51
 as a parent of the root table's element type.
52
  <dt> <img src="images/magenta-ball-small.gif" width=6 height=6 alt=" o ">
53
	<a href="#tableMap"><b>tableMap</b></a>
54
  <dd> TableMap for the root table.
55
</dl>
56
<h2>
57
  <img src="images/constructor-index.gif" width=275 height=38 alt="Constructor Index">
58
</h2>
59
<dl>
60
  <dt> <img src="images/yellow-ball-small.gif" width=6 height=6 alt=" o ">
61
	<a href="#RootTableMap()"><b>RootTableMap</b></a>()
62
  <dd> Construct a RootTableMap with null initial values.
63
  <dt> <img src="images/yellow-ball-small.gif" width=6 height=6 alt=" o ">
64
	<a href="#RootTableMap(de.tudarmstadt.ito.xmldbms.TableMap, java.lang.String, java.lang.String, de.tudarmstadt.ito.xmldbms.Column[], de.tudarmstadt.ito.xmldbms.Column)"><b>RootTableMap</b></a>(TableMap, String, String, Column[], Column)
65
  <dd> Construct a RootTableMap with non-null initial values.
66
</dl>
67
<a name="variables"></a>
68
<h2>
69
  <img src="images/variables.gif" width=153 height=38 alt="Variables">
70
</h2>
71
<a name="tableMap"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
72
<b>tableMap</b>
73
<pre>
74
 public <a href="de.tudarmstadt.ito.xmldbms.TableMap.html#_top_">TableMap</a> tableMap
75
</pre>
76
<dl>
77
  <dd> TableMap for the root table.<p>
78
</dl>
79
<a name="ignoredRootType"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
80
<b>ignoredRootType</b>
81
<pre>
82
 public String ignoredRootType
83
</pre>
84
<dl>
85
  <dd> The unprefixed name of the ignored root element type to be constructed
86
 as a parent of the root table's element type. In the future, this and
87
 prefixedIgnoredRootType should probably be replaced by an NSName.<p>
88
  <dd><dl> 
89
    <dt> <b>See Also:</b>
90
    <dd> <a href="de.tudarmstadt.ito.xmldbms.DBMSToDOM.html#usePrefixes(boolean)">usePrefixes</a>
91
  </dl></dd>
92
</dl>
93
<a name="prefixedIgnoredRootType"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
94
<b>prefixedIgnoredRootType</b>
95
<pre>
96
 public String prefixedIgnoredRootType
97
</pre>
98
<dl>
99
  <dd> The prefixed name of the ignored root element type to be constructed
100
 as a parent of the root table's element type. In the future, this and
101
 ignoredRootType should probably be replaced by an NSName.<p>
102
  <dd><dl> 
103
    <dt> <b>See Also:</b>
104
    <dd> <a href="de.tudarmstadt.ito.xmldbms.DBMSToDOM.html#usePrefixes(boolean)">usePrefixes</a>
105
  </dl></dd>
106
</dl>
107
<a name="candidateKey"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
108
<b>candidateKey</b>
109
<pre>
110
 public <a href="de.tudarmstadt.ito.xmldbms.Column.html#_top_">Column</a> candidateKey[]
111
</pre>
112
<dl>
113
  <dd> The key used to retrieve data from the table.<p>
114
</dl>
115
<a name="orderColumn"><img src="images/magenta-ball.gif" width=12 height=12 alt=" o "></a>
116
<b>orderColumn</b>
117
<pre>
118
 public <a href="de.tudarmstadt.ito.xmldbms.Column.html#_top_">Column</a> orderColumn
119
</pre>
120
<dl>
121
  <dd> The column used to order column retrieved from the table. Null if
122
 there is no order column.<p>
123
</dl>
124
<a name="constructors"></a>
125
<h2>
126
  <img src="images/constructors.gif" width=231 height=38 alt="Constructors">
127
</h2>
128
<a name="RootTableMap"></a>
129
<a name="RootTableMap()"><img src="images/yellow-ball.gif" width=12 height=12 alt=" o "></a>
130
<b>RootTableMap</b>
131
<pre>
132
 public RootTableMap()
133
</pre>
134
<dl>
135
  <dd> Construct a RootTableMap with null initial values.
136
<p>
137
</dl>
138
<a name="RootTableMap(de.tudarmstadt.ito.xmldbms.TableMap, java.lang.String, java.lang.String, de.tudarmstadt.ito.xmldbms.Column[], de.tudarmstadt.ito.xmldbms.Column)"><img src="images/yellow-ball.gif" width=12 height=12 alt=" o "></a>
139
<b>RootTableMap</b>
140
<pre>
141
 public RootTableMap(<a href="de.tudarmstadt.ito.xmldbms.TableMap.html#_top_">TableMap</a> tableMap,
142
                     String ignoredRootType,
143
                     String prefixedIgnoredRootType,
144
                     <a href="de.tudarmstadt.ito.xmldbms.Column.html#_top_">Column</a> candidateKey[],
145
                     <a href="de.tudarmstadt.ito.xmldbms.Column.html#_top_">Column</a> orderColumn)
146
</pre>
147
<dl>
148
  <dd> Construct a RootTableMap with non-null initial values.
149
<p>
150
</dl>
151
<hr>
152
<pre>
153
<a href="packages.html">All Packages</a>  <a href="tree.html">Class Hierarchy</a>  <a href="Package-de.tudarmstadt.ito.xmldbms.html">This Package</a>  <a href="de.tudarmstadt.ito.xmldbms.RootClassMap.html#_top_">Previous</a>  <a href="de.tudarmstadt.ito.xmldbms.Table.html#_top_">Next</a>  <a href="AllNames.html">Index</a></pre>
154
</body>
155
</html>
0 156

  
xmldbms/readme.html
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
            "http://www.w3.org/TR/REC-html40/loose.dtd">
3
<HTML>
4
<HEAD>
5
   <TITLE>XML-DBMS, Version 1.0</TITLE>
6
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
7
</HEAD>
8
<BODY>
9

  
10
<CENTER><H1>XML-DBMS, Version 1.0</H1>
11
<H2>Java Packages for Transferring Data between<BR />XML Documents and Relational Databases</H2>
12

  
13
<P><A HREF="http://www.informatik.tu-darmstadt.de/DVS1/staff/bourret/bourret.htm">Ronald Bourret</A><BR />
14
Technical University of Darmstadt</P></CENTER>
15

  
16
<H2>Contents</H2>
17

  
18
<P>
19
<A HREF="#Overview"/>1.0 Overview</A><BR />
20
<A HREF="#ObjectView"/>2.0 An Object View of an XML Document</A><BR />
21
<A HREF="#Maps"/>3.0 Map Objects, Map Factories, and the XML-DBMS Mapping Language</A><BR />
22
&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#Factories"/>3.1 Map Factories</A><BR />
23
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MapFactory_MapDocument"/>3.1.1 MapFactory_MapDocument</A><BR />
24
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#MapFactory_DTD"/>3.1.2 MapFactory_DTD</A><BR />
25
&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#Lang"/>3.2 The XML-DBMS Mapping Language</A><BR />
26
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#LangSample"/>3.2.1 Sample Documents and Tables</A><BR />
27
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#LangClass"/>3.2.2 Mapping Classes (Element Types) to Tables</A><BR />
28
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#LangProp"/>3.2.3 Mapping Properties (Attributes and Element Types) to Columns</A><BR />
29
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#LangRel"/>3.2.4 Mapping Inter-Class Relationships (Element Hierarchy)</A><BR />
30
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#LangElim"/>3.2.5 Eliminating Unwanted Root Elements</A><BR />
31
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#LangMixed"/>3.2.6 Mapping Mixed Content</A><BR />
32
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#LangNS"/>3.2.7 Using Namespaces</A><BR />
33
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#Nulls"/>3.2.8 Handling Null Values</A><BR />
34
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#DateTime"/>3.2.9 Date, Time, and Timestamp Formats</A><BR />
35
<A HREF="#ToDBMS">4.0 Transferring Data to the Database</A><BR />
36
<A HREF="#ToXML">5.0 Transferring Data to an XML Document</A><BR />
37
<A HREF="#Supported">6.0 Supported Parsers and DOM Implementations</A><BR />
38
&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#Namespaces">6.1 Namespace Support</A><BR />
39
&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#DocumentFactories">6.2 Document Factories</A><BR />
40
<A HREF="#NotForUse">7.0 Classes Not for General Use</A><BR />
41
<A HREF="#Install">8.0 Downloading and Installing XML-DBMS</A><BR />
42
<A HREF="#Install">9.0 Samples</A><BR />
43
&nbsp;&nbsp;&nbsp;<a href="#TransferSample"/>9.1 Transfer</a><br />
44
&nbsp;&nbsp;&nbsp;<a href="#GenerateMapSample"/>9.2 GenerateMap</a><br />
45
&nbsp;&nbsp;&nbsp;<a href="#ConvertSchemaSample"/>9.3 ConvertSchema</a><br />
46
<A HREF="#Tips"/>10.0 Tips and Tricks</A><br />
47
<A HREF="#License">11.0 Licensing and Support</A><BR />
48
</P>
49

  
50
<H2><A NAME="Overview"/>1.0 Overview</H2>
51

  
52
<P>XML-DBMS is a set of Java packages for transferring data between XML documents and relational databases. Programmers use these packages to build systems that transfer data; a sample application can be run from the command line to transfer data between a database and an XML file.</P>
53

  
54
<P>XML-DBMS preserves the hierarchical structure of an XML document, as well as the data (character data and attribute values) in that document. If requested, it also preserves the order in which the children at a given level in the hierarchy appear. (For many data-centric applications, such order is not important and the code runs faster without it.)</P>
55

  
56
<P>Because XML-DBMS seeks to transfer data, not documents, it does not preserve document type declarations, nor does it preserve physical structure such as entity use, CDATA sections, or document encodings. In particular, it does not attempt to implement a document management system on top of a relational database.</P>
57

  
58
<p>For a general discussion of XML and databases, see <a href="http://www.informatik.tu-darmstadt.de/DVS1/staff/bourret/xml/XMLAndDatabases.htm">XML and Databases</a>.</p>
59

  
60
<H2><A NAME="ObjectView"/>2.0 An Object View of an XML Document</H2>
61

  
62
<P>XML-DBMS views an XML document as a tree of objects and then uses an object-relational mapping to map these objects to a relational database. The tree of objects is not, as one might initially guess, the Document Object Model (DOM). The reason for this is that the DOM models the document itself and not the data in the document.</P>
63

  
64
<P>Instead, the tree is constructed by viewing element types as classes, and attributes and PCDATA as properties of those classes. Subordinate element types are viewed as subordinate classes in the tree; that is, an interclass relationship exists between the parent and child classes.</P>
65

  
66
<P>The view of element types as classes is not absolute: element types can also be viewed as properties of their parent element type-as-class. This is most useful when an element type contains only PCDATA. However, it is useful in other cases as well. For example, consider an element type that contains a description written in XHTML. Although this description has subelements such as &lt;B&gt; and &lt;P&gt;, these subelements cannot be meaningfully interpreted on their own and it makes more sense to view the contents of the element type as a single value (property) rather than a class.</P>
67

  
68
<p>For example, in the following XML document, the SalesOrder and Customer element types might be viewed as classes and the OrderDate and Description element types as properties:</p>
69

  
70
<PRE>
71
   &lt;Orders&gt;
72
      &lt;SalesOrder SONumber="12345"&gt;
73
         &lt;Customer CustNumber="543"&gt;
74
            &lt;CustName&gt;ABC Industries&lt;/CustName&gt;
75
            &lt;Street&gt;123 Main St.&lt;/Street&gt;
76
            &lt;City&gt;Chicago&lt;/City&gt;
77
            &lt;State&gt;IL&lt;/State&gt;
78
            &lt;PostCode&gt;60609&lt;/PostCode&gt;
79
         &lt;/Customer&gt;
80
         &lt;OrderDate&gt;981215&lt;/OrderDate&gt;
81
         &lt;Line LineNumber="1"&gt;
82
            &lt;Part PartNumber="123"&gt;
83
               &lt;Description&gt;
84
                  &lt;P&gt;&lt;B&gt;Turkey wrench:&lt;/B&gt;&lt;BR /&gt;
85
                  Stainless steel, one-piece construction,
86
                  lifetime guarantee.&lt;/P&gt;
87
               &lt;/Description&gt;
88
               &lt;Price&gt;9.95&lt;/Price&gt;
89
            &lt;/Part&gt;
90
            &lt;Quantity&gt;10&lt;/Quantity&gt;
91
         &lt;/Line&gt;
92
         &lt;Line LineNumber="2"&gt;
93
            &lt;Part PartNumber="456"&gt;
94
               &lt;Description&gt;
95
                  &lt;P&gt;&lt;B&gt;Stuffing separator:&lt;B&gt;&lt;BR /&gt;
96
                  Aluminum, one-year guarantee.&lt;/P&gt;
97
               &lt;/Description&gt;
98
               &lt;Price&gt;13.27&lt;/Price&gt;
99
            &lt;/Part&gt;
100
            &lt;Quantity&gt;5&lt;/Quantity&gt;
101
         &lt;/Line&gt;
102
      &lt;/SalesOrder&gt;
103
   &lt;/Orders&gt;
104
</PRE>
105

  
106
<P>Exactly how element types, attributes, and PCDATA are viewed is left to the user, who specifies this information, as well now to map the object view to the database, in a Map object.</P>
107

  
108
<H2><A NAME="Maps"/>3.0 Map Objects, Map Factories, and the XML-DBMS Mapping Language</H2>
109

  
110
<P>A Map object declares the object view of the element types, attributes, and PCDATA in an XML document and how this view is mapped to the database. Map objects are opaque. That is, the programmer constructs a Map object with a map factory and passes it to the data transfer classes without calling any of its methods. For example, the following code calls a user-defined function to create a Map from a map document and passes it to the class that transfers data from an XML document to the database:</P>
111

  
112
<PRE>
113
   // Use a user-defined function that calls a map
114
   // factory to create a map. (See section 3.1.)
115
   map = createMap("sales.map", conn1);
116

  
117
   // Set the Map on the DOMToDBMS object.
118
   domToDBMS.setMap(map);
119
</PRE>
120

  
121
<P>The Map can also be set on the constructor.</P>
122

  
123
<P>Note that a Map object can be used multiple times. For example, suppose that a program expects to store four different types of XML documents in the database. It can create the Maps for these documents at start-up, then, as it receives documents to process, pass the appropriate Map to the DOMToDBMS object.</P>
124

  
125
<P><b>Disclaimer:</b>I haven't learned how Java multi-threading works, so the following may not be an issue.</p>
126

  
127
<p>Assuming it is possible for multiple threads to share the same object, multiple threads should not share the same Map. The reason for this is that a Map contains a reference to a Connection object and the data transfer classes (DBMSToDOM and DOMToDBMS) commit transactions on this object. Since Connection.commit() commits all statements open on a given Connection, a commit executed in one data transfer object will commit statements being used by all other data transfer objects sharing the same Map/Connection. This is unlikely to be the desired behavior.</P>
128

  
129
<H3><A NAME="Factories"/>3.1 Map Factories</H3>
130

  
131
<P>Currently, XML-DBMS has a two map factories: one to create Map objects from map documents and one to create Map objects from DTDs and schema documents.
132

  
133
<h4><a name="MapFactory_MapDocument"/>3.1.1 MapFactory_MapDocument</h4>
134

  
135
<p>The MapFactory_MapDocument class creates Map objects from map documents. It is the most commonly used map factory. For example, the following code creates a Map object from the sales.map map document:</P>
136

  
137
<PRE>
138
   // Instantiate a new map factory from a database connection
139
   // and a SAX parser.
140
   factory = new MapFactory_MapDocument(conn, parser);
141

  
142
   // Create a Map from sales.map.
143
   map = factory.createMap(new InputSource(new FileReader("sales.map")));
144
</PRE>
145

  
146
<h4><a name="MapFactory_DTD"/>3.1.2 MapFactory_DTD</h4>
147

  
148
<p>The MapFactory_DTD class creates Map objects from DTDs and XML schema documents. This factory is designed primarily for use as a tool to help build mapping documents. For example, the following code creates a Map object from document.dtd and then serialized that Map object to a file.</p>
149

  
150
<pre>
151
   // Instantiate a new map factory and create a map.
152
   factory = new MapFactory_DTD();
153
   src = new InputSource("file://c:/java/de/tudarmstadt/ito/xmldbms/samples/document.dtd");
154
   map = factory.createMapFromDTD(src, MapFactory_DTD.DTD_EXTERNAL, true, null);<br />
155

  
156
   // Open a FileOutputStream and serialize the Map to that stream.
157
   mapFile = new FileOutputStream("c:\java\de\tudarmstadt\ito\xmldbms\samples\document.map");
158
   map.serialize(mapFile);
159
   mapFile.close();
160
</pre>
161

  
162
<p>Maps created by MapFactory_DTD cannot be used to transfer data until the Map.setConnection method has been called to specify a JDBC Connection.</p>
163

  
164
<p>MapFactory_DTD supports DTDs in two forms: either an external subset -- that is, a stand-alone DTD file -- or an XML document containing an internal subset, reference to an external subset, or both. Currently, the only schema language it supports is <a href="http://www.w3.org/TR/NOTE-ddml">DDML (Data Definition Markup Language)</a>. If you need to use another schema language, such as <a href="http://www.w3.org/TR/NOTE-dcd">DCD (Document Content Description for XML)</a>, <a href="http://www.w3.org/TR/NOTE-SOX/">SOX (Schema for Object-Oriented XML)</a>, the <a href="http://www.w3.org/TR/xmlschema-1/">W3C's XML Schema language</a>, or <a href="http://www.ltg.ed.ac.uk/~ht/XMLData-Reduced.htm">XML-Data Reduced</a>, you will need to write a conversion module similar to de.tudarmstadt.ito.schemas.converters.DDMLToDTD.</p>
165

  
166
<H3><A NAME="Lang"/>3.2 The XML-DBMS Mapping Language</H3>
167

  
168
<P>The XML-DBMS mapping language is a simple, XML-based language that describes both how to construct an object view for an XML document and how to map this view to a relational schema. We will introduce the main parts of the language in a series of examples. For complete information, see the <A HREF="xmldbms.dtd">XML-DBMS DTD</A>.</P>
169

  
170
<H4><A NAME="LangSample"/>3.2.1 Sample Documents and Tables</H4>
171

  
172
<P>The examples use the sales language shown in <a href="#ObjectView">section 2.0</a>, the document language shown in figure 1, and the tables shown in figures 2 and 3.</p>
173

  
174
<hr />
175

  
176
<P><B>&nbsp;&nbsp;&nbsp;Figure 1: Sample document in Document language:</B></P>
177

  
178
<PRE>
179
   &lt;!DOCTYPE Product SYSTEM "document.dtd"&gt;
180

  
181
   &lt;Product&gt;
182

  
183
   &lt;Name&gt;XML-DBMS&lt;/Name&gt;
184

  
185
   &lt;Developer&gt;Ronald Bourret, Technical University of Darmstadt&lt;/Developer&gt;
186

  
187
   &lt;Summary&gt;Java packages for transferring data between
188
   XML documents and relational databases&lt;/Summary&gt;
189

  
190
   &lt;Description&gt;
191

  
192
   &lt;Para&gt;XML-DBMS is a set of Java packages for transferring data between
193
   XML documents and relational databases. It views the XML document as a tree
194
   of objects in which element types are generally viewed as classes and
195
   attributes and PCDATA as properties of those classes. It then uses an object-
196
   relational mapping to map these objects to the database. An XML-based mapping
197
   language is used to define the view and map it to the database.&lt;/Para&gt;
198
   
199
   &lt;Para&gt;You can:&lt;/Para&gt;
200
   
201
   &lt;List&gt;
202
   &lt;Item&gt;&lt;Link URL="readme.html"&gt;Read more about XML-DBMS&lt;/Link&gt;&lt;/Item&gt;
203
   &lt;Item&gt;&lt;Link URL="XMLAndDatabases.htm"&gt;Read more about databases and XML&lt;/Link&gt;&lt;/Item&gt;
204
   &lt;Item&gt;&lt;Link URL="xmldbms.dtd"&gt;View the mapping language DTD&lt;/Link&gt;&lt;/Item&gt;
205
   &lt;Item&gt;&lt;Link URL="xmldbms.zip"&gt;Download XML-DBMS&lt;/Link&gt;&lt;/Item&gt;
206
   &lt;/List&gt;
207
   
208
   &lt;Para&gt;XML-DBMS, along with its source code, is freely available for use
209
   in both commercial and non-commercial settings.&lt;/Para&gt;
210
   
211
   &lt;/Description&gt;
212
   
213
</PRE>
214

  
215
<hr />
216

  
217
<P><B>&nbsp;&nbsp;&nbsp;Figure 2: Sales data tables:</B></P>
218

  
219
<TABLE>
220
  <TR>
221
   <TH>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TH>
222
   <TH ALIGN=LEFT>Sales</TH>
223
   <TH>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TH>
224
   <TH ALIGN=LEFT>Lines</TH>
225
   <TH>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TH>
226
   <TH ALIGN=LEFT>Customers</TH>
227
   <TH>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TH>
228
   <TH ALIGN=LEFT>Parts</TH>
229
  </TR>
230
  <TR>
231
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
232
   <TD>Number</TD>
233
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
234
   <TD>SONumber</TD>
235
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
236
   <TD>Number</TD>
237
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
238
   <TD>Number</TD>
239
  </TR>
240
  <TR>
241
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
242
   <TD>CustNumber</TD>
243
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
244
   <TD>Number</TD>
245
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
246
   <TD>Name</TD>
247
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
248
   <TD>Description</TD>
249
  </TR>
250
  <TR>
251
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
252
   <TD>Date</TD>
253
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
254
   <TD>Part</TD>
255
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
256
   <TD>Street</TD>
257
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
258
   <TD>Price</TD>
259
  </TR>
260
  <TR>
261
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
262
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
263
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
264
   <TD>Quantity</TD>
265
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
266
   <TD>City</TD>
267
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
268
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
269
  </TR>
270
  <TR>
271
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
272
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
273
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
274
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
275
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
276
   <TD>State</TD>
277
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
278
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
279
  </TR>
280
  <TR>
281
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
282
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
283
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
284
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
285
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
286
   <TD>Country</TD>
287
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
288
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
289
  </TR>
290
  <TR>
291
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
292
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
293
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
294
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
295
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
296
   <TD>PostalCode</TD>
297
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
298
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
299
  </TR>
300
</TABLE>
301

  
302
<hr />
303

  
304
<P><B>&nbsp;&nbsp;&nbsp;Figure 3: Document data tables:</B></P>
305

  
306
<TABLE>
307
  <TR>
308
   <TH>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TH>
309
   <TH ALIGN=LEFT>Product</TH>
310
   <TH>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TH>
311
   <TH ALIGN=LEFT>Description</TH>
312
   <TH>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TH>
313
   <TH ALIGN=LEFT>Para</TH>
314
   <TH>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TH>
315
   <TH ALIGN=LEFT>ParaPCDATA</TH>
316
  </TR>
317
  <TR>
318
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
319
   <TD>ProductID</TD>
320
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
321
   <TD>ProductID</TD>
322
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
323
   <TD>DescriptionID</TD>
324
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
325
   <TD>ParaID</TD>
326
  </TR>
327
  <TR>
328
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
329
   <TD>ProductOrder</TD>
330
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
331
   <TD>DescriptionID</TD>
332
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
333
   <TD>ParaID</TD>
334
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
335
   <TD>ParaPCDATA</TD>
336
  </TR>
337
  <TR>
338
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
339
   <TD>Name</TD>
340
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
341
   <TD>DescriptionOrder</TD>
342
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
343
   <TD>ParaOrder</TD>
344
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
345
   <TD>ParaPCDATAOrder</TD>
346
  </TR>
347
  <TR>
348
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
349
   <TD>NameOrder</TD>
350
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
351
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
352
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
353
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
354
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
355
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
356
  </TR>
357
  <TR>
358
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
359
   <TD>Developer</TD>
360
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
361
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
362
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
363
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
364
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
365
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
366
  </TR>
367
  <TR>
368
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
369
   <TD>DeveloperOrder</TD>
370
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
371
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
372
   <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff