Revision 14
Added by Matt Jones almost 25 years ago
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 |
<SalesOrder> |
|
28 |
<Number>123</Number> |
|
29 |
<Customer> |
|
30 |
<Name>ABC Industries</Name> |
|
31 |
<Address>123 Main St., Chicago</Address> |
|
32 |
</Customer> |
|
33 |
</SalesOrder> |
|
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 "a<b", how should the < character be serialized? If it is serialized as a < 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 &lt;, the data in the database cannot be searched for the expected text, but must instead be searched for the &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 |
<A HREF="#Factories"/>3.1 Map Factories</A><BR /> |
|
23 |
<a href="#MapFactory_MapDocument"/>3.1.1 MapFactory_MapDocument</A><BR /> |
|
24 |
<a href="#MapFactory_DTD"/>3.1.2 MapFactory_DTD</A><BR /> |
|
25 |
<A HREF="#Lang"/>3.2 The XML-DBMS Mapping Language</A><BR /> |
|
26 |
<A HREF="#LangSample"/>3.2.1 Sample Documents and Tables</A><BR /> |
|
27 |
<A HREF="#LangClass"/>3.2.2 Mapping Classes (Element Types) to Tables</A><BR /> |
|
28 |
<A HREF="#LangProp"/>3.2.3 Mapping Properties (Attributes and Element Types) to Columns</A><BR /> |
|
29 |
<A HREF="#LangRel"/>3.2.4 Mapping Inter-Class Relationships (Element Hierarchy)</A><BR /> |
|
30 |
<A HREF="#LangElim"/>3.2.5 Eliminating Unwanted Root Elements</A><BR /> |
|
31 |
<A HREF="#LangMixed"/>3.2.6 Mapping Mixed Content</A><BR /> |
|
32 |
<A HREF="#LangNS"/>3.2.7 Using Namespaces</A><BR /> |
|
33 |
<A HREF="#Nulls"/>3.2.8 Handling Null Values</A><BR /> |
|
34 |
<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 |
<A HREF="#Namespaces">6.1 Namespace Support</A><BR /> |
|
39 |
<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 |
<a href="#TransferSample"/>9.1 Transfer</a><br /> |
|
44 |
<a href="#GenerateMapSample"/>9.2 GenerateMap</a><br /> |
|
45 |
<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 <B> and <P>, 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 |
<Orders> |
|
72 |
<SalesOrder SONumber="12345"> |
|
73 |
<Customer CustNumber="543"> |
|
74 |
<CustName>ABC Industries</CustName> |
|
75 |
<Street>123 Main St.</Street> |
|
76 |
<City>Chicago</City> |
|
77 |
<State>IL</State> |
|
78 |
<PostCode>60609</PostCode> |
|
79 |
</Customer> |
|
80 |
<OrderDate>981215</OrderDate> |
|
81 |
<Line LineNumber="1"> |
|
82 |
<Part PartNumber="123"> |
|
83 |
<Description> |
|
84 |
<P><B>Turkey wrench:</B><BR /> |
|
85 |
Stainless steel, one-piece construction, |
|
86 |
lifetime guarantee.</P> |
|
87 |
</Description> |
|
88 |
<Price>9.95</Price> |
|
89 |
</Part> |
|
90 |
<Quantity>10</Quantity> |
|
91 |
</Line> |
|
92 |
<Line LineNumber="2"> |
|
93 |
<Part PartNumber="456"> |
|
94 |
<Description> |
|
95 |
<P><B>Stuffing separator:<B><BR /> |
|
96 |
Aluminum, one-year guarantee.</P> |
|
97 |
</Description> |
|
98 |
<Price>13.27</Price> |
|
99 |
</Part> |
|
100 |
<Quantity>5</Quantity> |
|
101 |
</Line> |
|
102 |
</SalesOrder> |
|
103 |
</Orders> |
|
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> Figure 1: Sample document in Document language:</B></P> |
|
177 |
|
|
178 |
<PRE> |
|
179 |
<!DOCTYPE Product SYSTEM "document.dtd"> |
|
180 |
|
|
181 |
<Product> |
|
182 |
|
|
183 |
<Name>XML-DBMS</Name> |
|
184 |
|
|
185 |
<Developer>Ronald Bourret, Technical University of Darmstadt</Developer> |
|
186 |
|
|
187 |
<Summary>Java packages for transferring data between |
|
188 |
XML documents and relational databases</Summary> |
|
189 |
|
|
190 |
<Description> |
|
191 |
|
|
192 |
<Para>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.</Para> |
|
198 |
|
|
199 |
<Para>You can:</Para> |
|
200 |
|
|
201 |
<List> |
|
202 |
<Item><Link URL="readme.html">Read more about XML-DBMS</Link></Item> |
|
203 |
<Item><Link URL="XMLAndDatabases.htm">Read more about databases and XML</Link></Item> |
|
204 |
<Item><Link URL="xmldbms.dtd">View the mapping language DTD</Link></Item> |
|
205 |
<Item><Link URL="xmldbms.zip">Download XML-DBMS</Link></Item> |
|
206 |
</List> |
|
207 |
|
|
208 |
<Para>XML-DBMS, along with its source code, is freely available for use |
|
209 |
in both commercial and non-commercial settings.</Para> |
|
210 |
|
|
211 |
</Description> |
|
212 |
|
|
213 |
</PRE> |
|
214 |
|
|
215 |
<hr /> |
|
216 |
|
|
217 |
<P><B> Figure 2: Sales data tables:</B></P> |
|
218 |
|
|
219 |
<TABLE> |
|
220 |
<TR> |
|
221 |
<TH> </TH> |
|
222 |
<TH ALIGN=LEFT>Sales</TH> |
|
223 |
<TH> </TH> |
|
224 |
<TH ALIGN=LEFT>Lines</TH> |
|
225 |
<TH> </TH> |
|
226 |
<TH ALIGN=LEFT>Customers</TH> |
|
227 |
<TH> </TH> |
|
228 |
<TH ALIGN=LEFT>Parts</TH> |
|
229 |
</TR> |
|
230 |
<TR> |
|
231 |
<TD> </TD> |
|
232 |
<TD>Number</TD> |
|
233 |
<TD> </TD> |
|
234 |
<TD>SONumber</TD> |
|
235 |
<TD> </TD> |
|
236 |
<TD>Number</TD> |
|
237 |
<TD> </TD> |
|
238 |
<TD>Number</TD> |
|
239 |
</TR> |
|
240 |
<TR> |
|
241 |
<TD> </TD> |
|
242 |
<TD>CustNumber</TD> |
|
243 |
<TD> </TD> |
|
244 |
<TD>Number</TD> |
|
245 |
<TD> </TD> |
|
246 |
<TD>Name</TD> |
|
247 |
<TD> </TD> |
|
248 |
<TD>Description</TD> |
|
249 |
</TR> |
|
250 |
<TR> |
|
251 |
<TD> </TD> |
|
252 |
<TD>Date</TD> |
|
253 |
<TD> </TD> |
|
254 |
<TD>Part</TD> |
|
255 |
<TD> </TD> |
|
256 |
<TD>Street</TD> |
|
257 |
<TD> </TD> |
|
258 |
<TD>Price</TD> |
|
259 |
</TR> |
|
260 |
<TR> |
|
261 |
<TD> </TD> |
|
262 |
<TD> </TD> |
|
263 |
<TD> </TD> |
|
264 |
<TD>Quantity</TD> |
|
265 |
<TD> </TD> |
|
266 |
<TD>City</TD> |
|
267 |
<TD> </TD> |
|
268 |
<TD> </TD> |
|
269 |
</TR> |
|
270 |
<TR> |
|
271 |
<TD> </TD> |
|
272 |
<TD> </TD> |
|
273 |
<TD> </TD> |
|
274 |
<TD> </TD> |
|
275 |
<TD> </TD> |
|
276 |
<TD>State</TD> |
|
277 |
<TD> </TD> |
|
278 |
<TD> </TD> |
|
279 |
</TR> |
|
280 |
<TR> |
|
281 |
<TD> </TD> |
|
282 |
<TD> </TD> |
|
283 |
<TD> </TD> |
|
284 |
<TD> </TD> |
|
285 |
<TD> </TD> |
|
286 |
<TD>Country</TD> |
|
287 |
<TD> </TD> |
|
288 |
<TD> </TD> |
|
289 |
</TR> |
|
290 |
<TR> |
|
291 |
<TD> </TD> |
|
292 |
<TD> </TD> |
|
293 |
<TD> </TD> |
|
294 |
<TD> </TD> |
|
295 |
<TD> </TD> |
|
296 |
<TD>PostalCode</TD> |
|
297 |
<TD> </TD> |
|
298 |
<TD> </TD> |
|
299 |
</TR> |
|
300 |
</TABLE> |
|
301 |
|
|
302 |
<hr /> |
|
303 |
|
|
304 |
<P><B> Figure 3: Document data tables:</B></P> |
|
305 |
|
|
306 |
<TABLE> |
|
307 |
<TR> |
|
308 |
<TH> </TH> |
|
309 |
<TH ALIGN=LEFT>Product</TH> |
|
310 |
<TH> </TH> |
|
311 |
<TH ALIGN=LEFT>Description</TH> |
|
312 |
<TH> </TH> |
|
313 |
<TH ALIGN=LEFT>Para</TH> |
|
314 |
<TH> </TH> |
|
315 |
<TH ALIGN=LEFT>ParaPCDATA</TH> |
|
316 |
</TR> |
|
317 |
<TR> |
|
318 |
<TD> </TD> |
|
319 |
<TD>ProductID</TD> |
|
320 |
<TD> </TD> |
|
321 |
<TD>ProductID</TD> |
|
322 |
<TD> </TD> |
|
323 |
<TD>DescriptionID</TD> |
|
324 |
<TD> </TD> |
|
325 |
<TD>ParaID</TD> |
|
326 |
</TR> |
|
327 |
<TR> |
|
328 |
<TD> </TD> |
|
329 |
<TD>ProductOrder</TD> |
|
330 |
<TD> </TD> |
|
331 |
<TD>DescriptionID</TD> |
|
332 |
<TD> </TD> |
|
333 |
<TD>ParaID</TD> |
|
334 |
<TD> </TD> |
|
335 |
<TD>ParaPCDATA</TD> |
|
336 |
</TR> |
|
337 |
<TR> |
|
338 |
<TD> </TD> |
|
339 |
<TD>Name</TD> |
|
340 |
<TD> </TD> |
|
341 |
<TD>DescriptionOrder</TD> |
|
342 |
<TD> </TD> |
|
343 |
<TD>ParaOrder</TD> |
|
344 |
<TD> </TD> |
|
345 |
<TD>ParaPCDATAOrder</TD> |
|
346 |
</TR> |
|
347 |
<TR> |
|
348 |
<TD> </TD> |
|
349 |
<TD>NameOrder</TD> |
|
350 |
<TD> </TD> |
|
351 |
<TD> </TD> |
|
352 |
<TD> </TD> |
|
353 |
<TD> </TD> |
|
354 |
<TD> </TD> |
|
355 |
<TD> </TD> |
|
356 |
</TR> |
|
357 |
<TR> |
|
358 |
<TD> </TD> |
|
359 |
<TD>Developer</TD> |
|
360 |
<TD> </TD> |
|
361 |
<TD> </TD> |
|
362 |
<TD> </TD> |
|
363 |
<TD> </TD> |
|
364 |
<TD> </TD> |
|
365 |
<TD> </TD> |
|
366 |
</TR> |
|
367 |
<TR> |
|
368 |
<TD> </TD> |
|
369 |
<TD>DeveloperOrder</TD> |
|
370 |
<TD> </TD> |
|
371 |
<TD> </TD> |
|
372 |
<TD> </TD> |
Also available in: Unified diff
added Ron Bourret's xmldbms package for loading xml documents into databases