[Zodb-checkins] CVS: ZODB3/Doc/zodb - about.html:1.2.6.20 contents.html:1.2.6.20 img1.png:1.1.2.3 index.html:1.2.6.20 node2.html:1.2.6.20 node3.html:1.2.6.20 node5.html:1.2.6.20 node6.html:1.2.6.20 node7.html:1.2.6.20 node8.html:1.2.6.20 zeo.html:1.2.6.20 zodb.css:1.2.6.5 zodb.html:1.2.6.20

Fred L. Drake, Jr. fdrake at gmail.com
Wed Apr 27 15:08:21 EDT 2005


Update of /cvs-repository/ZODB3/Doc/zodb
In directory cvs.zope.org:/tmp/cvs-serv21024/zodb

Modified Files:
      Tag: Zope-2_7-branch
	about.html contents.html img1.png index.html node2.html 
	node3.html node5.html node6.html node7.html node8.html 
	zeo.html zodb.css zodb.html 
Log Message:
updated doc build


=== ZODB3/Doc/zodb/about.html 1.2.6.19 => 1.2.6.20 ===
--- ZODB3/Doc/zodb/about.html:1.2.6.19	Tue Apr 26 16:05:59 2005
+++ ZODB3/Doc/zodb/about.html	Wed Apr 27 15:08:21 2005
@@ -2,52 +2,41 @@
 <html>
 <head>
 <link rel="STYLESHEET" href="zodb.css" type='text/css' />
-<link rel="first" href="zodb.html" title='ZODB/ZEO Programming Guide' />
+<link rel="first" href="zodb.html" title='ZODB/ZEO programming Guide' />
 <link rel='contents' href='contents.html' title="Contents" />
 <link rel='last' href='about.html' title='About this document...' />
 <link rel='help' href='about.html' title='About this document...' />
 <link rel="prev" href="node8.html" />
 <link rel="parent" href="zodb.html" />
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name='aesop' content='information' />
 <title>About this document ...</title>
 </head>
 <body>
-<DIV CLASS="navigation">
+<div class="page-wrapper">
+<div class="navigation">
 <div id='top-navigation-panel' xml:id='top-navigation-panel'>
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="B. GNU Free Documentation"
-  href="node8.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="node8.html">B. GNU Free Documentation</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="B. gnu Free Documentation"
+        href="node8.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='spacer'></div>
+</div>
 </div>
-<hr /></div>
-</DIV>
 <!--End of Navigation Panel-->
 
-<H1><A NAME="SECTION000900000000000000000">
-About this document ...</A>
-</H1>
+<h1><a name="SECTION000900000000000000000">
+About this document ...</a>
+</h1>
  <strong>ZODB/ZEO Programming Guide</strong>,
-April 26, 2005, Release 3.2.7
+27 April 2005, Release 3.2.8
 <p> This document was generated using the <a
     href="http://saftsack.fs.uni-bayreuth.de/~latex2ht/">
     <strong>LaTeX</strong>2<tt>HTML</tt></a> translator.
@@ -73,39 +62,34 @@
   Petrilli.
 </p>
 
-<DIV CLASS="navigation">
-<div class='online-navigation'>
-<p></p><hr />
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="B. GNU Free Documentation"
-  href="node8.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="node8.html">B. GNU Free Documentation</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
+<div class="navigation">
+<div id='bot-navigation-panel' xml:id='bot-navigation-panel'
+     class='online-navigation'>
+  <div class='spacer'></div>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="B. gnu Free Documentation"
+        href="node8.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='online-navigation text-links'>
+    Previous: <a rel="prev"      href="node8.html">B. GNU Free Documentation</a>
+    Up: <a rel="parent"      href="zodb.html">ZODB/ZEO Programming Guide</a>
+  </div>
+</div>
+<div class='spacer'></div>
+<span class="release-info">Documentation released on 27 April 2005.</span>
+<address>See <i><a href="about.html">About this document...</a></i>
+for information on suggesting changes.</address>
 </div>
 </div>
-<hr />
-<span class="release-info">Release 3.2.7, documentation updated on April 26, 2005.</span>
-</DIV>
 <!--End of Navigation Panel-->
 
-</BODY>
-</HTML>
+</div> <!-- page-wrapper -->
+</body>
+</html>


=== ZODB3/Doc/zodb/contents.html 1.2.6.19 => 1.2.6.20 ===
--- ZODB3/Doc/zodb/contents.html:1.2.6.19	Tue Apr 26 16:05:59 2005
+++ ZODB3/Doc/zodb/contents.html	Wed Apr 27 15:08:21 2005
@@ -2,110 +2,100 @@
 <html>
 <head>
 <link rel="STYLESHEET" href="zodb.css" type='text/css' />
-<link rel="first" href="zodb.html" title='ZODB/ZEO Programming Guide' />
+<link rel="first" href="zodb.html" title='ZODB/ZEO programming Guide' />
 <link rel='contents' href='contents.html' title="Contents" />
 <link rel='last' href='about.html' title='About this document...' />
 <link rel='help' href='about.html' title='About this document...' />
-<link rel="next" href="node2.html" />
 <link rel="prev" href="zodb.html" />
 <link rel="parent" href="zodb.html" />
 <link rel="next" href="node2.html" />
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name='aesop' content='information' />
 <title>Contents</title>
 </head>
 <body>
-<DIV CLASS="navigation">
+<div class="page-wrapper">
+<div class="navigation">
 <div id='top-navigation-panel' xml:id='top-navigation-panel'>
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="1 Introduction"
-  href="node2.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="node2.html">1 Introduction</A>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="1 Introduction"
+        href="node2.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='spacer'></div>
+</div>
 </div>
-<hr /></div>
-</DIV>
 <!--End of Navigation Panel-->
-<BR><h2><A NAME="SECTION000100000000000000000">
-Contents</A>
+<br><h2><a name="SECTION000100000000000000000">
+Contents</a>
 </h2>
 <!--Table of Contents-->
 
-<UL CLASS="TofC">
-<LI><A href="node2.html">1 Introduction</a>
-<UL>
-<LI><A href="node2.html#SECTION000210000000000000000">1.1 What is the ZODB?</a>
-<LI><A href="node2.html#SECTION000220000000000000000">1.2 OODBs vs. Relational DBs</a>
-<LI><A href="node2.html#SECTION000230000000000000000">1.3 What is ZEO?</a>
-<LI><A href="node2.html#SECTION000240000000000000000">1.4 About this guide</a>
-<LI><A href="node2.html#SECTION000250000000000000000">1.5 Acknowledgements</a>
-</ul>
-<LI><A href="node3.html">2 ZODB Programming</a>
-<UL>
-<LI><A href="node3.html#SECTION000310000000000000000">2.1 Installing ZODB</a>
-<LI><A href="node3.html#SECTION000320000000000000000">2.2 How ZODB Works</a>
-<LI><A href="node3.html#SECTION000330000000000000000">2.3 Opening a ZODB</a>
-<LI><A href="node3.html#SECTION000340000000000000000">2.4 Writing a Persistent Class</a>
-<LI><A href="node3.html#SECTION000350000000000000000">2.5 Rules for Writing Persistent Classes</a>
-<LI><A href="node3.html#SECTION000360000000000000000">2.6 Writing Persistent Classes</a>
-</ul>
-<LI><A href="zeo.html">3 ZEO</a>
-<UL>
-<LI><A href="zeo.html#SECTION000410000000000000000">3.1 How ZEO Works</a>
-<LI><A href="zeo.html#SECTION000420000000000000000">3.2 Installing ZEO</a>
-<LI><A href="zeo.html#SECTION000430000000000000000">3.3 Testing the ZEO Installation</a>
-<LI><A href="zeo.html#SECTION000440000000000000000">3.4 ZEO Programming Notes</a>
-<LI><A href="zeo.html#SECTION000450000000000000000">3.5 Sample Application: chatter.py</a>
-</ul>
-<LI><A href="node5.html">4 Transactions and Versioning</a>
-<UL>
-<LI><A href="node5.html#SECTION000510000000000000000">4.1 Subtransactions</a>
-<LI><A href="node5.html#SECTION000520000000000000000">4.2 Undoing Changes</a>
-<LI><A href="node5.html#SECTION000530000000000000000">4.3 Versions</a>
-<LI><A href="node5.html#SECTION000540000000000000000">4.4 Multithreaded ZODB Programs</a>
-</ul>
-<LI><A href="node6.html">5 Related Modules</a>
-<UL>
-<LI><A href="node6.html#SECTION000610000000000000000">5.1 ZODB.PersistentMapping</a>
-<LI><A href="node6.html#SECTION000620000000000000000">5.2 ZODB.PersistentList</a>
-<LI><A href="node6.html#SECTION000630000000000000000">5.3 BTrees Package</a>
-</ul>
-<LI><A href="node7.html">A. Resources</a>
-<LI><A href="node8.html">B. GNU Free Documentation License</a>
-<UL>
-<LI><A href="node8.html#SECTION000820000000000000000">B..1 Applicability and Definitions</a>
-<LI><A href="node8.html#SECTION000830000000000000000">B..2 Verbatim Copying</a>
-<LI><A href="node8.html#SECTION000840000000000000000">B..3 Copying in Quantity</a>
-<LI><A href="node8.html#SECTION000850000000000000000">B..4 Modifications</a>
-<LI><A href="node8.html#SECTION000860000000000000000">B..5 Combining Documents</a>
-<LI><A href="node8.html#SECTION000870000000000000000">B..6 Collections of Documents</a>
-<LI><A href="node8.html#SECTION000880000000000000000">B..7 Aggregation With Independent Works</a>
-<LI><A href="node8.html#SECTION000890000000000000000">B..8 Translation</a>
-<LI><A href="node8.html#SECTION0008100000000000000000">B..9 Termination</a>
-<LI><A href="node8.html#SECTION0008110000000000000000">B..10 Future Revisions of This Licence</a>
-</ul></ul>
+<ul class="TofC">
+<li><a href="node2.html">1 Introduction</a>
+<ul>
+<li><a href="node2.html#SECTION000210000000000000000">1.1 What is the ZODB?</a>
+<li><a href="node2.html#SECTION000220000000000000000">1.2 OODBs vs. Relational DBs</a>
+<li><a href="node2.html#SECTION000230000000000000000">1.3 What is ZEO?</a>
+<li><a href="node2.html#SECTION000240000000000000000">1.4 About this guide</a>
+<li><a href="node2.html#SECTION000250000000000000000">1.5 Acknowledgements</a>
+</ul>
+<li><a href="node3.html">2 ZODB Programming</a>
+<ul>
+<li><a href="node3.html#SECTION000310000000000000000">2.1 Installing ZODB</a>
+<li><a href="node3.html#SECTION000320000000000000000">2.2 How ZODB Works</a>
+<li><a href="node3.html#SECTION000330000000000000000">2.3 Opening a ZODB</a>
+<li><a href="node3.html#SECTION000340000000000000000">2.4 Writing a Persistent Class</a>
+<li><a href="node3.html#SECTION000350000000000000000">2.5 Rules for Writing Persistent Classes</a>
+<li><a href="node3.html#SECTION000360000000000000000">2.6 Writing Persistent Classes</a>
+</ul>
+<li><a href="zeo.html">3 ZEO</a>
+<ul>
+<li><a href="zeo.html#SECTION000410000000000000000">3.1 How ZEO Works</a>
+<li><a href="zeo.html#SECTION000420000000000000000">3.2 Installing ZEO</a>
+<li><a href="zeo.html#SECTION000430000000000000000">3.3 Testing the ZEO Installation</a>
+<li><a href="zeo.html#SECTION000440000000000000000">3.4 ZEO Programming Notes</a>
+<li><a href="zeo.html#SECTION000450000000000000000">3.5 Sample Application: chatter.py</a>
+</ul>
+<li><a href="node5.html">4 Transactions and Versioning</a>
+<ul>
+<li><a href="node5.html#SECTION000510000000000000000">4.1 Subtransactions</a>
+<li><a href="node5.html#SECTION000520000000000000000">4.2 Undoing Changes</a>
+<li><a href="node5.html#SECTION000530000000000000000">4.3 Versions</a>
+<li><a href="node5.html#SECTION000540000000000000000">4.4 Multithreaded ZODB Programs</a>
+</ul>
+<li><a href="node6.html">5 Related Modules</a>
+<ul>
+<li><a href="node6.html#SECTION000610000000000000000">5.1 ZODB.PersistentMapping</a>
+<li><a href="node6.html#SECTION000620000000000000000">5.2 ZODB.PersistentList</a>
+<li><a href="node6.html#SECTION000630000000000000000">5.3 BTrees Package</a>
+</ul>
+<li><a href="node7.html">A. Resources</a>
+<li><a href="node8.html">B. GNU Free Documentation License</a>
+<ul>
+<li><a href="node8.html#SECTION000810000000000000000">Preamble</a>
+<li><a href="node8.html#SECTION000820000000000000000">B..1 Applicability and Definitions</a>
+<li><a href="node8.html#SECTION000830000000000000000">B..2 Verbatim Copying</a>
+<li><a href="node8.html#SECTION000840000000000000000">B..3 Copying in Quantity</a>
+<li><a href="node8.html#SECTION000850000000000000000">B..4 Modifications</a>
+<li><a href="node8.html#SECTION000860000000000000000">B..5 Combining Documents</a>
+<li><a href="node8.html#SECTION000870000000000000000">B..6 Collections of Documents</a>
+<li><a href="node8.html#SECTION000880000000000000000">B..7 Aggregation With Independent Works</a>
+<li><a href="node8.html#SECTION000890000000000000000">B..8 Translation</a>
+<li><a href="node8.html#SECTION0008100000000000000000">B..9 Termination</a>
+<li><a href="node8.html#SECTION0008110000000000000000">B..10 Future Revisions of This Licence</a>
+<li><a href="node8.html#SECTION0008120000000000000000">ADDENDUM: How to use this License for your documents</a>
+</ul>
+<li><a href="about.html">About this document ...</a>
+</ul>
 <!--End of Table of Contents-->
-<P>
+<p>
 &#169;Copyright 2002 A.M. Kuchling.
       Permission is granted to copy, distribute and/or modify this document
       under the terms of the GNU Free Documentation License, Version 1.1
@@ -114,45 +104,39 @@
       A copy of the license is included in the appendix entitled ``GNU
       Free Documentation License''.
 
-<P>
+<p>
 
-<P>
+<p>
 
-<DIV CLASS="navigation">
-<div class='online-navigation'>
-<p></p><hr />
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="1 Introduction"
-  href="node2.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="node2.html">1 Introduction</A>
+<div class="navigation">
+<div id='bot-navigation-panel' xml:id='bot-navigation-panel'
+     class='online-navigation'>
+  <div class='spacer'></div>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="1 Introduction"
+        href="node2.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='online-navigation text-links'>
+    Previous: <a rel="prev"      href="zodb.html">ZODB/ZEO Programming Guide</a>
+    Up: <a rel="parent"      href="zodb.html">ZODB/ZEO Programming Guide</a>
+    Next: <a rel="next"      href="node2.html">1 Introduction</a>
+  </div>
+</div>
+<div class='spacer'></div>
+<span class="release-info">Documentation released on 27 April 2005.</span>
+<address>See <i><a href="about.html">About this document...</a></i>
+for information on suggesting changes.</address>
 </div>
 </div>
-<hr />
-<span class="release-info">Release 3.2.7, documentation updated on April 26, 2005.</span>
-</DIV>
 <!--End of Navigation Panel-->
 
-</BODY>
-</HTML>
+</div> <!-- page-wrapper -->
+</body>
+</html>


=== ZODB3/Doc/zodb/img1.png 1.1.2.2 => 1.1.2.3 ===


=== ZODB3/Doc/zodb/index.html 1.2.6.19 => 1.2.6.20 ===
--- ZODB3/Doc/zodb/index.html:1.2.6.19	Tue Apr 26 16:05:59 2005
+++ ZODB3/Doc/zodb/index.html	Wed Apr 27 15:08:21 2005
@@ -2,41 +2,31 @@
 <html>
 <head>
 <link rel="STYLESHEET" href="zodb.css" type='text/css' />
-<link rel="first" href="zodb.html" title='ZODB/ZEO Programming Guide' />
+<link rel="first" href="zodb.html" title='ZODB/ZEO programming Guide' />
 <link rel='contents' href='contents.html' title="Contents" />
 <link rel='last' href='about.html' title='About this document...' />
 <link rel='help' href='about.html' title='About this document...' />
 <link rel="next" href="contents.html" />
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name='aesop' content='information' />
 <title>ZODB/ZEO Programming Guide</title>
 </head>
 <body>
-<DIV CLASS="navigation">
+<div class="page-wrapper">
+<div class="navigation">
 <div id='top-navigation-panel' xml:id='top-navigation-panel'>
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></td>
-<td class='online-navigation'><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></td>
-<td class='online-navigation'><a rel="next" title="Contents"
-  href="contents.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="contents.html">Contents</A>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="next" title="Contents"
+        href="contents.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='spacer'></div>
+</div>
 </div>
-<hr /></div>
-</DIV>
 <!--End of Navigation Panel-->
 
 <div class="titlepage">
@@ -44,128 +34,117 @@
 <h1>ZODB/ZEO Programming Guide</h1>
 <p><b><font size="+2">A.M. Kuchling</font></b></p>
 <p><span class="email">amk at amk.ca</span></p>
-<p><strong>Release 3.2.7</strong><br />
-<strong>April 26, 2005</strong></p>
+<p><strong>Release 3.2.8</strong><br />
+<strong>27 April 2005</strong></p>
 <p></p>
 </div>
 </div>
 
-<p><br /></p><hr class='online-navigation' />
-<div class='online-navigation'>
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"></a>
-
-<UL CLASS="ChildLinks">
-<LI><A href="contents.html">Contents</a>
-<LI><A href="node2.html">1 Introduction</a>
-<UL>
-<LI><A href="node2.html#SECTION000210000000000000000">1.1 What is the ZODB?</a>
-<LI><A href="node2.html#SECTION000220000000000000000">1.2 OODBs vs. Relational DBs</a>
-<LI><A href="node2.html#SECTION000230000000000000000">1.3 What is ZEO?</a>
-<LI><A href="node2.html#SECTION000240000000000000000">1.4 About this guide</a>
-<LI><A href="node2.html#SECTION000250000000000000000">1.5 Acknowledgements</a>
-</ul>
-<LI><A href="node3.html">2 ZODB Programming</a>
-<UL>
-<LI><A href="node3.html#SECTION000310000000000000000">2.1 Installing ZODB</a>
-<UL>
-<LI><A href="node3.html#SECTION000311000000000000000">2.1.1 Requirements</a>
-<LI><A href="node3.html#SECTION000312000000000000000">2.1.2 Installing the Packages</a>
-</ul>
-<LI><A href="node3.html#SECTION000320000000000000000">2.2 How ZODB Works</a>
-<LI><A href="node3.html#SECTION000330000000000000000">2.3 Opening a ZODB</a>
-<LI><A href="node3.html#SECTION000340000000000000000">2.4 Writing a Persistent Class</a>
-<LI><A href="node3.html#SECTION000350000000000000000">2.5 Rules for Writing Persistent Classes</a>
-<UL>
-<LI><A href="node3.html#SECTION000351000000000000000">2.5.1 Modifying Mutable Objects</a>
-<LI><A href="node3.html#SECTION000352000000000000000">2.5.2 Some Special Methods Don't Work</a>
-<LI><A href="node3.html#SECTION000353000000000000000">2.5.3 <tt class="method">__getattr__</tt>, <tt class="method">__delattr__</tt>, and <tt class="method">__setattr__</tt></a>
-<LI><A href="node3.html#SECTION000354000000000000000">2.5.4 <tt class="method">__del__</tt> methods</a>
-</ul>
-<LI><A href="node3.html#SECTION000360000000000000000">2.6 Writing Persistent Classes</a>
-<UL>
-<LI><A href="node3.html#SECTION000361000000000000000">2.6.1 Changing Instance Attributes</a>
-</ul>
-</ul>
-<LI><A href="zeo.html">3 ZEO</a>
-<UL>
-<LI><A href="zeo.html#SECTION000410000000000000000">3.1 How ZEO Works</a>
-<LI><A href="zeo.html#SECTION000420000000000000000">3.2 Installing ZEO</a>
-<UL>
-<LI><A href="zeo.html#SECTION000421000000000000000">3.2.1 Requirements</a>
-<LI><A href="zeo.html#SECTION000422000000000000000">3.2.2 Running a server</a>
-</ul>
-<LI><A href="zeo.html#SECTION000430000000000000000">3.3 Testing the ZEO Installation</a>
-<LI><A href="zeo.html#SECTION000440000000000000000">3.4 ZEO Programming Notes</a>
-<LI><A href="zeo.html#SECTION000450000000000000000">3.5 Sample Application: chatter.py</a>
-</ul>
-<LI><A href="node5.html">4 Transactions and Versioning</a>
-<UL>
-<LI><A href="node5.html#SECTION000510000000000000000">4.1 Subtransactions</a>
-<LI><A href="node5.html#SECTION000520000000000000000">4.2 Undoing Changes</a>
-<LI><A href="node5.html#SECTION000530000000000000000">4.3 Versions</a>
-<LI><A href="node5.html#SECTION000540000000000000000">4.4 Multithreaded ZODB Programs</a>
-</ul>
-<LI><A href="node6.html">5 Related Modules</a>
-<UL>
-<LI><A href="node6.html#SECTION000610000000000000000">5.1 <tt class="module">ZODB.PersistentMapping</tt></a>
-<LI><A href="node6.html#SECTION000620000000000000000">5.2 <tt class="module">ZODB.PersistentList</tt></a>
-<LI><A href="node6.html#SECTION000630000000000000000">5.3 BTrees Package</a>
-<UL>
-<LI><A href="node6.html#SECTION000631000000000000000">5.3.1 Total Ordering and Persistence</a>
-</ul>
-</ul>
-<LI><A href="node7.html">A. Resources</a>
-<LI><A href="node8.html">B. GNU Free Documentation License</a>
-<UL>
-<LI><A href="node8.html#SECTION000810000000000000000">Preamble</a>
-<LI><A href="node8.html#SECTION000820000000000000000">B..1 Applicability and Definitions</a>
-<LI><A href="node8.html#SECTION000830000000000000000">B..2 Verbatim Copying</a>
-<LI><A href="node8.html#SECTION000840000000000000000">B..3 Copying in Quantity</a>
-<LI><A href="node8.html#SECTION000850000000000000000">B..4 Modifications</a>
-<LI><A href="node8.html#SECTION000860000000000000000">B..5 Combining Documents</a>
-<LI><A href="node8.html#SECTION000870000000000000000">B..6 Collections of Documents</a>
-<LI><A href="node8.html#SECTION000880000000000000000">B..7 Aggregation With Independent Works</a>
-<LI><A href="node8.html#SECTION000890000000000000000">B..8 Translation</a>
-<LI><A href="node8.html#SECTION0008100000000000000000">B..9 Termination</a>
-<LI><A href="node8.html#SECTION0008110000000000000000">B..10 Future Revisions of This Licence</a>
-<LI><A href="node8.html#SECTION0008120000000000000000">ADDENDUM: How to use this License for your documents</a>
+<ul class="ChildLinks">
+<li><a href="contents.html">Contents</a>
+<li><a href="node2.html">1 Introduction</a>
+<ul>
+<li><a href="node2.html#SECTION000210000000000000000">1.1 What is the ZODB?</a>
+<li><a href="node2.html#SECTION000220000000000000000">1.2 OODBs vs. Relational DBs</a>
+<li><a href="node2.html#SECTION000230000000000000000">1.3 What is ZEO?</a>
+<li><a href="node2.html#SECTION000240000000000000000">1.4 About this guide</a>
+<li><a href="node2.html#SECTION000250000000000000000">1.5 Acknowledgements</a>
+</ul>
+<li><a href="node3.html">2 ZODB Programming</a>
+<ul>
+<li><a href="node3.html#SECTION000310000000000000000">2.1 Installing ZODB</a>
+<ul>
+<li><a href="node3.html#SECTION000311000000000000000">2.1.1 Requirements</a>
+<li><a href="node3.html#SECTION000312000000000000000">2.1.2 Installing the Packages</a>
+</ul>
+<li><a href="node3.html#SECTION000320000000000000000">2.2 How ZODB Works</a>
+<li><a href="node3.html#SECTION000330000000000000000">2.3 Opening a ZODB</a>
+<li><a href="node3.html#SECTION000340000000000000000">2.4 Writing a Persistent Class</a>
+<li><a href="node3.html#SECTION000350000000000000000">2.5 Rules for Writing Persistent Classes</a>
+<ul>
+<li><a href="node3.html#SECTION000351000000000000000">2.5.1 Modifying Mutable Objects</a>
+<li><a href="node3.html#SECTION000352000000000000000">2.5.2 Some Special Methods Don't Work</a>
+<li><a href="node3.html#SECTION000353000000000000000">2.5.3 <tt class="method">__getattr__</tt>, <tt class="method">__delattr__</tt>, and <tt class="method">__setattr__</tt></a>
+<li><a href="node3.html#SECTION000354000000000000000">2.5.4 <tt class="method">__del__</tt> methods</a>
+</ul>
+<li><a href="node3.html#SECTION000360000000000000000">2.6 Writing Persistent Classes</a>
+<ul>
+<li><a href="node3.html#SECTION000361000000000000000">2.6.1 Changing Instance Attributes</a>
+</ul>
+</ul>
+<li><a href="zeo.html">3 ZEO</a>
+<ul>
+<li><a href="zeo.html#SECTION000410000000000000000">3.1 How ZEO Works</a>
+<li><a href="zeo.html#SECTION000420000000000000000">3.2 Installing ZEO</a>
+<ul>
+<li><a href="zeo.html#SECTION000421000000000000000">3.2.1 Requirements</a>
+<li><a href="zeo.html#SECTION000422000000000000000">3.2.2 Running a server</a>
+</ul>
+<li><a href="zeo.html#SECTION000430000000000000000">3.3 Testing the ZEO Installation</a>
+<li><a href="zeo.html#SECTION000440000000000000000">3.4 ZEO Programming Notes</a>
+<li><a href="zeo.html#SECTION000450000000000000000">3.5 Sample Application: chatter.py</a>
+</ul>
+<li><a href="node5.html">4 Transactions and Versioning</a>
+<ul>
+<li><a href="node5.html#SECTION000510000000000000000">4.1 Subtransactions</a>
+<li><a href="node5.html#SECTION000520000000000000000">4.2 Undoing Changes</a>
+<li><a href="node5.html#SECTION000530000000000000000">4.3 Versions</a>
+<li><a href="node5.html#SECTION000540000000000000000">4.4 Multithreaded ZODB Programs</a>
+</ul>
+<li><a href="node6.html">5 Related Modules</a>
+<ul>
+<li><a href="node6.html#SECTION000610000000000000000">5.1 <tt class="module">ZODB.PersistentMapping</tt></a>
+<li><a href="node6.html#SECTION000620000000000000000">5.2 <tt class="module">ZODB.PersistentList</tt></a>
+<li><a href="node6.html#SECTION000630000000000000000">5.3 BTrees Package</a>
+<ul>
+<li><a href="node6.html#SECTION000631000000000000000">5.3.1 Total Ordering and Persistence</a>
+</ul>
+</ul>
+<li><a href="node7.html">A. Resources</a>
+<li><a href="node8.html">B. GNU Free Documentation License</a>
+<ul>
+<li><a href="node8.html#SECTION000810000000000000000">Preamble</a>
+<li><a href="node8.html#SECTION000820000000000000000">B..1 Applicability and Definitions</a>
+<li><a href="node8.html#SECTION000830000000000000000">B..2 Verbatim Copying</a>
+<li><a href="node8.html#SECTION000840000000000000000">B..3 Copying in Quantity</a>
+<li><a href="node8.html#SECTION000850000000000000000">B..4 Modifications</a>
+<li><a href="node8.html#SECTION000860000000000000000">B..5 Combining Documents</a>
+<li><a href="node8.html#SECTION000870000000000000000">B..6 Collections of Documents</a>
+<li><a href="node8.html#SECTION000880000000000000000">B..7 Aggregation With Independent Works</a>
+<li><a href="node8.html#SECTION000890000000000000000">B..8 Translation</a>
+<li><a href="node8.html#SECTION0008100000000000000000">B..9 Termination</a>
+<li><a href="node8.html#SECTION0008110000000000000000">B..10 Future Revisions of This Licence</a>
+<li><a href="node8.html#SECTION0008120000000000000000">ADDENDUM: How to use this License for your documents</a>
 </ul>
-<LI><A href="about.html">About this document ...</a>
+<li><a href="about.html">About this document ...</a>
 </ul>
 <!--End of Table of Child-Links-->
-</div>
 
-<DIV CLASS="navigation">
-<div class='online-navigation'>
-<p></p><hr />
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></td>
-<td class='online-navigation'><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></td>
-<td class='online-navigation'><a rel="next" title="Contents"
-  href="contents.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="contents.html">Contents</A>
-</div>
-</div>
-<hr />
-<span class="release-info">Release 3.2.7, documentation updated on April 26, 2005.</span>
-</DIV>
+<div class="navigation">
+<div id='bot-navigation-panel' xml:id='bot-navigation-panel'
+     class='online-navigation'>
+  <div class='spacer'></div>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="next" title="Contents"
+        href="contents.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='online-navigation text-links'>
+    Next: <a rel="next"      href="contents.html">Contents</a>
+  </div>
+</div>
+<div class='spacer'></div>
+<span class="release-info">Documentation released on 27 April 2005.</span>
+<address>See <i><a href="about.html">About this document...</a></i>
+for information on suggesting changes.</address>
+</div>
+</div>
 <!--End of Navigation Panel-->
 
-</BODY>
-</HTML>
+</div> <!-- page-wrapper -->
+</body>
+</html>


=== ZODB3/Doc/zodb/node2.html 1.2.6.19 => 1.2.6.20 ===
--- ZODB3/Doc/zodb/node2.html:1.2.6.19	Tue Apr 26 16:05:59 2005
+++ ZODB3/Doc/zodb/node2.html	Wed Apr 27 15:08:21 2005
@@ -2,90 +2,73 @@
 <html>
 <head>
 <link rel="STYLESHEET" href="zodb.css" type='text/css' />
-<link rel="first" href="zodb.html" title='ZODB/ZEO Programming Guide' />
+<link rel="first" href="zodb.html" title='ZODB/ZEO programming Guide' />
 <link rel='contents' href='contents.html' title="Contents" />
 <link rel='last' href='about.html' title='About this document...' />
 <link rel='help' href='about.html' title='About this document...' />
-<link rel="next" href="node3.html" />
 <link rel="prev" href="contents.html" />
 <link rel="parent" href="zodb.html" />
 <link rel="next" href="node3.html" />
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name='aesop' content='information' />
 <title>1 Introduction</title>
 </head>
 <body>
-<DIV CLASS="navigation">
+<div class="page-wrapper">
+<div class="navigation">
 <div id='top-navigation-panel' xml:id='top-navigation-panel'>
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="Contents"
-  href="contents.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="2 ZODB Programming"
-  href="node3.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="contents.html">Contents</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="node3.html">2 ZODB Programming</A>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="Contents"
+        href="contents.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="2 zodb Programming"
+        href="node3.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='spacer'></div>
+</div>
 </div>
-<hr /></div>
-</DIV>
 <!--End of Navigation Panel-->
-<div class='online-navigation'>
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></a>
-
-<UL CLASS="ChildLinks">
-<LI><A href="node2.html#SECTION000210000000000000000">1.1 What is the ZODB?</a>
-<LI><A href="node2.html#SECTION000220000000000000000">1.2 OODBs vs. Relational DBs</a>
-<LI><A href="node2.html#SECTION000230000000000000000">1.3 What is ZEO?</a>
-<LI><A href="node2.html#SECTION000240000000000000000">1.4 About this guide</a>
-<LI><A href="node2.html#SECTION000250000000000000000">1.5 Acknowledgements</a>
+
+<ul class="ChildLinks">
+<li><a href="node2.html#SECTION000210000000000000000">1.1 What is the ZODB?</a>
+<li><a href="node2.html#SECTION000220000000000000000">1.2 OODBs vs. Relational DBs</a>
+<li><a href="node2.html#SECTION000230000000000000000">1.3 What is ZEO?</a>
+<li><a href="node2.html#SECTION000240000000000000000">1.4 About this guide</a>
+<li><a href="node2.html#SECTION000250000000000000000">1.5 Acknowledgements</a>
 </ul>
 <!--End of Table of Child-Links-->
-</div>
-<HR>
+<hr>
 
-<H1><A NAME="SECTION000200000000000000000">
-1 Introduction</A>
-</H1>
+<h1><a name="SECTION000200000000000000000">
+1 Introduction</a>
+</h1>
 
-<P>
+<p>
 This guide explains how to write Python programs that use the Z Object
 Database (ZODB) and Zope Enterprise Objects (ZEO).  The latest version
 of the guide is always available at
 <a class="url" href="http://www.zope.org/Wikis/ZODB/guide/index.html">http://www.zope.org/Wikis/ZODB/guide/index.html</a>.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000210000000000000000">
-1.1 What is the ZODB?</A>
-</H2>
+<h2><a name="SECTION000210000000000000000">
+1.1 What is the ZODB?</a>
+</h2>
 
-<P>
+<p>
 The ZODB is a persistence system for Python objects.  Persistent
 programming languages provide facilities that automatically write
 objects to disk and read them in again when they're required by a
 running program.  By installing the ZODB, you add such facilities to
 Python.
 
-<P>
+<p>
 It's certainly possible to build your own system for making Python
 objects persistent.  The usual starting points are the <tt class="module">pickle</tt>
 module, for converting objects into a string representation, and
@@ -96,20 +79,20 @@
 <tt class="module">shelve</tt> module, included in Python's standard library, does
 this.
 
-<P>
+<p>
 The downside is that the programmer has to explicitly manage objects,
 reading an object when it's needed and writing it out to disk when the
 object is no longer required.  The ZODB manages objects for you,
 keeping them in a cache and writing them out if they haven't been 
 accessed in a while.  
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000220000000000000000">
-1.2 OODBs vs. Relational DBs</A>
-</H2>
+<h2><a name="SECTION000220000000000000000">
+1.2 OODBs vs. Relational DBs</a>
+</h2>
 
-<P>
+<p>
 Another way to look at it is that the ZODB is a Python-specific
 object-oriented database (OODB).  Commercial object databases for C++
 or Java often require that you jump through some hoops, such as using
@@ -117,14 +100,14 @@
 the ZODB has some hoops of its own to jump through, but in comparison
 the naturalness of the ZODB is astonishing.
 
-<P>
+<p>
 Relational databases (RDBs) are far more common than OODBs.
 Relational databases store information in tables; a table consists of
 any number of rows, each row containing several columns of
 information.  (Rows are more formally called relations, which is where
 the term ``relational database'' originates.)
 
-<P>
+<p>
 Let's look at a concrete example.  The example comes from my day job
 working for the MEMS Exchange, in a greatly simplified version.  The
 job is to track process runs, which are lists of manufacturing steps
@@ -134,17 +117,17 @@
 performed, such as depositing something on a wafer or etching
 something off it.
 
-<P>
+<p>
 Operations may have parameters, which are additional information
 required to perform an operation.  For example, if you're depositing
 something on a wafer, you need to know two things: 1) what you're
 depositing, and 2) how much should be deposited.  You might deposit
 100 microns of silicon oxide, or 1 micron of copper.
 
-<P>
+<p>
 Mapping these structures to a relational database is straightforward:
 
-<P>
+<p>
 <div class="verbatim"><pre>
 CREATE TABLE runs (
   int      run_id,
@@ -173,7 +156,7 @@
 );
 </pre></div>
 
-<P>
+<p>
 In Python, you would write three classes named <tt class="class">Run</tt>,
 <tt class="class">Operation</tt>, and <tt class="class">Parameter</tt>.  I won't present code for
 defining these classes, since that code is uninteresting at this
@@ -181,7 +164,7 @@
 <tt class="method">__init__</tt> method that assigns default values, such as 0 or
 <code>None</code>, to each attribute of the class.
 
-<P>
+<p>
 It's not difficult to write Python code that will create a <tt class="class">Run</tt>
 instance and populate it with the data from the relational tables;
 with a little more effort, you can build a straightforward tool,
@@ -189,11 +172,10 @@
 (See
 <a class="url" href="http://www.amk.ca/python/unmaintained/ordb.html">http://www.amk.ca/python/unmaintained/ordb.html</a> for a quick hack
 at a Python object-relational mapper, and
-<a class="url" href="http://www.python.org/workshops/1997-10/proceedings/shprentz.html">http://www.python.org/workshops/1997-10/proceedings/shprentz.html</a>
-for Joel Shprentz's more successful implementation of the same idea;
+<a class="url" href="http://www.python.org/workshops/1997-10/proceedings/shprentz.html">http://www.python.org/workshops/1997-10/proceedings/shprentz.html</a>for Joel Shprentz's more successful implementation of the same idea;
 Unlike mine, Shprentz's system has been used for actual work.)
 
-<P>
+<p>
 However, it is difficult to make an object-relational mapper
 reasonably quick; a simple-minded implementation like mine is quite
 slow because it has to do several queries to access all of an object's
@@ -201,49 +183,49 @@
 improve performance, only performing SQL queries when they actually
 need to.
 
-<P>
+<p>
 That helps if you want to access run number 123 all of a sudden.  But
 what if you want to find all runs where a step has a parameter named
 'thickness' with a value of 2.0?  In the relational version, you have
 two unappealing choices:
 
-<P>
+<p>
 
-<OL>
-<LI>Write a specialized SQL query for this case: <code>SELECT run_id
+<ol>
+<li>Write a specialized SQL query for this case: <code>SELECT run_id
   FROM operations WHERE param_name = 'thickness' AND param_value = 2.0</code>
 
-<P>
+<p>
 If such queries are common, you can end up with lots of specialized
   queries.  When the database tables get rearranged, all these queries
   will need to be modified.
 
-<P>
-</LI>
-<LI>An object-relational mapper doesn't help much.  Scanning
+<p>
+</li>
+<li>An object-relational mapper doesn't help much.  Scanning
   through the runs means that the the mapper will perform the required
   SQL queries to read run #1, and then a simple Python loop can check
   whether any of its steps have the parameter you're looking for.
   Repeat for run #2, 3, and so forth.  This does a vast
   number of SQL queries, and therefore is incredibly slow.
 
-<P>
-</LI>
-</OL>
+<p>
+</li>
+</ol>
 
-<P>
+<p>
 An object database such as ZODB simply stores internal pointers from
 object to object, so reading in a single object is much faster than
 doing a bunch of SQL queries and assembling the results. Scanning all
 runs, therefore, is still inefficient, but not grossly inefficient.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000230000000000000000">
-1.3 What is ZEO?</A>
-</H2>
+<h2><a name="SECTION000230000000000000000">
+1.3 What is ZEO?</a>
+</h2>
 
-<P>
+<p>
 The ZODB comes with a few different classes that implement the
 <tt class="class">Storage</tt> interface.  Such classes handle the job of
 writing out Python objects to a physical storage medium, which can be
@@ -257,13 +239,13 @@
 physical <tt class="class">Storage</tt> class.  It's a fairly simple idea, but as
 we'll see later on in this document, it opens up many possibilities.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000240000000000000000">
-1.4 About this guide</A>
-</H2>
+<h2><a name="SECTION000240000000000000000">
+1.4 About this guide</a>
+</h2>
 
-<P>
+<p>
 The primary author of this guide works on a project which uses the
 ZODB and ZEO as its primary storage technology.  We use the ZODB to
 store process runs and operations, a catalog of available processes,
@@ -274,70 +256,65 @@
 knowledge we've gained so that others don't have to make the same
 mistakes we did while learning.
 
-<P>
+<p>
 The author's ZODB project is described in a paper available here,
 <a class="url" href="http://www.amk.ca/python/writing/mx-architecture/">http://www.amk.ca/python/writing/mx-architecture/</a>
-<P>
+<p>
 This document will always be a work in progress.  If you wish to
 suggest clarifications or additional topics, please send your comments to
 <span class="email">zodb-dev at zope.org</span>.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000250000000000000000">
-1.5 Acknowledgements</A>
-</H2>
+<h2><a name="SECTION000250000000000000000">
+1.5 Acknowledgements</a>
+</h2>
 
-<P>
+<p>
 Andrew Kuchling wrote the original version of this guide, which
 provided some of the first ZODB documentation for Python programmers.
 His initial version has been updated over time by Jeremy Hylton and
 Tim Peters.
 
-<P>
+<p>
 I'd like to thank the people who've pointed out inaccuracies and bugs,
 offered suggestions on the text, or proposed new topics that should be
 covered: Jeff Bauer, Willem Broekema, Thomas Guettler,
 Chris McDonough, George Runyan.
 
-<P>
+<p>
 
-<DIV CLASS="navigation">
-<div class='online-navigation'>
-<p></p><hr />
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="Contents"
-  href="contents.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="2 ZODB Programming"
-  href="node3.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="contents.html">Contents</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="node3.html">2 ZODB Programming</A>
+<div class="navigation">
+<div id='bot-navigation-panel' xml:id='bot-navigation-panel'
+     class='online-navigation'>
+  <div class='spacer'></div>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="Contents"
+        href="contents.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="2 zodb Programming"
+        href="node3.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='online-navigation text-links'>
+    Previous: <a rel="prev"      href="contents.html">Contents</a>
+    Up: <a rel="parent"      href="zodb.html">ZODB/ZEO Programming Guide</a>
+    Next: <a rel="next"      href="node3.html">2 ZODB Programming</a>
+  </div>
+</div>
+<div class='spacer'></div>
+<span class="release-info">Documentation released on 27 April 2005.</span>
+<address>See <i><a href="about.html">About this document...</a></i>
+for information on suggesting changes.</address>
 </div>
 </div>
-<hr />
-<span class="release-info">Release 3.2.7, documentation updated on April 26, 2005.</span>
-</DIV>
 <!--End of Navigation Panel-->
 
-</BODY>
-</HTML>
+</div> <!-- page-wrapper -->
+</body>
+</html>


=== ZODB3/Doc/zodb/node3.html 1.2.6.19 => 1.2.6.20 ===
--- ZODB3/Doc/zodb/node3.html:1.2.6.19	Tue Apr 26 16:05:59 2005
+++ ZODB3/Doc/zodb/node3.html	Wed Apr 27 15:08:21 2005
@@ -2,131 +2,114 @@
 <html>
 <head>
 <link rel="STYLESHEET" href="zodb.css" type='text/css' />
-<link rel="first" href="zodb.html" title='ZODB/ZEO Programming Guide' />
+<link rel="first" href="zodb.html" title='ZODB/ZEO programming Guide' />
 <link rel='contents' href='contents.html' title="Contents" />
 <link rel='last' href='about.html' title='About this document...' />
 <link rel='help' href='about.html' title='About this document...' />
-<link rel="next" href="zeo.html" />
 <link rel="prev" href="node2.html" />
 <link rel="parent" href="zodb.html" />
 <link rel="next" href="zeo.html" />
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name='aesop' content='information' />
 <title>2 ZODB Programming</title>
 </head>
 <body>
-<DIV CLASS="navigation">
+<div class="page-wrapper">
+<div class="navigation">
 <div id='top-navigation-panel' xml:id='top-navigation-panel'>
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="1 Introduction"
-  href="node2.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="3 ZEO"
-  href="zeo.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="node2.html">1 Introduction</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="zeo.html">3 ZEO</A>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="1 Introduction"
+        href="node2.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="3 ZEO"
+        href="zeo.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='spacer'></div>
+</div>
 </div>
-<hr /></div>
-</DIV>
 <!--End of Navigation Panel-->
-<div class='online-navigation'>
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></a>
-
-<UL CLASS="ChildLinks">
-<LI><A href="node3.html#SECTION000310000000000000000">2.1 Installing ZODB</a>
-<UL>
-<LI><A href="node3.html#SECTION000311000000000000000">2.1.1 Requirements</a>
-<LI><A href="node3.html#SECTION000312000000000000000">2.1.2 Installing the Packages</a>
+
+<ul class="ChildLinks">
+<li><a href="node3.html#SECTION000310000000000000000">2.1 Installing ZODB</a>
+<ul>
+<li><a href="node3.html#SECTION000311000000000000000">2.1.1 Requirements</a>
+<li><a href="node3.html#SECTION000312000000000000000">2.1.2 Installing the Packages</a>
 </ul>
-<LI><A href="node3.html#SECTION000320000000000000000">2.2 How ZODB Works</a>
-<LI><A href="node3.html#SECTION000330000000000000000">2.3 Opening a ZODB</a>
-<LI><A href="node3.html#SECTION000340000000000000000">2.4 Writing a Persistent Class</a>
-<LI><A href="node3.html#SECTION000350000000000000000">2.5 Rules for Writing Persistent Classes</a>
-<UL>
-<LI><A href="node3.html#SECTION000351000000000000000">2.5.1 Modifying Mutable Objects</a>
-<LI><A href="node3.html#SECTION000352000000000000000">2.5.2 Some Special Methods Don't Work</a>
-<LI><A href="node3.html#SECTION000353000000000000000">2.5.3 <tt class="method">__getattr__</tt>, <tt class="method">__delattr__</tt>, and <tt class="method">__setattr__</tt></a>
-<LI><A href="node3.html#SECTION000354000000000000000">2.5.4 <tt class="method">__del__</tt> methods</a>
+<li><a href="node3.html#SECTION000320000000000000000">2.2 How ZODB Works</a>
+<li><a href="node3.html#SECTION000330000000000000000">2.3 Opening a ZODB</a>
+<li><a href="node3.html#SECTION000340000000000000000">2.4 Writing a Persistent Class</a>
+<li><a href="node3.html#SECTION000350000000000000000">2.5 Rules for Writing Persistent Classes</a>
+<ul>
+<li><a href="node3.html#SECTION000351000000000000000">2.5.1 Modifying Mutable Objects</a>
+<li><a href="node3.html#SECTION000352000000000000000">2.5.2 Some Special Methods Don't Work</a>
+<li><a href="node3.html#SECTION000353000000000000000">2.5.3 <tt class="method">__getattr__</tt>, <tt class="method">__delattr__</tt>, and <tt class="method">__setattr__</tt></a>
+<li><a href="node3.html#SECTION000354000000000000000">2.5.4 <tt class="method">__del__</tt> methods</a>
 </ul>
-<LI><A href="node3.html#SECTION000360000000000000000">2.6 Writing Persistent Classes</a>
-<UL>
-<LI><A href="node3.html#SECTION000361000000000000000">2.6.1 Changing Instance Attributes</a>
+<li><a href="node3.html#SECTION000360000000000000000">2.6 Writing Persistent Classes</a>
+<ul>
+<li><a href="node3.html#SECTION000361000000000000000">2.6.1 Changing Instance Attributes</a>
 </ul></ul>
 <!--End of Table of Child-Links-->
-</div>
-<HR>
+<hr>
 
-<H1><A NAME="SECTION000300000000000000000">
-2 ZODB Programming</A>
-</H1>
+<h1><a name="SECTION000300000000000000000">
+2 ZODB Programming</a>
+</h1>
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000310000000000000000">
-2.1 Installing ZODB</A>
-</H2>
+<h2><a name="SECTION000310000000000000000">
+2.1 Installing ZODB</a>
+</h2>
 
-<P>
+<p>
 ZODB is packaged using the standard distutils tools.
 
-<P>
+<p>
 
-<H3><A NAME="SECTION000311000000000000000">
-2.1.1 Requirements</A>
-</H3>
+<h3><a name="SECTION000311000000000000000">
+2.1.1 Requirements</a>
+</h3>
 
-<P>
+<p>
 You will need Python 2.2 or higher.  Since the code is packaged using
 distutils, it is simply a matter of untarring or unzipping the release
 package, and then running <code>python setup.py install</code>.
 
-<P>
+<p>
 You'll need a C compiler to build the packages, because there are
 various C extension modules.  Binary installers are provided for
 Windows users.
 
-<P>
+<p>
 
-<H3><A NAME="SECTION000312000000000000000">
-2.1.2 Installing the Packages</A>
-</H3>
+<h3><a name="SECTION000312000000000000000">
+2.1.2 Installing the Packages</a>
+</h3>
 
-<P>
+<p>
 Download the ZODB tarball containing all the packages for both ZODB
 and ZEO from <a class="url" href="http://www.zope.org/Products/ZODB3.2">http://www.zope.org/Products/ZODB3.2</a>.  See
 the <span class="file">README.txt</span> file in the top level of the release directory
 for details on building, testing, and installing.
 
-<P>
+<p>
 You can find information about ZODB and the most current releases in
 the ZODB Wiki at <a class="url" href="http://www.zope.org/Wikis/ZODB">http://www.zope.org/Wikis/ZODB</a>.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000320000000000000000">
-2.2 How ZODB Works</A>
-</H2>
+<h2><a name="SECTION000320000000000000000">
+2.2 How ZODB Works</a>
+</h2>
 
-<P>
+<p>
 The ZODB is conceptually simple.  Python classes subclass a
 <tt class="class">Persistent</tt> class to become ZODB-aware.
 Instances of persistent objects are brought in from a permanent
@@ -139,7 +122,7 @@
 results in any changes being discarded, dirty objects reverting to
 their initial state before the transaction began.
 
-<P>
+<p>
 The term ``transaction'' has a specific technical meaning in computer
 science.  It's extremely important that the contents of a database
 don't get corrupted by software or hardware crashes, and most database
@@ -148,14 +131,14 @@
 In computer science jargon these four terms are collectively dubbed
 the ACID properties, forming an acronym from their names.
 
-<P>
+<p>
 The ZODB provides all of the ACID properties.  Definitions of the
 ACID properties are:
 
-<P>
-<DL COMPACT>
-<DT>Atomicity</DT>
-<DD>means that any changes to data made during a transaction
+<p>
+<dl compact>
+<dt>Atomicity</dt>
+<dd>means that any changes to data made during a transaction
 are all-or-nothing.  Either all the changes are applied, or none of
 them are.  If a program makes a bunch of modifications and then
 crashes, the database won't be partially modified, potentially leaving
@@ -164,10 +147,10 @@
 partially-applied modification put the database into an inconsistent
 state.
 
-<P>
-</DD>
-<DT>Consistency</DT>
-<DD>means that each transaction executes a valid
+<p>
+</dd>
+<dt>Consistency</dt>
+<dd>means that each transaction executes a valid
 transformation of the database state.  Some databases, but not ZODB,
 provide a variety of consistency checks in the database or language;
 for example, a relational database constraint columns to be of
@@ -175,40 +158,40 @@
 generally, atomicity and isolation make it possible for applications
 to provide consistency.
 
-<P>
-</DD>
-<DT>Isolation</DT>
-<DD>means that two programs or threads running in two
+<p>
+</dd>
+<dt>Isolation</dt>
+<dd>means that two programs or threads running in two
  different transactions cannot see each other's changes until they
  commit their transactions.
 
-<P>
-</DD>
-<DT>Durability</DT>
-<DD>means that once a transaction has been committed,
+<p>
+</dd>
+<dt>Durability</dt>
+<dd>means that once a transaction has been committed,
 a subsequent crash will not cause any data to be lost or corrupted.
 
-<P>
-</DD>
-</DL>
+<p>
+</dd>
+</dl>
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000330000000000000000">
-2.3 Opening a ZODB</A>
-</H2>
+<h2><a name="SECTION000330000000000000000">
+2.3 Opening a ZODB</a>
+</h2>
 
-<P>
+<p>
 There are 3 main interfaces supplied by the ZODB:
 <tt class="class">Storage</tt>, <tt class="class">DB</tt>, and <tt class="class">Connection</tt> classes. The
 <tt class="class">DB</tt> and <tt class="class">Connection</tt> interfaces both have single
 implementations, but there are several different classes that
 implement the <tt class="class">Storage</tt> interface.
 
-<P>
+<p>
 
-<UL>
-<LI><tt class="class">Storage</tt> classes are the lowest layer, and handle
+<ul>
+<li><tt class="class">Storage</tt> classes are the lowest layer, and handle
  storing and retrieving objects from some form of long-term storage.
  A few different types of Storage have been written, such as
  <tt class="class">FileStorage</tt>, which uses regular disk files, and
@@ -219,31 +202,31 @@
  <tt class="class">DemoStorage</tt> and <tt class="class">MappingStorage</tt>, are available to use
  as models if you want to write a new Storage.
 
-<P>
-</LI>
-<LI>The <tt class="class">DB</tt> class sits on top of a storage, and mediates the
+<p>
+</li>
+<li>The <tt class="class">DB</tt> class sits on top of a storage, and mediates the
  interaction between several connections.  One <tt class="class">DB</tt> instance is
  created per process.
 
-<P>
-</LI>
-<LI>Finally, the <tt class="class">Connection</tt> class caches objects, and moves
+<p>
+</li>
+<li>Finally, the <tt class="class">Connection</tt> class caches objects, and moves
  them into and out of object storage.  A multi-threaded program should
  open a separate <tt class="class">Connection</tt> instance for each thread.
  Different threads can then modify objects and commit their
  modifications independently.
 
-<P>
-</LI>
-</UL>
+<p>
+</li>
+</ul>
 
-<P>
+<p>
 Preparing to use a ZODB requires 3 steps: you have to open the
 <tt class="class">Storage</tt>, then create a <tt class="class">DB</tt> instance that uses the
 <tt class="class">Storage</tt>, and then get a <tt class="class">Connection</tt> from the <tt class="class">DB
 instance</tt>.  All this is only a few lines of code:
 
-<P>
+<p>
 <div class="verbatim"><pre>
 from ZODB import FileStorage, DB
 
@@ -252,23 +235,23 @@
 conn = db.open()
 </pre></div>
 
-<P>
+<p>
 Note that you can use a completely different data storage mechanism by
 changing the first line that opens a <tt class="class">Storage</tt>; the above example uses a
-<tt class="class">FileStorage</tt>.  In section&nbsp;<A href="zeo.html#zeo">3</A>, ``How ZEO Works'',
+<tt class="class">FileStorage</tt>.  In section&nbsp;<a href="zeo.html#zeo">3</a>, ``How ZEO Works'',
 you'll see how ZEO uses this flexibility to good effect.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000340000000000000000">
-2.4 Writing a Persistent Class</A>
-</H2>
+<h2><a name="SECTION000340000000000000000">
+2.4 Writing a Persistent Class</a>
+</h2>
 
-<P>
+<p>
 Making a Python class persistent is quite simple; it simply needs to
 subclass from the <tt class="class">Persistent</tt> class, as shown in this example:
 
-<P>
+<p>
 <div class="verbatim"><pre>
 import ZODB
 from Persistence import Persistent
@@ -277,24 +260,24 @@
     pass
 </pre></div>
 
-<P>
+<p>
 The apparently unnecessary <code>import ZODB</code> statement is
 needed for the following <code>from...import</code> statement to work
 correctly, since the ZODB code does some magical tricks with
 importing.
 
-<P>
+<p>
 The <tt class="class">Persistent</tt> base class is an <tt class="module">ExtensionClass</tt>
 class.  As a result, it not compatible with new-style classes or types
 in Python 2.2 and up.
 
-<P>
+<p>
 For simplicity, in the examples the <tt class="class">User</tt> class will
 simply be used as a holder for a bunch of attributes.  Normally the
 class would define various methods that add functionality, but that
 has no impact on the ZODB's treatment of the class.
 
-<P>
+<p>
 The ZODB uses persistence by reachability; starting from a set of root
 objects, all the attributes of those objects are made persistent,
 whether they're simple Python data types or class instances.  There's
@@ -303,7 +286,7 @@
 that's already in the database.  This chain of containment must
 eventually reach back to the root object of the database.
 
-<P>
+<p>
 As an example, we'll create a simple database of users that allows
 retrieving a <tt class="class">User</tt> object given the user's ID.  First, we
 retrieve the primary root object of the ZODB using the <tt class="method">root()</tt>
@@ -313,7 +296,7 @@
 that will contain all the <tt class="class">User</tt> objects.  (The
 <tt class="class">BTree</tt> module is also included as part of Zope.)
 
-<P>
+<p>
 <div class="verbatim"><pre>
 dbroot = conn.root()
 
@@ -326,12 +309,12 @@
 userdb = dbroot['userdb']
 </pre></div>
 
-<P>
+<p>
 Inserting a new user is simple: create the <tt class="class">User</tt> object, fill
 it with data, insert it into the <tt class="class">BTree</tt> instance, and commit
 this transaction.
 
-<P>
+<p>
 <div class="verbatim"><pre># Create new User instance
 newuser = User()
 
@@ -347,7 +330,7 @@
 get_transaction().commit()
 </pre></div>
 
-<P>
+<p>
 When you import the ZODB package, it adds a new function,
 <tt class="function">get_transaction()</tt>, to Python's collection of built-in
 functions.  <tt class="function">get_transaction()</tt> returns a <tt class="class">Transaction</tt>
@@ -358,12 +341,12 @@
 the objects.  If you're familiar with database transactional
 semantics, this is all what you'd expect.
 
-<P>
+<p>
 Because the integration with Python is so complete, it's a lot like
 having transactional semantics for your program's variables, and you
 can experiment with transactions at the Python interpreter's prompt:
 
-<P>
+<p>
 <div class="verbatim"><pre>&gt;&gt;&gt; newuser
 &lt;User instance at 81b1f40&gt;
 &gt;&gt;&gt; newuser.first_name           # Print initial value
@@ -376,26 +359,26 @@
 'Andrew'
 </pre></div>
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000350000000000000000">
-2.5 Rules for Writing Persistent Classes</A>
-</H2>
+<h2><a name="SECTION000350000000000000000">
+2.5 Rules for Writing Persistent Classes</a>
+</h2>
 
-<P>
+<p>
 Practically all persistent languages impose some restrictions on
 programming style, warning against constructs they can't handle or
 adding subtle semantic changes, and the ZODB is no exception.
 Happily, the ZODB's restrictions are fairly simple to understand, and
 in practice it isn't too painful to work around them.
 
-<P>
+<p>
 The summary of rules is as follows:
 
-<P>
+<p>
 
-<UL>
-<LI>If you modify a mutable object that's the value of an object's
+<ul>
+<li>If you modify a mutable object that's the value of an object's
 attribute, the ZODB can't catch that, and won't mark the object as
 dirty.
 The solution is to either set the dirty bit yourself when you modify
@@ -404,45 +387,45 @@
 <tt class="class">PersistentMapping</tt>)
 that will set the dirty bit properly.
 
-<P>
-</LI>
-<LI>Certain of Python's special methods don't work when they're
+<p>
+</li>
+<li>Certain of Python's special methods don't work when they're
 defined on ExtensionClasses.  The most important ones are the
 <tt class="method">__cmp__</tt> method, and the reversed versions of binary
 arithmetic operations: <tt class="method">__radd__</tt>, <tt class="method">__rsub__</tt>, and so
 forth.
 
-<P>
-</LI>
-<LI>Recent versions of the ZODB allow writing a class with
+<p>
+</li>
+<li>Recent versions of the ZODB allow writing a class with
 <tt class="method">__setattr__</tt> , <tt class="method">__getattr__</tt>, or <tt class="method">__delattr__</tt> methods.
 (Older versions didn't support this at all.)
 If you write such a <tt class="method">__setattr__</tt> or <tt class="method">__delattr__</tt> method,
 its code has to set the dirty bit manually.
 
-<P>
-</LI>
-<LI>A persistent class should not have a <tt class="method">__del__</tt> method.
+<p>
+</li>
+<li>A persistent class should not have a <tt class="method">__del__</tt> method.
 The database moves objects freely between memory and storage.  If an
 object has not been used in a while, it may be released and its
 contents loaded from storage the next time it is used.  Since the
 Python interpreter is unaware of persistence, it would call
 <tt class="method">__del__</tt> each time the object was freed.
 
-<P>
-</LI>
-</UL>
+<p>
+</li>
+</ul>
 
-<P>
+<p>
 Let's look at each of these rules in detail.
 
-<P>
+<p>
 
-<H3><A NAME="SECTION000351000000000000000">
-2.5.1 Modifying Mutable Objects</A>
-</H3>
+<h3><a name="SECTION000351000000000000000">
+2.5.1 Modifying Mutable Objects</a>
+</h3>
 
-<P>
+<p>
 The ZODB uses various Python hooks to catch attribute accesses, and
 can trap most of the ways of modifying an object, but not all of them.
 If you modify a <tt class="class">User</tt> object by assigning to one of its
@@ -450,7 +433,7 @@
 mark the object as having been changed, and it'll be written out on
 the following <tt class="method">commit()</tt>.
 
-<P>
+<p>
 The most common idiom that <em>isn't</em> caught by the ZODB is
 mutating a list or dictionary.  If <tt class="class">User</tt> objects have a
 attribute named <code>friends</code> containing a list, calling
@@ -460,25 +443,25 @@
 happened to be an ordinary Python list, was returned.  The ZODB isn't
 aware that the object returned was subsequently modified.
 
-<P>
+<p>
 This is one of the few quirks you'll have to remember when using the
 ZODB; if you modify a mutable attribute of an object in place, you
 have to manually mark the object as having been modified by setting
 its dirty bit to true.  This is done by setting the
 <tt class="member">_p_changed</tt> attribute of the object to true:
 
-<P>
+<p>
 <div class="verbatim"><pre>
 userobj.friends.append(otherUser)
 userobj._p_changed = 1
 </pre></div>
 
-<P>
+<p>
 An obsolete way of doing this that's still supported is calling the
 <tt class="method">__changed__()</tt> method instead, but setting <tt class="member">_p_changed</tt>
 is the preferred way.
 
-<P>
+<p>
 You can hide the implementation detail of having to mark objects as
 dirty by designing your class's API to not use direct attribute
 access; instead, you can use the Java-style approach of accessor
@@ -488,34 +471,34 @@
 an <tt class="method">add_friend()</tt> modifier method to the class.  <tt class="method">add_friend()</tt>
 would then look like this:
 
-<P>
+<p>
 <div class="verbatim"><pre>
     def add_friend(self, friend):
         self.friends.append(otherUser)
         self._p_changed = 1
 </pre></div>
 
-<P>
+<p>
 Alternatively, you could use a ZODB-aware list or mapping type that
 handles the dirty bit for you.  The ZODB comes with a
 <tt class="class">PersistentMapping</tt> class, and I've contributed a
 <tt class="class">PersistentList</tt> class that's included in my ZODB distribution,
 and may make it into a future upstream release of Zope.
 
-<P>
+<p>
 
-<H3><A NAME="SECTION000352000000000000000">
-2.5.2 Some Special Methods Don't Work</A>
-</H3>
+<h3><a name="SECTION000352000000000000000">
+2.5.2 Some Special Methods Don't Work</a>
+</h3>
 
-<P>
+<p>
 Don't bother defining certain special methods on
 ExtensionClasses, because they won't work.  Most notably, the
 <tt class="method">__cmp__</tt> method on an ExtensionClass will never be called.
 Neither will the reversed versions of binary arithmetic operations,
 such as <tt class="method">__radd__</tt> and <tt class="method">__rsub__</tt>.
 
-<P>
+<p>
 This is a moderately annoying limitation.  It means that the
 <tt class="class">PersistentList</tt> class can't implement comparisons with regular
 sequence objects, and therefore statements such as
@@ -526,14 +509,14 @@
 class interfaces that don't need to overload
 <tt class="method">__cmp__</tt> or the <tt class="method">__r*__</tt> methods.
 
-<P>
+<p>
 This limitation is mostly Python's fault.  As of Python 2.1, the most
 recent version at this writing, the code which handles comparing two
 Python objects contains a hard-wired check for objects that are class
 instances, which means that <code>type(obj) == types.InstanceType</code>.
 The code inside the Python interpreter looks like this:
 
-<P>
+<p>
 <div class="verbatim"><pre>
 /* Code to compare objects v and w */
 if (PyInstance_Check(v) || PyInstance_Check(w))
@@ -542,20 +525,20 @@
 c = PyObject_Compare(v, w);
 </pre></div>
 
-<P>
+<p>
 While ExtensionClasses try to behave as much like regular Python
 instances as possible, they are still not instances, and
 <tt class="function">type()</tt> doesn't return the <code>InstanceType</code> object, so
 no attempt is ever made to call <tt class="method">__cmp__</tt>.  Perhaps Python 2.2
 will repair this.
 
-<P>
+<p>
 
-<H3><A NAME="SECTION000353000000000000000">
-2.5.3 <tt class="method">__getattr__</tt>, <tt class="method">__delattr__</tt>, and <tt class="method">__setattr__</tt></A>
-</H3>
+<h3><a name="SECTION000353000000000000000">
+2.5.3 <tt class="method">__getattr__</tt>, <tt class="method">__delattr__</tt>, and <tt class="method">__setattr__</tt></a>
+</h3>
 
-<P>
+<p>
 Recent versions of ZODB allow writing persistent classes that have
 <tt class="method">__getattr__</tt>, <tt class="method">__delattr__</tt>, or <tt class="method">__setattr__</tt>
 methods.  The one minor complication is that the machinery for
@@ -565,13 +548,13 @@
 object should be marked as dirty by setting the object's
 <tt class="member">_p_changed</tt> method to true.
 
-<P>
+<p>
 
-<H3><A NAME="SECTION000354000000000000000">
-2.5.4 <tt class="method">__del__</tt> methods</A>
-</H3>
+<h3><a name="SECTION000354000000000000000">
+2.5.4 <tt class="method">__del__</tt> methods</a>
+</h3>
 
-<P>
+<p>
 A <tt class="method">__del__</tt> method is invoked just before the memory occupied by an
 unreferenced Python object is freed.  Because ZODB may materialize, and
 dematerialize, a given persistent object in memory any number of times,
@@ -583,7 +566,7 @@
 <tt class="method">__del__</tt> is only concerned with reachability from objects in
 memory.
 
-<P>
+<p>
 Worse, a <tt class="method">__del__</tt> method can interfere with the persistence
 machinery's goals.  For example, some number of persistent objects reside
 in a <tt class="class">Connection</tt>'s memory cache.  At various times, to reduce memory
@@ -600,29 +583,29 @@
 reduction code to fall into an infinite loop.  The infinite loop no longer
 occurs, but such objects continue to live in the memory cache forever.
 
-<P>
+<p>
 Because <tt class="method">__del__</tt> methods don't make good sense for persistent
 objects, and can create problems, persistent classes should not define
 <tt class="method">__del__</tt> methods.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000360000000000000000">
-2.6 Writing Persistent Classes</A>
-</H2>
+<h2><a name="SECTION000360000000000000000">
+2.6 Writing Persistent Classes</a>
+</h2>
 
-<P>
+<p>
 Now that we've looked at the basics of programming using the ZODB,
 we'll turn to some more subtle tasks that are likely to come up for
 anyone using the ZODB in a production system.
 
-<P>
+<p>
 
-<H3><A NAME="SECTION000361000000000000000">
-2.6.1 Changing Instance Attributes</A>
-</H3>
+<h3><a name="SECTION000361000000000000000">
+2.6.1 Changing Instance Attributes</a>
+</h3>
 
-<P>
+<p>
 Ideally, before making a class persistent you would get its interface
 right the first time, so that no attributes would ever need to be
 added, removed, or have their interpretation change over time.  It's a
@@ -635,7 +618,7 @@
 of the data contained by an object, so you're implicitly changing the
 schema.
 
-<P>
+<p>
 One way to handle such a change is to write a one-time conversion
 program that will loop over every single object in the database and
 update them to match the new schema.  This can be easy if your network
@@ -651,52 +634,47 @@
 that would walk over every single object in a ZODB, checking each one
 to see if it's an instance of <tt class="class">User</tt>.
 
-<P>
+<p>
 Some OODBs support a feature called extents, which allow quickly
 finding all the instances of a given class, no matter where they are
 in the object graph; unfortunately the ZODB doesn't offer extents as a
 feature.
 
-<P>
+<p>
 
-<P>
+<p>
 
-<DIV CLASS="navigation">
-<div class='online-navigation'>
-<p></p><hr />
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="1 Introduction"
-  href="node2.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="3 ZEO"
-  href="zeo.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="node2.html">1 Introduction</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="zeo.html">3 ZEO</A>
+<div class="navigation">
+<div id='bot-navigation-panel' xml:id='bot-navigation-panel'
+     class='online-navigation'>
+  <div class='spacer'></div>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="1 Introduction"
+        href="node2.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="3 ZEO"
+        href="zeo.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='online-navigation text-links'>
+    Previous: <a rel="prev"      href="node2.html">1 Introduction</a>
+    Up: <a rel="parent"      href="zodb.html">ZODB/ZEO Programming Guide</a>
+    Next: <a rel="next"      href="zeo.html">3 ZEO</a>
+  </div>
+</div>
+<div class='spacer'></div>
+<span class="release-info">Documentation released on 27 April 2005.</span>
+<address>See <i><a href="about.html">About this document...</a></i>
+for information on suggesting changes.</address>
 </div>
 </div>
-<hr />
-<span class="release-info">Release 3.2.7, documentation updated on April 26, 2005.</span>
-</DIV>
 <!--End of Navigation Panel-->
 
-</BODY>
-</HTML>
+</div> <!-- page-wrapper -->
+</body>
+</html>


=== ZODB3/Doc/zodb/node5.html 1.2.6.19 => 1.2.6.20 ===
--- ZODB3/Doc/zodb/node5.html:1.2.6.19	Tue Apr 26 16:05:59 2005
+++ ZODB3/Doc/zodb/node5.html	Wed Apr 27 15:08:21 2005
@@ -2,82 +2,65 @@
 <html>
 <head>
 <link rel="STYLESHEET" href="zodb.css" type='text/css' />
-<link rel="first" href="zodb.html" title='ZODB/ZEO Programming Guide' />
+<link rel="first" href="zodb.html" title='ZODB/ZEO programming Guide' />
 <link rel='contents' href='contents.html' title="Contents" />
 <link rel='last' href='about.html' title='About this document...' />
 <link rel='help' href='about.html' title='About this document...' />
-<link rel="next" href="node6.html" />
 <link rel="prev" href="zeo.html" />
 <link rel="parent" href="zodb.html" />
 <link rel="next" href="node6.html" />
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name='aesop' content='information' />
 <title>4 Transactions and Versioning</title>
 </head>
 <body>
-<DIV CLASS="navigation">
+<div class="page-wrapper">
+<div class="navigation">
 <div id='top-navigation-panel' xml:id='top-navigation-panel'>
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="3 ZEO"
-  href="zeo.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="5 Related Modules"
-  href="node6.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="zeo.html">3 ZEO</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="node6.html">5 Related Modules</A>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="3 ZEO"
+        href="zeo.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="5 related Modules"
+        href="node6.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='spacer'></div>
+</div>
 </div>
-<hr /></div>
-</DIV>
 <!--End of Navigation Panel-->
-<div class='online-navigation'>
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></a>
-
-<UL CLASS="ChildLinks">
-<LI><A href="node5.html#SECTION000510000000000000000">4.1 Subtransactions</a>
-<LI><A href="node5.html#SECTION000520000000000000000">4.2 Undoing Changes</a>
-<LI><A href="node5.html#SECTION000530000000000000000">4.3 Versions</a>
-<LI><A href="node5.html#SECTION000540000000000000000">4.4 Multithreaded ZODB Programs</a>
+
+<ul class="ChildLinks">
+<li><a href="node5.html#SECTION000510000000000000000">4.1 Subtransactions</a>
+<li><a href="node5.html#SECTION000520000000000000000">4.2 Undoing Changes</a>
+<li><a href="node5.html#SECTION000530000000000000000">4.3 Versions</a>
+<li><a href="node5.html#SECTION000540000000000000000">4.4 Multithreaded ZODB Programs</a>
 </ul>
 <!--End of Table of Child-Links-->
-</div>
-<HR>
+<hr>
 
-<H1><A NAME="SECTION000500000000000000000">
-4 Transactions and Versioning</A>
-</H1>
+<h1><a name="SECTION000500000000000000000">
+4 Transactions and Versioning</a>
+</h1>
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000510000000000000000">
-4.1 Subtransactions</A>
-</H2>
+<h2><a name="SECTION000510000000000000000">
+4.1 Subtransactions</a>
+</h2>
 
-<P>
+<p>
 Subtransactions can be created within a transaction.  Each
 subtransaction can be individually committed and aborted, but the
 changes within a subtransaction are not truly committed until the
 containing transaction is committed.
 
-<P>
+<p>
 The primary purpose of subtransactions is to decrease the memory usage
 of transactions that touch a very large number of objects.  Consider a
 transaction during which 200,000 objects are modified.  All the
@@ -89,12 +72,12 @@
 objects are then written to permanent storage and can be purged from
 the cache to free more space.
 
-<P>
+<p>
 To commit a subtransaction instead of a full transaction, 
 pass a true value to the <tt class="method">commit()</tt>
 or <tt class="method">abort()</tt> method of the <tt class="class">Transaction</tt> object.
 
-<P>
+<p>
 <div class="verbatim"><pre>
 # Commit a subtransaction
 get_transaction().commit(1)     
@@ -103,17 +86,17 @@
 get_transaction().abort(1)
 </pre></div>
 
-<P>
+<p>
 A new subtransaction is automatically started on committing or
 aborting the previous subtransaction.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000520000000000000000">
-4.2 Undoing Changes</A>
-</H2>
+<h2><a name="SECTION000520000000000000000">
+4.2 Undoing Changes</a>
+</h2>
 
-<P>
+<p>
 Some types of <tt class="class">Storage</tt> support undoing a transaction even after
 it's been committed.  You can tell if this is the case by calling the
 <tt class="method">supportsUndo()</tt> method of the <tt class="class">DB</tt> instance, which
@@ -121,7 +104,7 @@
 you can call the <tt class="method">supportsUndo()</tt> method on the underlying
 storage instance.
 
-<P>
+<p>
 If a database supports undo, then the <tt class="method">undoLog(<var>start</var>,
 <var>end</var><big>[</big>, func<big>]</big>)</tt> method on the <tt class="class">DB</tt> instance returns
 the log of past transactions, returning transactions between the times
@@ -135,7 +118,7 @@
 "<tt class="samp">id</tt>", for the transaction ID, and "<tt class="samp">time</tt>", for the time at
 which the transaction was committed.  
 
-<P>
+<p>
 <div class="verbatim"><pre>
 &gt;&gt;&gt; print storage.undoLog(0, sys.maxint)
 [{'description': '',
@@ -149,7 +132,7 @@
   ...
 </pre></div>
 
-<P>
+<p>
 To store a description and a user name on a commit, get the current
 transaction and call the <tt class="method">note(<var>text</var>)</tt> method to store a
 description, and the
@@ -160,13 +143,13 @@
 log several different changes made in the course of a single
 transaction.
 
-<P>
+<p>
 <div class="verbatim"><pre>
 get_transaction().setUser('amk')
 get_transaction().note('Change ownership')
 </pre></div>
 
-<P>
+<p>
 To undo a transaction, call the <tt class="method">DB.undo(<var>id</var>)</tt> method,
 passing it the ID of the transaction to undo.  If the transaction
 can't be undone, a <tt class="exception">ZODB.POSException.UndoError</tt> exception
@@ -175,21 +158,21 @@
 modified the objects affected by the transaction you're trying to
 undo.
 
-<P>
+<p>
 After you call <tt class="method">undo()</tt> you must commit the transaction for the
 undo to actually be applied.
-<A NAME="tex2html2"
-  HREF="#foot616"><SUP>2</SUP></A>  There is one glitch in the undo process.  The thread
+<a name="tex2html2"
+  href="#foot614"><sup>2</sup></a>  There is one glitch in the undo process.  The thread
 that calls undo may not see the changes to the object until it calls
 <tt class="method">Connection.sync()</tt> or commits another transaction.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000530000000000000000">
-4.3 Versions</A>
-</H2>
+<h2><a name="SECTION000530000000000000000">
+4.3 Versions</a>
+</h2>
 
-<P>
+<p>
 While many subtransactions can be contained within a single regular
 transaction, it's also possible to contain many regular transactions
 within a long-running transaction, called a version in ZODB
@@ -197,24 +180,24 @@
 created and committed or rolled back, but the changes within a version
 are not made visible to other connections to the same ZODB.
 
-<P>
+<p>
 Not all storages support versions, but you can test for versioning
 ability by calling <tt class="method">supportsVersions()</tt> method of the
 <tt class="class">DB</tt> instance, which returns true if the underlying storage
 supports versioning.
 
-<P>
+<p>
 A version can be selected when creating the <tt class="class">Connection</tt>
 instance using the <tt class="method">DB.open(<big>[</big><var>version</var><big>]</big>)</tt> method.
 The <var>version</var> argument must be a string that will be used as the
 name of the version.
 
-<P>
+<p>
 <div class="verbatim"><pre>
 vers_conn = db.open(version='Working version')
 </pre></div>
 
-<P>
+<p>
 Transactions can then be committed and aborted using this versioned
 connection.  Other connections that don't specify a version, or
 provide a different version name, will not see changes committed
@@ -224,14 +207,14 @@
 <tt class="method">DB.abortVersion()</tt> methods.
 XXX what are the source and dest arguments for?
 
-<P>
+<p>
 The ZODB makes no attempt to reconcile changes between different
 versions.  Instead, the first version which modifies an object will
 gain a lock on that object.  Attempting to modify the object from a
 different version or from an unversioned connection will cause a
 <tt class="exception">ZODB.POSException.VersionLockError</tt> to be raised:
 
-<P>
+<p>
 <div class="verbatim"><pre>
 from ZODB.POSException import VersionLockError
 
@@ -242,73 +225,66 @@
            'locked by version %s' % (obj_id, version))
 </pre></div>
 
-<P>
+<p>
 The exception provides the ID of the locked object, and the name of
 the version having a lock on it.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000540000000000000000">
-4.4 Multithreaded ZODB Programs</A>
-</H2>
+<h2><a name="SECTION000540000000000000000">
+4.4 Multithreaded ZODB Programs</a>
+</h2>
 
-<P>
+<p>
 ZODB databases can be accessed from multithreaded Python programs.
 The <tt class="class">Storage</tt> and <tt class="class">DB</tt> instances can be shared among
 several threads, as long as individual <tt class="class">Connection</tt> instances
 are created for each thread.  
 
-<P>
-
-<P>
-<BR><HR><H4>Footnotes</H4>
-<DL>
-<DT><A NAME="foot616">... applied.</A><A
- HREF="node5.html#tex2html2"><SUP>2</SUP></A></DT>
-<DD>There are actually two different ways a storage can
+<p>
+<br><hr><h4>Footnotes</h4>
+<dl>
+<dt><a name="foot614">... applied.</a><A
+ HREF="node5.html#tex2html2"><sup>2</sup></a></dt>
+<dd>There are actually two different ways a storage can
 implement the undo feature.  Most of the storages that ship with ZODB
 use the transactional form of undo described in the main text.  Some
 storages may use a non-transactional undo makes changes visible
 immediately.
 
-</DD>
-</DL>
-<DIV CLASS="navigation">
-<div class='online-navigation'>
-<p></p><hr />
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="3 ZEO"
-  href="zeo.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="5 Related Modules"
-  href="node6.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="zeo.html">3 ZEO</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="node6.html">5 Related Modules</A>
+</dd>
+</dl>
+<div class="navigation">
+<div id='bot-navigation-panel' xml:id='bot-navigation-panel'
+     class='online-navigation'>
+  <div class='spacer'></div>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="3 ZEO"
+        href="zeo.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="5 related Modules"
+        href="node6.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='online-navigation text-links'>
+    Previous: <a rel="prev"      href="zeo.html">3 ZEO</a>
+    Up: <a rel="parent"      href="zodb.html">ZODB/ZEO Programming Guide</a>
+    Next: <a rel="next"      href="node6.html">5 Related Modules</a>
+  </div>
+</div>
+<div class='spacer'></div>
+<span class="release-info">Documentation released on 27 April 2005.</span>
+<address>See <i><a href="about.html">About this document...</a></i>
+for information on suggesting changes.</address>
 </div>
 </div>
-<hr />
-<span class="release-info">Release 3.2.7, documentation updated on April 26, 2005.</span>
-</DIV>
 <!--End of Navigation Panel-->
 
-</BODY>
-</HTML>
+</div> <!-- page-wrapper -->
+</body>
+</html>


=== ZODB3/Doc/zodb/node6.html 1.2.6.19 => 1.2.6.20 ===
--- ZODB3/Doc/zodb/node6.html:1.2.6.19	Tue Apr 26 16:05:59 2005
+++ ZODB3/Doc/zodb/node6.html	Wed Apr 27 15:08:21 2005
@@ -2,86 +2,69 @@
 <html>
 <head>
 <link rel="STYLESHEET" href="zodb.css" type='text/css' />
-<link rel="first" href="zodb.html" title='ZODB/ZEO Programming Guide' />
+<link rel="first" href="zodb.html" title='ZODB/ZEO programming Guide' />
 <link rel='contents' href='contents.html' title="Contents" />
 <link rel='last' href='about.html' title='About this document...' />
 <link rel='help' href='about.html' title='About this document...' />
-<link rel="next" href="node7.html" />
 <link rel="prev" href="node5.html" />
 <link rel="parent" href="zodb.html" />
 <link rel="next" href="node7.html" />
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name='aesop' content='information' />
 <title>5 Related Modules</title>
 </head>
 <body>
-<DIV CLASS="navigation">
+<div class="page-wrapper">
+<div class="navigation">
 <div id='top-navigation-panel' xml:id='top-navigation-panel'>
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="4 Transactions and Versioning"
-  href="node5.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="A. Resources"
-  href="node7.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="node5.html">4 Transactions and Versioning</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="node7.html">A. Resources</A>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="4 transactions and Versioning"
+        href="node5.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="A. Resources"
+        href="node7.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='spacer'></div>
+</div>
 </div>
-<hr /></div>
-</DIV>
 <!--End of Navigation Panel-->
-<div class='online-navigation'>
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></a>
-
-<UL CLASS="ChildLinks">
-<LI><A href="node6.html#SECTION000610000000000000000">5.1 <tt class="module">ZODB.PersistentMapping</tt></a>
-<LI><A href="node6.html#SECTION000620000000000000000">5.2 <tt class="module">ZODB.PersistentList</tt></a>
-<LI><A href="node6.html#SECTION000630000000000000000">5.3 BTrees Package</a>
-<UL>
-<LI><A href="node6.html#SECTION000631000000000000000">5.3.1 Total Ordering and Persistence</a>
+
+<ul class="ChildLinks">
+<li><a href="node6.html#SECTION000610000000000000000">5.1 <tt class="module">ZODB.PersistentMapping</tt></a>
+<li><a href="node6.html#SECTION000620000000000000000">5.2 <tt class="module">ZODB.PersistentList</tt></a>
+<li><a href="node6.html#SECTION000630000000000000000">5.3 BTrees Package</a>
+<ul>
+<li><a href="node6.html#SECTION000631000000000000000">5.3.1 Total Ordering and Persistence</a>
 </ul></ul>
 <!--End of Table of Child-Links-->
-</div>
-<HR>
+<hr>
 
-<H1><A NAME="SECTION000600000000000000000">
-5 Related Modules</A>
-</H1>
+<h1><a name="SECTION000600000000000000000">
+5 Related Modules</a>
+</h1>
 
-<P>
+<p>
 The ZODB package includes a number of related modules that provide
 useful data types such as BTrees.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000610000000000000000">
-5.1 <tt class="module">ZODB.PersistentMapping</tt></A>
-</H2>
+<h2><a name="SECTION000610000000000000000">
+5.1 <tt class="module">ZODB.PersistentMapping</tt></a>
+</h2>
 
-<P>
+<p>
 The <tt class="class">PersistentMapping</tt> class is a wrapper for mapping objects
 that will set the dirty bit when the mapping is modified by setting or
 deleting a key.
 
-<P>
+<p>
 <dl><dt><table cellpadding="0" cellspacing="0"><tr valign="baseline">
   <td><nobr><b><tt id='l2h-1' xml:id='l2h-1' class="function">PersistentMapping</tt></b>(</nobr></td>
   <td><var>container = {}</var>)</td></tr></table></dt>
@@ -91,21 +74,21 @@
 value for <var>container</var>, a regular Python dictionary is used.
 </dl>
 
-<P>
+<p>
 <tt class="class">PersistentMapping</tt> objects support all the same methods as
 Python dictionaries do.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000620000000000000000">
-5.2 <tt class="module">ZODB.PersistentList</tt></A>
-</H2>
+<h2><a name="SECTION000620000000000000000">
+5.2 <tt class="module">ZODB.PersistentList</tt></a>
+</h2>
 
-<P>
+<p>
 The <tt class="class">PersistentList</tt> class is a wrapper for mutable sequence objects,
 much as <tt class="class">PersistentMapping</tt> is a wrapper for mappings.
 
-<P>
+<p>
 <dl><dt><table cellpadding="0" cellspacing="0"><tr valign="baseline">
   <td><nobr><b><tt id='l2h-2' xml:id='l2h-2' class="function">PersistentList</tt></b>(</nobr></td>
   <td><var>initlist = []</var>)</td></tr></table></dt>
@@ -115,17 +98,17 @@
 value for <var>initlist</var>, a regular Python list is used.
 </dl>
 
-<P>
+<p>
 <tt class="class">PersistentList</tt> objects support all the same methods as
 Python lists do.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000630000000000000000">
-5.3 BTrees Package</A>
-</H2>
+<h2><a name="SECTION000630000000000000000">
+5.3 BTrees Package</a>
+</h2>
 
-<P>
+<p>
 When programming with the ZODB, Python dictionaries aren't always what
 you need.  The most important case is where you want to store a very
 large mapping.  When a Python dictionary is accessed in a ZODB, the
@@ -139,7 +122,7 @@
 entire tree doesn't have to occupy memory (unless you really are
 touching every single key).
 
-<P>
+<p>
 The BTrees package provides a large collection of related data
 structures.  There are variants of the data structures specialized to
 handle integer values, which are faster and use less memory.  There
@@ -149,7 +132,7 @@
 <tt class="module">BTrees.IOBTree</tt> module provides a mapping with integer
 keys and arbitrary objects as values.
 
-<P>
+<p>
 The four data structures provide by each module are a btree, a bucket,
 a tree set, and a set.  The btree and bucket types are mappings and
 support all the usual mapping methods, e.g. <tt class="function">update()</tt> and
@@ -166,7 +149,7 @@
 are multi-level tree structures with much better (logarithmic) worst-case
 time bounds.
 
-<P>
+<p>
 The four modules are named <tt class="module">OOBTree</tt>, <tt class="module">IOBTree</tt>,
 <tt class="module">OIBTree</tt>, and <tt class="module">IIBTree</tt>.  The two letter prefixes are
 repeated in the data types names.  The <tt class="module">BTrees.OOBTree</tt> module
@@ -174,7 +157,7 @@
 <tt class="class">OOSet</tt>, and <tt class="class">OOTreeSet</tt>.  Similarly, the other three modules
 each define their own variants of those four types.
 
-<P>
+<p>
 The <tt class="function">keys()</tt>, <tt class="function">values()</tt>, and <tt class="function">items()</tt>
 methods on btree and tree set types do not materialize a list with all
 of the data.  Instead, they return lazy sequences that fetch data
@@ -183,14 +166,14 @@
 searching".  Because all these types are stored in sorted order, range
 searching is very efficient.
 
-<P>
+<p>
 The <tt class="function">keys()</tt>, <tt class="function">values()</tt>, and <tt class="function">items()</tt>
 methods on bucket and set types do return lists with all the data.
 Starting in ZODB4, there are also <tt class="function">iterkeys()</tt>,
 <tt class="function">itervalues()</tt>, and <tt class="function">iteritems()</tt> methods that
 return iterators (in the Python 2.2 sense).
 
-<P>
+<p>
 A BTree object supports all the methods you would expect of a mapping
 with a few extensions that exploit the fact that the keys are sorted.
 The example below demonstrates how some of the methods work.  The
@@ -200,7 +183,7 @@
 (it's hard to explain exactly what it does, and as a result it's
 almost never used - best to consider it deprecated).
 
-<P>
+<p>
 <div class="verbatim"><pre>
 &gt;&gt;&gt; from BTrees.OOBTree import OOBTree
 &gt;&gt;&gt; t = OOBTree()
@@ -230,7 +213,7 @@
 2
 </pre></div>
 
-<P>
+<p>
 Each of the modules also defines some functions that operate on
 BTrees - <tt class="function">difference()</tt>, <tt class="function">union()</tt>, and
 <tt class="function">intersection()</tt>.  The <tt class="function">difference()</tt> function returns
@@ -241,42 +224,42 @@
 <tt class="function">weightedUnion()</tt>.  The function doc strings describe each
 function briefly.
 
-<P>
+<p>
 
-<H3><A NAME="SECTION000631000000000000000">
-5.3.1 Total Ordering and Persistence</A>
-</H3>
+<h3><a name="SECTION000631000000000000000">
+5.3.1 Total Ordering and Persistence</a>
+</h3>
 
-<P>
+<p>
 The BTree-based data structures differ from Python dicts in several
 fundamental ways.  One of the most important is that while dicts
 require that keys support hash codes and equality comparison,
 the btree-based structures don't use hash codes and require a total
 ordering on keys.
 
-<P>
+<p>
 Total ordering means three things:
 
-<P>
+<p>
 
-<OL>
-<LI>Reflexive.  For each <var>x</var>, <code><var>x</var> == <var>x</var></code> is true.
+<ol>
+<li>Reflexive.  For each <var>x</var>, <code><var>x</var> == <var>x</var></code> is true.
 
-<P>
-</LI>
-<LI>Trichotomy.  For each <var>x</var> and <var>y</var>, exactly one of
+<p>
+</li>
+<li>Trichotomy.  For each <var>x</var> and <var>y</var>, exactly one of
        <code><var>x</var> &lt; <var>y</var></code>, <code><var>x</var> == <var>y</var></code>, and
        <code><var>x</var> &gt; <var>y</var></code> is true.
 
-<P>
-</LI>
-<LI>Transitivity.  Whenever <code><var>x</var> &lt;= <var>y</var></code> and
+<p>
+</li>
+<li>Transitivity.  Whenever <code><var>x</var> &lt;= <var>y</var></code> and
        <code><var>y</var> &lt;= <var>z</var></code>, it's also true that
        <code><var>x</var> &lt;= <var>z</var></code>.
-</LI>
-</OL>
+</li>
+</ol>
 
-<P>
+<p>
 The default comparison functions for most objects that come with Python
 satisfy these rules, with some crucial cautions explained later.  Complex
 numbers are an example of an object whose default comparison function
@@ -287,13 +270,13 @@
 complex numbers can be used as keys in Python dicts, which do not require
 a total ordering).
 
-<P>
+<p>
 Examples of objects that are wholly safe to use as keys in btree-based
 structures include ints, longs, floats, 8-bit strings, Unicode strings,
 and tuples composed (possibly recursively) of objects of wholly safe
 types.
 
-<P>
+<p>
 It's important to realize that even if two types satisfy the
 rules on their own, mixing objects of those types may not.  For example,
 8-bit strings and Unicode strings both supply total orderings, but mixing
@@ -304,13 +287,13 @@
 a single btree-based structure.  Don't try to do that, and you don't
 have to worry about it.
 
-<P>
+<p>
 Another potential problem is mutability:  when a key is inserted in a
 btree-based structure, it must retain the same order relative to the
 other keys over time.  This is easy to run afoul of if you use mutable
 objects as keys.  For example, lists supply a total ordering, and then
 
-<P>
+<p>
 <div class="verbatim"><pre>
 &gt;&gt;&gt; L1, L2, L3 = [1], [2], [3]
 &gt;&gt;&gt; from BTrees.OOBTree import OOSet
@@ -327,13 +310,13 @@
 &gt;&gt;&gt;
 </pre></div>
 
-<P>
+<p>
 Key lookup relies on that the keys remain in sorted order (an efficient
 form of binary search is used).  By mutating key L2 after inserting it,
 we destroyed the invariant that the OOSet is sorted.  As a result, all
 future operations on this set are unpredictable.
 
-<P>
+<p>
 A subtler variant of this problem arises due to persistence:  by default,
 Python does several kinds of comparison by comparing the memory
 addresses of two objects.  Because Python never moves an object in memory,
@@ -349,7 +332,7 @@
 be an insane BTree, where various operations do and don't work as
 expected, seemingly at random.
 
-<P>
+<p>
 Now each of the types identified above as "wholly safe to use" never
 compares two instances of that type by memory address, so there's
 nothing to worry about here if you use keys of those types.  The most
@@ -360,7 +343,7 @@
 program run.  It can be disastrous if that btree-based structure is
 stored to a database, though.
 
-<P>
+<p>
 <div class="verbatim"><pre>
 &gt;&gt;&gt; class C:
 ...     pass
@@ -375,12 +358,12 @@
 &gt;&gt;&gt;
 </pre></div>
 
-<P>
+<p>
 That example illustrates that comparison of instances of classes that
 don't define <tt class="method">__cmp__()</tt> yields arbitrary results (but consistent
 results within a single program run).
 
-<P>
+<p>
 Another problem occurs with instances of classes that do define
 <tt class="method">__cmp__()</tt>, but define it incorrectly.  It's possible but
 rare for a custom <tt class="method">__cmp__()</tt> implementation to violate one
@@ -388,7 +371,7 @@
 it to fall back" to address-based comparison by mistake.
 For example,
 
-<P>
+<p>
 <div class="verbatim"><pre>
 class Mine:
     def __cmp__(self, other):
@@ -398,7 +381,7 @@
             return cmp(self.data, other)
 </pre></div>
 
-<P>
+<p>
 It's quite possible there that the <tt class="keyword">else</tt> clause allows
 a result to be computed based on memory address.  The bug won't show
 up until a btree-based structure uses objects of class <tt class="class">Mine</tt> as
@@ -407,82 +390,77 @@
 the <tt class="keyword">else</tt> clause in a case where the relative order of object
 memory addresses happened to change.
 
-<P>
+<p>
 This is as difficult to track down as it sounds, so best to stay far
 away from the possibility.
 
-<P>
+<p>
 You'll stay out of trouble by follwing these rules, violating them
 only with great care:
 
-<P>
+<p>
 
-<OL>
-<LI>Use objects of simple immutable types as keys in
+<ol>
+<li>Use objects of simple immutable types as keys in
        btree-based data structures.
 
-<P>
-</LI>
-<LI>Within a single btree-based data structure, use objects of
+<p>
+</li>
+<li>Within a single btree-based data structure, use objects of
        a single type as keys.  Don't use multiple key types in a
        single structure.
 
-<P>
-</LI>
-<LI>If you want to use class instances as keys, and there's
+<p>
+</li>
+<li>If you want to use class instances as keys, and there's
        any possibility that the structure may be stored in a
        database, it's crucial that the class define a
        <tt class="method">__cmp__()</tt> method, and that the method is
        carefully implemented.
 
-<P>
+<p>
 Any part of a comparison implementation that relies (explicitly
        or implicitly) on an address-based comparison result will
        eventually cause serious failure.
-</LI>
-</OL>
+</li>
+</ol>
 
-<P>
+<p>
 
 
-<P>
+<p>
 
-<DIV CLASS="navigation">
-<div class='online-navigation'>
-<p></p><hr />
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="4 Transactions and Versioning"
-  href="node5.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="A. Resources"
-  href="node7.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="node5.html">4 Transactions and Versioning</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="node7.html">A. Resources</A>
+<div class="navigation">
+<div id='bot-navigation-panel' xml:id='bot-navigation-panel'
+     class='online-navigation'>
+  <div class='spacer'></div>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="4 transactions and Versioning"
+        href="node5.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="A. Resources"
+        href="node7.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='online-navigation text-links'>
+    Previous: <a rel="prev"      href="node5.html">4 Transactions and Versioning</a>
+    Up: <a rel="parent"      href="zodb.html">ZODB/ZEO Programming Guide</a>
+    Next: <a rel="next"      href="node7.html">A. Resources</a>
+  </div>
+</div>
+<div class='spacer'></div>
+<span class="release-info">Documentation released on 27 April 2005.</span>
+<address>See <i><a href="about.html">About this document...</a></i>
+for information on suggesting changes.</address>
 </div>
 </div>
-<hr />
-<span class="release-info">Release 3.2.7, documentation updated on April 26, 2005.</span>
-</DIV>
 <!--End of Navigation Panel-->
 
-</BODY>
-</HTML>
+</div> <!-- page-wrapper -->
+</body>
+</html>


=== ZODB3/Doc/zodb/node7.html 1.2.6.19 => 1.2.6.20 ===
--- ZODB3/Doc/zodb/node7.html:1.2.6.19	Tue Apr 26 16:05:59 2005
+++ ZODB3/Doc/zodb/node7.html	Wed Apr 27 15:08:21 2005
@@ -2,123 +2,102 @@
 <html>
 <head>
 <link rel="STYLESHEET" href="zodb.css" type='text/css' />
-<link rel="first" href="zodb.html" title='ZODB/ZEO Programming Guide' />
+<link rel="first" href="zodb.html" title='ZODB/ZEO programming Guide' />
 <link rel='contents' href='contents.html' title="Contents" />
 <link rel='last' href='about.html' title='About this document...' />
 <link rel='help' href='about.html' title='About this document...' />
-<link rel="next" href="node8.html" />
 <link rel="prev" href="node6.html" />
 <link rel="parent" href="zodb.html" />
 <link rel="next" href="node8.html" />
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name='aesop' content='information' />
 <title>A. Resources</title>
 </head>
 <body>
-<DIV CLASS="navigation">
+<div class="page-wrapper">
+<div class="navigation">
 <div id='top-navigation-panel' xml:id='top-navigation-panel'>
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="5 Related Modules"
-  href="node6.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="B. GNU Free Documentation"
-  href="node8.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="node6.html">5 Related Modules</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="node8.html">B. GNU Free Documentation</A>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="5 related Modules"
+        href="node6.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="B. gnu Free Documentation"
+        href="node8.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='spacer'></div>
+</div>
 </div>
-<hr /></div>
-</DIV>
 <!--End of Navigation Panel-->
 
-<H1><A NAME="SECTION000700000000000000000">
-A. Resources</A>
-</H1>
+<h1><a name="SECTION000700000000000000000">
+A. Resources</a>
+</h1>
 
-<P>
+<p>
 ZODB HOWTO, by Michel Pelletier:
 
-<BR>
+<br>
 Goes into slightly more detail about the rules for writing applications using the ZODB.
 
-<BR>
-<a class="url" href="http://www.zope.org/Members/michel/HowTos/ZODB-How-To">http://www.zope.org/Members/michel/HowTos/ZODB-How-To</a>
-<P>
+<br><a class="url" href="http://www.zope.org/Members/michel/HowTos/ZODB-How-To">http://www.zope.org/Members/michel/HowTos/ZODB-How-To</a>
+<p>
 Introduction to the Zope Object Database, by Jim Fulton:
 
-<BR>
+<br>
 Goes into much greater detail, explaining advanced uses of the ZODB and 
 how it's actually implemented.  A definitive reference, and highly recommended.
 
-<BR>
-<a class="url" href="http://www.python.org/workshops/2000-01/proceedings/papers/fulton/zodb3.html">http://www.python.org/workshops/2000-01/proceedings/papers/fulton/zodb3.html</a>
-<P>
+<br><a class="url" href="http://www.python.org/workshops/2000-01/proceedings/papers/fulton/zodb3.html">http://www.python.org/workshops/2000-01/proceedings/papers/fulton/zodb3.html</a>
+<p>
 Persistent Programing with ZODB, by Jeremy Hylton and Barry Warsaw:
 
-<BR>
+<br>
 Slides for a tutorial presented at the 10th Python conference.  Covers
 much of the same ground as this guide, with more details in some areas
 and less in others.
 
-<BR>
-<a class="url" href="http://www.zope.org/Members/bwarsaw/ipc10-slides">http://www.zope.org/Members/bwarsaw/ipc10-slides</a>
-<P>
-
-<P>
-
-<DIV CLASS="navigation">
-<div class='online-navigation'>
-<p></p><hr />
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="5 Related Modules"
-  href="node6.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="B. GNU Free Documentation"
-  href="node8.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="node6.html">5 Related Modules</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="node8.html">B. GNU Free Documentation</A>
+<br><a class="url" href="http://www.zope.org/Members/bwarsaw/ipc10-slides">http://www.zope.org/Members/bwarsaw/ipc10-slides</a>
+<p>
+
+<p>
+
+<div class="navigation">
+<div id='bot-navigation-panel' xml:id='bot-navigation-panel'
+     class='online-navigation'>
+  <div class='spacer'></div>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="5 related Modules"
+        href="node6.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="B. gnu Free Documentation"
+        href="node8.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='online-navigation text-links'>
+    Previous: <a rel="prev"      href="node6.html">5 Related Modules</a>
+    Up: <a rel="parent"      href="zodb.html">ZODB/ZEO Programming Guide</a>
+    Next: <a rel="next"      href="node8.html">B. GNU Free Documentation</a>
+  </div>
+</div>
+<div class='spacer'></div>
+<span class="release-info">Documentation released on 27 April 2005.</span>
+<address>See <i><a href="about.html">About this document...</a></i>
+for information on suggesting changes.</address>
 </div>
 </div>
-<hr />
-<span class="release-info">Release 3.2.7, documentation updated on April 26, 2005.</span>
-</DIV>
 <!--End of Navigation Panel-->
 
-</BODY>
-</HTML>
+</div> <!-- page-wrapper -->
+</body>
+</html>


=== ZODB3/Doc/zodb/node8.html 1.2.6.19 => 1.2.6.20 ===
--- ZODB3/Doc/zodb/node8.html:1.2.6.19	Tue Apr 26 16:05:59 2005
+++ ZODB3/Doc/zodb/node8.html	Wed Apr 27 15:08:21 2005
@@ -2,98 +2,81 @@
 <html>
 <head>
 <link rel="STYLESHEET" href="zodb.css" type='text/css' />
-<link rel="first" href="zodb.html" title='ZODB/ZEO Programming Guide' />
+<link rel="first" href="zodb.html" title='ZODB/ZEO programming Guide' />
 <link rel='contents' href='contents.html' title="Contents" />
 <link rel='last' href='about.html' title='About this document...' />
 <link rel='help' href='about.html' title='About this document...' />
-<link rel="next" href="about.html" />
 <link rel="prev" href="node7.html" />
 <link rel="parent" href="zodb.html" />
 <link rel="next" href="about.html" />
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name='aesop' content='information' />
 <title>B. GNU Free Documentation License</title>
 </head>
 <body>
-<DIV CLASS="navigation">
+<div class="page-wrapper">
+<div class="navigation">
 <div id='top-navigation-panel' xml:id='top-navigation-panel'>
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="A. Resources"
-  href="node7.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="About this document ..."
-  href="about.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="node7.html">A. Resources</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="about.html">About this document ...</A>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="A. Resources"
+        href="node7.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="About this document ..."
+        href="about.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='spacer'></div>
+</div>
 </div>
-<hr /></div>
-</DIV>
 <!--End of Navigation Panel-->
-<div class='online-navigation'>
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></a>
-
-<UL CLASS="ChildLinks">
-<LI><A href="node8.html#SECTION000810000000000000000">Preamble</a>
-<LI><A href="node8.html#SECTION000820000000000000000">B..1 Applicability and Definitions</a>
-<LI><A href="node8.html#SECTION000830000000000000000">B..2 Verbatim Copying</a>
-<LI><A href="node8.html#SECTION000840000000000000000">B..3 Copying in Quantity</a>
-<LI><A href="node8.html#SECTION000850000000000000000">B..4 Modifications</a>
-<LI><A href="node8.html#SECTION000860000000000000000">B..5 Combining Documents</a>
-<LI><A href="node8.html#SECTION000870000000000000000">B..6 Collections of Documents</a>
-<LI><A href="node8.html#SECTION000880000000000000000">B..7 Aggregation With Independent Works</a>
-<LI><A href="node8.html#SECTION000890000000000000000">B..8 Translation</a>
-<LI><A href="node8.html#SECTION0008100000000000000000">B..9 Termination</a>
-<LI><A href="node8.html#SECTION0008110000000000000000">B..10 Future Revisions of This Licence</a>
-<LI><A href="node8.html#SECTION0008120000000000000000">ADDENDUM: How to use this License for your documents</a>
+
+<ul class="ChildLinks">
+<li><a href="node8.html#SECTION000810000000000000000">Preamble</a>
+<li><a href="node8.html#SECTION000820000000000000000">B..1 Applicability and Definitions</a>
+<li><a href="node8.html#SECTION000830000000000000000">B..2 Verbatim Copying</a>
+<li><a href="node8.html#SECTION000840000000000000000">B..3 Copying in Quantity</a>
+<li><a href="node8.html#SECTION000850000000000000000">B..4 Modifications</a>
+<li><a href="node8.html#SECTION000860000000000000000">B..5 Combining Documents</a>
+<li><a href="node8.html#SECTION000870000000000000000">B..6 Collections of Documents</a>
+<li><a href="node8.html#SECTION000880000000000000000">B..7 Aggregation With Independent Works</a>
+<li><a href="node8.html#SECTION000890000000000000000">B..8 Translation</a>
+<li><a href="node8.html#SECTION0008100000000000000000">B..9 Termination</a>
+<li><a href="node8.html#SECTION0008110000000000000000">B..10 Future Revisions of This Licence</a>
+<li><a href="node8.html#SECTION0008120000000000000000">ADDENDUM: How to use this License for your documents</a>
 </ul>
 <!--End of Table of Child-Links-->
-</div>
-<HR>
+<hr>
 
-<H1><A NAME="SECTION000800000000000000000">
-B. GNU Free Documentation License</A>
-</H1>
+<h1><a name="SECTION000800000000000000000">
+B. GNU Free Documentation License</a>
+</h1>
 
-<P>
+<p>
 Version 1.1, March 2000
-<BR>
-<P>
-Copyright <SPAN CLASS="MATH"><IMG
- WIDTH="20" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
+<br>
+<p>
+Copyright <span class="MATH"><IMG
+ WIDTH="20" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
  SRC="img1.png"
- ALT="$\copyright$"></SPAN> 2000  Free Software Foundation, Inc.
-<BR>
+ ALT="$\copyright$"></span> 2000  Free Software Foundation, Inc.
+<br>
 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-<BR>
+<br>
 Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000810000000000000000">
-Preamble</A>
-</H2>
+<h2><a name="SECTION000810000000000000000">
+Preamble</a>
+</h2>
 
-<P>
+<p>
 The purpose of this License is to make a manual, textbook, or other
 written document ``free'' in the sense of freedom: to assure everyone
 the effective freedom to copy and redistribute it, with or without
@@ -102,13 +85,13 @@
 credit for their work, while not being considered responsible for
 modifications made by others.
 
-<P>
+<p>
 This License is a kind of ``copyleft'', which means that derivative
 works of the document must themselves be free in the same sense.  It
 complements the GNU General Public License, which is a copyleft
 license designed for free software.
 
-<P>
+<p>
 We have designed this License in order to use it for manuals for free
 software, because free software needs free documentation: a free
 program should come with manuals providing the same freedoms that the
@@ -117,25 +100,25 @@
 whether it is published as a printed book.  We recommend this License
 principally for works whose purpose is instruction or reference.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000820000000000000000">
-B..1 Applicability and Definitions</A>
-</H2>
+<h2><a name="SECTION000820000000000000000">
+B..1 Applicability and Definitions</a>
+</h2>
 
-<P>
+<p>
 This License applies to any manual or other work that contains a
 notice placed by the copyright holder saying it can be distributed
 under the terms of this License.  The ``Document'', below, refers to any
 such manual or work.  Any member of the public is a licensee, and is
 addressed as ``you''.
 
-<P>
+<p>
 A ``Modified Version'' of the Document means any work containing the
 Document or a portion of it, either copied verbatim, or with
 modifications and/or translated into another language.
 
-<P>
+<p>
 A ``Secondary Section'' is a named appendix or a front-matter section of
 the Document that deals exclusively with the relationship of the
 publishers or authors of the Document to the Document's overall subject
@@ -147,17 +130,17 @@
 commercial, philosophical, ethical or political position regarding
 them.
 
-<P>
+<p>
 The ``Invariant Sections'' are certain Secondary Sections whose titles
 are designated, as being those of Invariant Sections, in the notice
 that says that the Document is released under this License.
 
-<P>
+<p>
 The ``Cover Texts'' are certain short passages of text that are listed,
 as Front-Cover Texts or Back-Cover Texts, in the notice that says that
 the Document is released under this License.
 
-<P>
+<p>
 A ``Transparent'' copy of the Document means a machine-readable copy,
 represented in a format whose specification is available to the
 general public, whose contents can be viewed and edited directly and
@@ -170,7 +153,7 @@
 subsequent modification by readers is not Transparent.  A copy that is
 not ``Transparent'' is called ``Opaque''.
 
-<P>
+<p>
 Examples of suitable formats for Transparent copies include plain
 ASCII without markup, Texinfo input format, <span class="LaTeX">LaTeX</span>&nbsp;input format, SGML
 or XML using a publicly available DTD, and standard-conforming simple
@@ -181,7 +164,7 @@
 machine-generated HTML produced by some word processors for output
 purposes only.
 
-<P>
+<p>
 The ``Title Page'' means, for a printed book, the title page itself,
 plus such following pages as are needed to hold, legibly, the material
 this License requires to appear in the title page.  For works in
@@ -189,13 +172,13 @@
 the text near the most prominent appearance of the work's title,
 preceding the beginning of the body of the text.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000830000000000000000">
-B..2 Verbatim Copying</A>
-</H2>
+<h2><a name="SECTION000830000000000000000">
+B..2 Verbatim Copying</a>
+</h2>
 
-<P>
+<p>
 You may copy and distribute the Document in any medium, either
 commercially or noncommercially, provided that this License, the
 copyright notices, and the license notice saying this License applies
@@ -206,17 +189,17 @@
 compensation in exchange for copies.  If you distribute a large enough
 number of copies you must also follow the conditions in section 3.
 
-<P>
+<p>
 You may also lend copies, under the same conditions stated above, and
 you may publicly display copies.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000840000000000000000">
-B..3 Copying in Quantity</A>
-</H2>
+<h2><a name="SECTION000840000000000000000">
+B..3 Copying in Quantity</a>
+</h2>
 
-<P>
+<p>
 If you publish printed copies of the Document numbering more than 100,
 and the Document's license notice requires Cover Texts, you must enclose
 the copies in covers that carry, clearly and legibly, all these Cover
@@ -229,13 +212,13 @@
 the title of the Document and satisfy these conditions, can be treated
 as verbatim copying in other respects.
 
-<P>
+<p>
 If the required texts for either cover are too voluminous to fit
 legibly, you should put the first ones listed (as many as fit
 reasonably) on the actual cover, and continue the rest onto adjacent
 pages.
 
-<P>
+<p>
 If you publish or distribute Opaque copies of the Document numbering
 more than 100, you must either include a machine-readable Transparent
 copy along with each Opaque copy, or state in or with each Opaque copy
@@ -250,18 +233,18 @@
 copy (directly or through your agents or retailers) of that edition to
 the public.
 
-<P>
+<p>
 It is requested, but not required, that you contact the authors of the
 Document well before redistributing any large number of copies, to give
 them a chance to provide you with an updated version of the Document.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000850000000000000000">
-B..4 Modifications</A>
-</H2>
+<h2><a name="SECTION000850000000000000000">
+B..4 Modifications</a>
+</h2>
 
-<P>
+<p>
 You may copy and distribute a Modified Version of the Document under
 the conditions of sections 2 and 3 above, provided that you release
 the Modified Version under precisely this License, with the Modified
@@ -269,73 +252,73 @@
 and modification of the Modified Version to whoever possesses a copy
 of it.  In addition, you must do these things in the Modified Version:
 
-<P>
+<p>
 
-<UL>
-<LI>Use in the Title Page (and on the covers, if any) a title distinct
+<ul>
+<li>Use in the Title Page (and on the covers, if any) a title distinct
    from that of the Document, and from those of previous versions
    (which should, if there were any, be listed in the History section
    of the Document).  You may use the same title as a previous version
    if the original publisher of that version gives permission.
-</LI>
-<LI>List on the Title Page, as authors, one or more persons or entities
+</li>
+<li>List on the Title Page, as authors, one or more persons or entities
    responsible for authorship of the modifications in the Modified
    Version, together with at least five of the principal authors of the
    Document (all of its principal authors, if it has less than five).
-</LI>
-<LI>State on the Title page the name of the publisher of the
+</li>
+<li>State on the Title page the name of the publisher of the
    Modified Version, as the publisher.
-</LI>
-<LI>Preserve all the copyright notices of the Document.
-</LI>
-<LI>Add an appropriate copyright notice for your modifications
+</li>
+<li>Preserve all the copyright notices of the Document.
+</li>
+<li>Add an appropriate copyright notice for your modifications
    adjacent to the other copyright notices.
-</LI>
-<LI>Include, immediately after the copyright notices, a license notice
+</li>
+<li>Include, immediately after the copyright notices, a license notice
    giving the public permission to use the Modified Version under the
    terms of this License, in the form shown in the Addendum below.
-</LI>
-<LI>Preserve in that license notice the full lists of Invariant Sections
+</li>
+<li>Preserve in that license notice the full lists of Invariant Sections
    and required Cover Texts given in the Document's license notice.
-</LI>
-<LI>Include an unaltered copy of this License.
-</LI>
-<LI>Preserve the section entitled ``History'', and its title, and add to
+</li>
+<li>Include an unaltered copy of this License.
+</li>
+<li>Preserve the section entitled ``History'', and its title, and add to
    it an item stating at least the title, year, new authors, and
    publisher of the Modified Version as given on the Title Page.  If
    there is no section entitled ``History'' in the Document, create one
    stating the title, year, authors, and publisher of the Document as
    given on its Title Page, then add an item describing the Modified
    Version as stated in the previous sentence.
-</LI>
-<LI>Preserve the network location, if any, given in the Document for
+</li>
+<li>Preserve the network location, if any, given in the Document for
    public access to a Transparent copy of the Document, and likewise
    the network locations given in the Document for previous versions
    it was based on.  These may be placed in the ``History'' section.
    You may omit a network location for a work that was published at
    least four years before the Document itself, or if the original
    publisher of the version it refers to gives permission.
-</LI>
-<LI>In any section entitled ``Acknowledgements'' or ``Dedications'',
+</li>
+<li>In any section entitled ``Acknowledgements'' or ``Dedications'',
    preserve the section's title, and preserve in the section all the
    substance and tone of each of the contributor acknowledgements
    and/or dedications given therein.
-</LI>
-<LI>Preserve all the Invariant Sections of the Document,
+</li>
+<li>Preserve all the Invariant Sections of the Document,
    unaltered in their text and in their titles.  Section numbers
    or the equivalent are not considered part of the section titles.
-</LI>
-<LI>Delete any section entitled ``Endorsements''.  Such a section
+</li>
+<li>Delete any section entitled ``Endorsements''.  Such a section
    may not be included in the Modified Version.
-</LI>
-<LI>Do not retitle any existing section as ``Endorsements''
+</li>
+<li>Do not retitle any existing section as ``Endorsements''
    or to conflict in title with any Invariant Section.
 
-<P>
-</LI>
-</UL>
+<p>
+</li>
+</ul>
 
-<P>
+<p>
 If the Modified Version includes new front-matter sections or
 appendices that qualify as Secondary Sections and contain no material
 copied from the Document, you may at your option designate some or all
@@ -343,14 +326,14 @@
 list of Invariant Sections in the Modified Version's license notice.
 These titles must be distinct from any other section titles.
 
-<P>
+<p>
 You may add a section entitled ``Endorsements'', provided it contains
 nothing but endorsements of your Modified Version by various
 parties - for example, statements of peer review or that the text has
 been approved by an organization as the authoritative definition of a
 standard.
 
-<P>
+<p>
 You may add a passage of up to five words as a Front-Cover Text, and a
 passage of up to 25 words as a Back-Cover Text, to the end of the list
 of Cover Texts in the Modified Version.  Only one passage of
@@ -361,18 +344,18 @@
 you may not add another; but you may replace the old one, on explicit
 permission from the previous publisher that added the old one.
 
-<P>
+<p>
 The author(s) and publisher(s) of the Document do not by this License
 give permission to use their names for publicity for or to assert or
 imply endorsement of any Modified Version.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000860000000000000000">
-B..5 Combining Documents</A>
-</H2>
+<h2><a name="SECTION000860000000000000000">
+B..5 Combining Documents</a>
+</h2>
 
-<P>
+<p>
 You may combine the Document with other documents released under this
 License, under the terms defined in section 4 above for modified
 versions, provided that you include in the combination all of the
@@ -380,7 +363,7 @@
 list them all as Invariant Sections of your combined work in its
 license notice.
 
-<P>
+<p>
 The combined work need only contain one copy of this License, and
 multiple identical Invariant Sections may be replaced with a single
 copy.  If there are multiple Invariant Sections with the same name but
@@ -390,39 +373,39 @@
 Make the same adjustment to the section titles in the list of
 Invariant Sections in the license notice of the combined work.
 
-<P>
+<p>
 In the combination, you must combine any sections entitled ``History''
 in the various original documents, forming one section entitled
 ``History''; likewise combine any sections entitled ``Acknowledgements'',
 and any sections entitled ``Dedications''.  You must delete all sections
 entitled ``Endorsements.''
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000870000000000000000">
-B..6 Collections of Documents</A>
-</H2>
+<h2><a name="SECTION000870000000000000000">
+B..6 Collections of Documents</a>
+</h2>
 
-<P>
+<p>
 You may make a collection consisting of the Document and other documents
 released under this License, and replace the individual copies of this
 License in the various documents with a single copy that is included in
 the collection, provided that you follow the rules of this License for
 verbatim copying of each of the documents in all other respects.
 
-<P>
+<p>
 You may extract a single document from such a collection, and distribute
 it individually under this License, provided you insert a copy of this
 License into the extracted document, and follow this License in all
 other respects regarding verbatim copying of that document.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000880000000000000000">
-B..7 Aggregation With Independent Works</A>
-</H2>
+<h2><a name="SECTION000880000000000000000">
+B..7 Aggregation With Independent Works</a>
+</h2>
 
-<P>
+<p>
 A compilation of the Document or its derivatives with other separate
 and independent documents or works, in or on a volume of a storage or
 distribution medium, does not as a whole count as a Modified Version
@@ -432,20 +415,20 @@
 with the Document, on account of their being thus compiled, if they
 are not themselves derivative works of the Document.
 
-<P>
+<p>
 If the Cover Text requirement of section 3 is applicable to these
 copies of the Document, then if the Document is less than one quarter
 of the entire aggregate, the Document's Cover Texts may be placed on
 covers that surround only the Document within the aggregate.
 Otherwise they must appear on covers around the whole aggregate.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000890000000000000000">
-B..8 Translation</A>
-</H2>
+<h2><a name="SECTION000890000000000000000">
+B..8 Translation</a>
+</h2>
 
-<P>
+<p>
 Translation is considered a kind of modification, so you may
 distribute translations of the Document under the terms of section 4.
 Replacing Invariant Sections with translations requires special
@@ -457,13 +440,13 @@
 between the translation and the original English version of this
 License, the original English version will prevail.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION0008100000000000000000">
-B..9 Termination</A>
-</H2>
+<h2><a name="SECTION0008100000000000000000">
+B..9 Termination</a>
+</h2>
 
-<P>
+<p>
 You may not copy, modify, sublicense, or distribute the Document except
 as expressly provided for under this License.  Any other attempt to
 copy, modify, sublicense or distribute the Document is void, and will
@@ -472,20 +455,20 @@
 License will not have their licenses terminated so long as such
 parties remain in full compliance.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION0008110000000000000000">
-B..10 Future Revisions of This Licence</A>
-</H2>
+<h2><a name="SECTION0008110000000000000000">
+B..10 Future Revisions of This Licence</a>
+</h2>
 
-<P>
+<p>
 The Free Software Foundation may publish new, revised versions
 of the GNU Free Documentation License from time to time.  Such new
 versions will be similar in spirit to the present version, but may
 differ in detail to address new problems or concerns. See
 <a class="url" href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
 
-<P>
+<p>
 Each version of the License is given a distinguishing version number.
 If the Document specifies that a particular numbered version of this
 License "or any later version" applies to it, you have the option of
@@ -495,25 +478,25 @@
 number of this License, you may choose any version ever published (not
 as a draft) by the Free Software Foundation.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION0008120000000000000000">
-ADDENDUM: How to use this License for your documents</A>
-</H2>
+<h2><a name="SECTION0008120000000000000000">
+ADDENDUM: How to use this License for your documents</a>
+</h2>
 
-<P>
+<p>
 To use this License in a document you have written, include a copy of
 the License in the document and put the following copyright and
 license notices just after the title page:
 
-<P>
-<BLOCKQUOTE>
-</BLOCKQUOTE>
-<P>
-<BLOCKQUOTE>Copyright <SPAN CLASS="MATH"><IMG
- WIDTH="20" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
+<p>
+<blockquote>
+</blockquote>
+<p>
+<blockquote>Copyright <span class="MATH"><IMG
+ WIDTH="20" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
  SRC="img1.png"
- ALT="$\copyright$"></SPAN> YEAR  YOUR NAME.
+ ALT="$\copyright$"></span> YEAR  YOUR NAME.
       Permission is granted to copy, distribute and/or modify this document
       under the terms of the GNU Free Documentation License, Version 1.1
       or any later version published by the Free Software Foundation;
@@ -521,63 +504,56 @@
       Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
       A copy of the license is included in the section entitled ``GNU
       Free Documentation License''.
-</BLOCKQUOTE>
-<P>
-<BLOCKQUOTE>
-</BLOCKQUOTE>
+</blockquote>
+<p>
+<blockquote>
+</blockquote>
 
-<P>
+<p>
 If you have no Invariant Sections, write ``with no Invariant Sections''
 instead of saying which ones are invariant.  If you have no
 Front-Cover Texts, write ``no Front-Cover Texts'' instead of
 ``Front-Cover Texts being LIST''; likewise for Back-Cover Texts.
 
-<P>
+<p>
 If your document contains nontrivial examples of program code, we
 recommend releasing these examples in parallel under your choice of
 free software license, such as the GNU General Public License,
 to permit their use in free software.
 
-<P>
-
-<P>
+<p>
 
-<DIV CLASS="navigation">
-<div class='online-navigation'>
-<p></p><hr />
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="A. Resources"
-  href="node7.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="About this document ..."
-  href="about.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="node7.html">A. Resources</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="about.html">About this document ...</A>
+<div class="navigation">
+<div id='bot-navigation-panel' xml:id='bot-navigation-panel'
+     class='online-navigation'>
+  <div class='spacer'></div>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="A. Resources"
+        href="node7.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="About this document ..."
+        href="about.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='online-navigation text-links'>
+    Previous: <a rel="prev"      href="node7.html">A. Resources</a>
+    Up: <a rel="parent"      href="zodb.html">ZODB/ZEO Programming Guide</a>
+    Next: <a rel="next"      href="about.html">About this document ...</a>
+  </div>
+</div>
+<div class='spacer'></div>
+<span class="release-info">Documentation released on 27 April 2005.</span>
+<address>See <i><a href="about.html">About this document...</a></i>
+for information on suggesting changes.</address>
 </div>
 </div>
-<hr />
-<span class="release-info">Release 3.2.7, documentation updated on April 26, 2005.</span>
-</DIV>
 <!--End of Navigation Panel-->
 
-</BODY>
-</HTML>
+</div> <!-- page-wrapper -->
+</body>
+</html>


=== ZODB3/Doc/zodb/zeo.html 1.2.6.19 => 1.2.6.20 ===
--- ZODB3/Doc/zodb/zeo.html:1.2.6.19	Tue Apr 26 16:05:59 2005
+++ ZODB3/Doc/zodb/zeo.html	Wed Apr 27 15:08:21 2005
@@ -2,83 +2,66 @@
 <html>
 <head>
 <link rel="STYLESHEET" href="zodb.css" type='text/css' />
-<link rel="first" href="zodb.html" title='ZODB/ZEO Programming Guide' />
+<link rel="first" href="zodb.html" title='ZODB/ZEO programming Guide' />
 <link rel='contents' href='contents.html' title="Contents" />
 <link rel='last' href='about.html' title='About this document...' />
 <link rel='help' href='about.html' title='About this document...' />
-<link rel="next" href="node5.html" />
 <link rel="prev" href="node3.html" />
 <link rel="parent" href="zodb.html" />
 <link rel="next" href="node5.html" />
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name='aesop' content='information' />
 <title>3 ZEO</title>
 </head>
 <body>
-<DIV CLASS="navigation">
+<div class="page-wrapper">
+<div class="navigation">
 <div id='top-navigation-panel' xml:id='top-navigation-panel'>
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="2 ZODB Programming"
-  href="node3.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="4 Transactions and Versioning"
-  href="node5.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="node3.html">2 ZODB Programming</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="node5.html">4 Transactions and Versioning</A>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="2 zodb Programming"
+        href="node3.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="4 transactions and Versioning"
+        href="node5.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='spacer'></div>
+</div>
 </div>
-<hr /></div>
-</DIV>
 <!--End of Navigation Panel-->
-<div class='online-navigation'>
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></a>
-
-<UL CLASS="ChildLinks">
-<LI><A href="zeo.html#SECTION000410000000000000000">3.1 How ZEO Works</a>
-<LI><A href="zeo.html#SECTION000420000000000000000">3.2 Installing ZEO</a>
-<UL>
-<LI><A href="zeo.html#SECTION000421000000000000000">3.2.1 Requirements</a>
-<LI><A href="zeo.html#SECTION000422000000000000000">3.2.2 Running a server</a>
+
+<ul class="ChildLinks">
+<li><a href="zeo.html#SECTION000410000000000000000">3.1 How ZEO Works</a>
+<li><a href="zeo.html#SECTION000420000000000000000">3.2 Installing ZEO</a>
+<ul>
+<li><a href="zeo.html#SECTION000421000000000000000">3.2.1 Requirements</a>
+<li><a href="zeo.html#SECTION000422000000000000000">3.2.2 Running a server</a>
 </ul>
-<LI><A href="zeo.html#SECTION000430000000000000000">3.3 Testing the ZEO Installation</a>
-<LI><A href="zeo.html#SECTION000440000000000000000">3.4 ZEO Programming Notes</a>
-<LI><A href="zeo.html#SECTION000450000000000000000">3.5 Sample Application: chatter.py</a>
+<li><a href="zeo.html#SECTION000430000000000000000">3.3 Testing the ZEO Installation</a>
+<li><a href="zeo.html#SECTION000440000000000000000">3.4 ZEO Programming Notes</a>
+<li><a href="zeo.html#SECTION000450000000000000000">3.5 Sample Application: chatter.py</a>
 </ul>
 <!--End of Table of Child-Links-->
-</div>
-<HR>
+<hr>
 
-<H1><A NAME="SECTION000400000000000000000"></A>
-<A NAME="zeo"></A>
-<BR>
+<h1><a name="SECTION000400000000000000000"></a>
+<a name="zeo"></a>
+<br>
 3 ZEO
-</H1>
+</h1>
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000410000000000000000">
-3.1 How ZEO Works</A>
-</H2>
+<h2><a name="SECTION000410000000000000000">
+3.1 How ZEO Works</a>
+</h2>
 
-<P>
+<p>
 The ZODB, as I've described it so far, can only be used within a
 single Python process (though perhaps with multiple threads).  ZEO,
 Zope Enterprise Objects, extends the ZODB machinery to provide access
@@ -88,7 +71,7 @@
 The combination of ZEO and ZODB is essentially a Python-specific
 object database.
 
-<P>
+<p>
 ZEO consists of about 6000 lines of Python code, excluding tests.  The
 code is relatively small because it contains only code for a TCP/IP
 server, and for a new type of Storage, <tt class="class">ClientStorage</tt>.
@@ -96,10 +79,10 @@
 server, which then passes them on a regular <tt class="class">Storage</tt> class such
 as <tt class="class">FileStorage</tt>.  The following diagram lays out the system:
 
-<P>
+<p>
 XXX insert diagram here later
 
-<P>
+<p>
 Any number of processes can create a <tt class="class">ClientStorage</tt>
 instance, and any number of threads in each process can be using that
 instance.  <tt class="class">ClientStorage</tt> aggressively caches objects
@@ -110,7 +93,7 @@
 <tt class="class">ClientStorage</tt> instances delete the old data for the
 given object from their caches.
 
-<P>
+<p>
 This design decision has some consequences you should be aware of.
 First, while ZEO isn't tied to Zope, it was first written for use with
 Zope, which stores HTML, images, and program code in the database.  As
@@ -119,9 +102,9 @@
 applications.  If every <tt class="class">ClientStorage</tt> is writing to the
 database all the time, this will result in a storm of invalidate
 messages being sent, and this might take up more processing time than
-the actual database operations themselves.<A NAME="tex2html1"
-  HREF="#foot460"><SUP>1</SUP></A>
-<P>
+the actual database operations themselves.<a name="tex2html1"
+  href="#foot460"><sup>1</sup></a>
+<p>
 On the other hand, for applications that have few writes in comparison
 to the number of read accesses, this aggressive caching can be a major
 win.  Consider a Slashdot-like discussion forum that divides the load
@@ -136,46 +119,46 @@
 The ZEO server isn't going to be contacted for every single request,
 so its workload will remain manageable.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000420000000000000000">
-3.2 Installing ZEO</A>
-</H2>
+<h2><a name="SECTION000420000000000000000">
+3.2 Installing ZEO</a>
+</h2>
 
-<P>
+<p>
 This section covers how to install the ZEO package, and how to 
 configure and run a ZEO Storage Server on a machine. 
 
-<P>
+<p>
 
-<H3><A NAME="SECTION000421000000000000000">
-3.2.1 Requirements</A>
-</H3>
+<h3><a name="SECTION000421000000000000000">
+3.2.1 Requirements</a>
+</h3>
 
-<P>
+<p>
 The ZEO server software is included in ZODB3.  As with the rest of
 ZODB3, you'll need Python 2.1 or higher.
 
-<P>
+<p>
 
-<H3><A NAME="SECTION000422000000000000000">
-3.2.2 Running a server</A>
-</H3>
+<h3><a name="SECTION000422000000000000000">
+3.2.2 Running a server</a>
+</h3>
 
-<P>
+<p>
 The start.py script in the ZEO directory can be used to start a
 server.  Run it with the -h option to see the various values.  If
 you're just experimenting, a good choise is to use 
 <code>python ZEO/start.py -D -U /tmp/zeosocket</code> to run ZEO in
 debug mode and with a Unix domain socket.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000430000000000000000">
-3.3 Testing the ZEO Installation</A>
-</H2>
+<h2><a name="SECTION000430000000000000000">
+3.3 Testing the ZEO Installation</a>
+</h2>
 
-<P>
+<p>
 Once a ZEO server is up and running, using it is just like using ZODB
 with a more conventional disk-based storage; no new programming
 details are introduced by using a remote server.  The only difference
@@ -184,13 +167,13 @@
 code is happily unaware that objects are being retrieved from a ZEO
 server, and not from the local disk.
 
-<P>
+<p>
 As an example, and to test whether ZEO is working correctly, try
 running the following lines of code, which will connect to the server,
 add some bits of data to the root of the ZODB, and commits the
 transaction:
 
-<P>
+<p>
 <div class="verbatim"><pre>
 from ZEO import ClientStorage
 from ZODB import DB
@@ -210,16 +193,16 @@
 get_transaction().commit()
 </pre></div>
 
-<P>
+<p>
 If this code runs properly, then your ZEO server is working correctly.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000440000000000000000">
-3.4 ZEO Programming Notes</A>
-</H2>
+<h2><a name="SECTION000440000000000000000">
+3.4 ZEO Programming Notes</a>
+</h2>
 
-<P>
+<p>
 ZEO is written using <tt class="module">asyncore</tt>, from the Python standard
 library.  It assumes that some part of the user application is running
 an <tt class="module">asyncore</tt> mainloop.  For example, Zope run the loop in a
@@ -230,13 +213,13 @@
 when you want to make sure the <tt class="class">Connection</tt> has the most recent
 version of every object, but you don't have any other work for ZEO to do.
 
-<P>
+<p>
 
-<H2><A NAME="SECTION000450000000000000000">
-3.5 Sample Application: chatter.py</A>
-</H2>
+<h2><a name="SECTION000450000000000000000">
+3.5 Sample Application: chatter.py</a>
+</h2>
 
-<P>
+<p>
 For an example application, we'll build a little chat application.
 What's interesting is that none of the application's code deals with
 network programming at all; instead, an object will hold chat
@@ -246,7 +229,7 @@
 <a class="url" href="http://www.amk.ca/zodb/demos/">http://www.amk.ca/zodb/demos/</a>.  Only the interesting portions of
 the code will be covered here.
 
-<P>
+<p>
 The basic data structure is the <tt class="class">ChatSession</tt> object,
 which provides an <tt class="method">add_message()</tt> method that adds a
 message, and a <tt class="method">new_messages()</tt> method that returns a list
@@ -255,11 +238,11 @@
 maintains a B-tree that uses the time as the key, and stores the
 message as the corresponding value.
 
-<P>
+<p>
 The constructor for <tt class="class">ChatSession</tt> is pretty simple; it simply
 creates an attribute containing a B-tree:
 
-<P>
+<p>
 <div class="verbatim"><pre>
 class ChatSession(Persistent):
     def __init__(self, name):
@@ -268,7 +251,7 @@
         self._messages = BTrees.OOBTree.OOBTree()
 </pre></div>
 
-<P>
+<p>
 <tt class="method">add_message()</tt> has to add a message to the
 <code>_messages</code> B-tree.  A complication is that it's possible
 that some other client is trying to add a message at the same time;
@@ -281,7 +264,7 @@
 breaking out of the loop when the commit works without raising an
 exception.
 
-<P>
+<p>
 <div class="verbatim"><pre>
     def add_message(self, message):
         """Add a message to the channel.
@@ -305,7 +288,7 @@
         # end while
 </pre></div>
 
-<P>
+<p>
 <tt class="method">new_messages()</tt> introduces the use of <i>volatile</i>
 attributes.  Attributes of a persistent object that begin with
 <code>_v_</code> are considered volatile and are never stored in the
@@ -316,7 +299,7 @@
 return the new messages accumulated since any other client called
 <tt class="method">new_messages()</tt>, which isn't what we want.
 
-<P>
+<p>
 <div class="verbatim"><pre>
     def new_messages(self):
         "Return new messages."
@@ -337,92 +320,85 @@
         return new
 </pre></div>
 
-<P>
+<p>
 This application is interesting because it uses ZEO to easily share a
 data structure; ZEO and ZODB are being used for their networking
 ability, not primarily for their data storage ability.  I can foresee
 many interesting applications using ZEO in this way:
 
-<P>
+<p>
 
-<UL>
-<LI>With a Tkinter front-end, and a cleverer, more scalable data
+<ul>
+<li>With a Tkinter front-end, and a cleverer, more scalable data
   structure, you could build a shared whiteboard using the same
   technique.
 
-<P>
-</LI>
-<LI>A shared chessboard object would make writing a networked chess
+<p>
+</li>
+<li>A shared chessboard object would make writing a networked chess
   game easy.  
 
-<P>
-</LI>
-<LI>You could create a Python class containing a CD's title and
+<p>
+</li>
+<li>You could create a Python class containing a CD's title and
   track information.  To make a CD database, a read-only ZEO server
   could be opened to the world, or an HTTP or XML-RPC interface could
   be written on top of the ZODB.
 
-<P>
-</LI>
-<LI>A program like Quicken could use a ZODB on the local disk to
+<p>
+</li>
+<li>A program like Quicken could use a ZODB on the local disk to
   store its data.  This avoids the need to write and maintain
   specialized I/O code that reads in your objects and writes them out;
   instead you can concentrate on the problem domain, writing objects
   that represent cheques, stock portfolios, or whatever.
 
-<P>
-</LI>
-</UL>
-
-<P>
-
-<P>
-<BR><HR><H4>Footnotes</H4>
-<DL>
-<DT><A NAME="foot460">... themselves.</A><A
- href="zeo.html#tex2html1"><SUP>1</SUP></A></DT>
-<DD>These messages are
+<p>
+</li>
+</ul>
+
+<p>
+<br><hr><h4>Footnotes</h4>
+<dl>
+<dt><a name="foot460">... themselves.</a><A
+ href="zeo.html#tex2html1"><sup>1</sup></a></dt>
+<dd>These messages are
 small and sent in batches, so there would need to be a lot of writes
 before it became a problem.
 
-</DD>
-</DL>
-<DIV CLASS="navigation">
-<div class='online-navigation'>
-<p></p><hr />
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><a rel="prev" title="2 ZODB Programming"
-  href="node3.html"><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
-<td class='online-navigation'><a rel="parent" title="ZODB/ZEO Programming Guide"
-  href="zodb.html"><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
-<td class='online-navigation'><a rel="next" title="4 Transactions and Versioning"
-  href="node5.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Previous:</b>
-<a class="sectref" rel="prev" href="node3.html">2 ZODB Programming</A>
-<b class="navlabel">Up:</b>
-<a class="sectref" rel="parent" href="zodb.html">ZODB/ZEO Programming Guide</A>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="node5.html">4 Transactions and Versioning</A>
+</dd>
+</dl>
+<div class="navigation">
+<div id='bot-navigation-panel' xml:id='bot-navigation-panel'
+     class='online-navigation'>
+  <div class='spacer'></div>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="prev" title="2 zodb Programming"
+        href="node3.html"><img src='previous.png' height='32' width='32' alt='Previous Page' /></a></td>
+      <td class='online-navigation'><a rel="parent" title="ZODB/ZEO programming Guide"
+        href="zodb.html"><img src='up.png' height='32' width='32' alt='Up one Level' /></a></td>
+      <td class='online-navigation'><a rel="next" title="4 transactions and Versioning"
+        href="node5.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='online-navigation text-links'>
+    Previous: <a rel="prev"      href="node3.html">2 ZODB Programming</a>
+    Up: <a rel="parent"      href="zodb.html">ZODB/ZEO Programming Guide</a>
+    Next: <a rel="next"      href="node5.html">4 Transactions and Versioning</a>
+  </div>
+</div>
+<div class='spacer'></div>
+<span class="release-info">Documentation released on 27 April 2005.</span>
+<address>See <i><a href="about.html">About this document...</a></i>
+for information on suggesting changes.</address>
 </div>
 </div>
-<hr />
-<span class="release-info">Release 3.2.7, documentation updated on April 26, 2005.</span>
-</DIV>
 <!--End of Navigation Panel-->
 
-</BODY>
-</HTML>
+</div> <!-- page-wrapper -->
+</body>
+</html>


=== ZODB3/Doc/zodb/zodb.css 1.2.6.4 => 1.2.6.5 ===
--- ZODB3/Doc/zodb/zodb.css:1.2.6.4	Mon Dec 13 13:18:08 2004
+++ ZODB3/Doc/zodb/zodb.css	Wed Apr 27 15:08:21 2005
@@ -44,20 +44,12 @@
 a:visited               { color: #551a8b; }
 a:link                  { color: #0000bb; }
 
-h1, h2, h3, h4, h5, h6  { font-family: avantgarde, sans-serif;
+h1, h2, h3, h4, h5, h6  { font-family: sans-serif;
                           font-weight: bold; }
 h1                      { font-size: 180%; }
 h2                      { font-size: 150%; }
 h3, h4                  { font-size: 120%; }
 
-/* These are section titles used in navigation links, so make sure we
- * match the section header font here, even it not the weight.
- */
-.sectref                { font-family: avantgarde, sans-serif; }
-/* And the label before the titles in navigation: */
-.navlabel               { font-size: 85%; }
-
-
 /* LaTeX2HTML insists on inserting <br> elements into headers which
  * are marked with \label.  This little bit of CSS magic ensures that
  * these elements don't cause spurious whitespace to be added.
@@ -65,19 +57,20 @@
 h1>br, h2>br, h3>br,
 h4>br, h5>br, h6>br     { display: none; }
 
-code, tt                { font-family: "lucida typewriter", lucidatypewriter,
-                                       monospace; }
-var                     { font-family: times, serif;
+code, tt                { font-family: monospace; }
+var                     { font-family: serif;
                           font-style: italic;
                           font-weight: normal; }
+.keyword                { color: rgb(38, 77, 117);
+                          font-weight: bold; }
 
 .Unix                   { font-variant: small-caps; }
 
-.typelabel              { font-family: lucida, sans-serif; }
+.typelabel              { font-family: sans-serif; }
 
 .navigation td          { background-color: #99ccff;
                           font-weight: bold;
-                          font-family: avantgarde, sans-serif;
+                          font-family: sans-serif;
                           font-size: 110%; }
 
 div.warning             { background-color: #fffaf0;
@@ -106,8 +99,7 @@
 .titlegraphic           { vertical-align: top; }
 
 .verbatim pre           { color: #00008b;
-                          font-family: "lucida typewriter", lucidatypewriter,
-                                       monospace;
+                          font-family: monospace;
                           font-size: 90%; }
 .verbatim               { margin-left: 2em; }
 .verbatim .footer       { padding: 0.05in;
@@ -120,8 +112,7 @@
                           padding: 0.05in; }
 .grammar-footer         { padding: 0.05in;
                           font-size: 85%; }
-.grammartoken           { font-family: "lucida typewriter", lucidatypewriter,
-                                       monospace; }
+.grammartoken           { font-family: monospace; }
 
 .productions                  { background-color: #bbeeff; }
 .productions a:active         { color: #ff0000; }
@@ -135,15 +126,11 @@
 .productions > table th       { padding: 2px; }
 .productions > table td:first-child,
 .productions > table td:last-child {
-                                font-family: "lucida typewriter",
-                                             lucidatypewriter,
-                                             monospace;
+                                font-family: monospace;
                                 }
 /* same as the second selector above, but expressed differently for Opera */
 .productions > table td:first-child + td + td {
-                                font-family: "lucida typewriter",
-                                             lucidatypewriter,
-                                             monospace;
+                                font-family: monospace;
                                 vertical-align: baseline;
                                 }
 .productions > table td:first-child + td {
@@ -152,13 +139,34 @@
                                 }
 .productions > table tr       { vertical-align: baseline; }
 
-.email                  { font-family: avantgarde, sans-serif; }
-.mailheader             { font-family: avantgarde, sans-serif; }
-.mimetype               { font-family: avantgarde, sans-serif; }
-.newsgroup              { font-family: avantgarde, sans-serif; }
-.url                    { font-family: avantgarde, sans-serif; }
-.file                   { font-family: avantgarde, sans-serif; }
-.guilabel               { font-family: avantgarde, sans-serif; }
+.email                  { font-family: sans-serif; }
+.mailheader             { font-family: sans-serif; }
+.mimetype               { font-family: sans-serif; }
+.newsgroup              { font-family: sans-serif; }
+.url                    { font-family: sans-serif; }
+.file                   { font-family: sans-serif; }
+.guilabel               { font-family: sans-serif; }
+
+#top-navigation-panel .spacer { border-bottom: 2px solid;
+                                margin-bottom: 0.8em; }
+#bot-navigation-panel .spacer { border-top: 2px solid;
+                                margin-top: 0.8em; }
+.navigation .spacer           { height: 5px; }
+.navigation .iconbar img      { border: 0px; }
+.navigation td                { background-color: #99ccff;
+                                border-width: 0px; }
+.navigation .text-links       { font-size: 75%;
+                                font-weight: bold; }
+.navigation .text-links a     { font-family: sans-serif;
+                                font-size: 110%;
+                                font-weight: normal; }
+.navigation .titlebox         { padding: 0px 0.8em 0px 0px;
+                                text-align: right;
+                                width: 99%; }
+.ChildLinks             { border-top: 2px solid black;
+                          margin: 1em 0px 0px 0px;
+                          padding: 0.4em 0px 0.4em 1.5em;
+                          }
 
 .realtable              { border-collapse: collapse;
                           border-color: black;
@@ -175,7 +183,7 @@
 .realtable thead        { background-color: #99ccff;
                           border-width: 0px 0px 2px 1px;
                           display: table-header-group;
-                          font-family: avantgarde, sans-serif;
+                          font-family: sans-serif;
                           font-weight: bold;
                           vertical-align: baseline;
                           }
@@ -226,8 +234,8 @@
  * Additional styles for the distutils package.
  */
 .du-command             { font-family: monospace; }
-.du-option              { font-family: avantgarde, sans-serif; }
-.du-filevar             { font-family: avantgarde, sans-serif;
+.du-option              { font-family: sans-serif; }
+.du-filevar             { font-family: sans-serif;
                           font-style: italic; }
 .du-xxx:before          { content: "** ";
                           font-weight: bold; }
@@ -239,5 +247,7 @@
  * Some specialization for printed output.
  */
 @media print {
+  address,
+  .ChildLinks,
   .online-navigation    { display: none; }
   }


=== ZODB3/Doc/zodb/zodb.html 1.2.6.19 => 1.2.6.20 ===
--- ZODB3/Doc/zodb/zodb.html:1.2.6.19	Tue Apr 26 16:05:59 2005
+++ ZODB3/Doc/zodb/zodb.html	Wed Apr 27 15:08:21 2005
@@ -2,41 +2,31 @@
 <html>
 <head>
 <link rel="STYLESHEET" href="zodb.css" type='text/css' />
-<link rel="first" href="zodb.html" title='ZODB/ZEO Programming Guide' />
+<link rel="first" href="zodb.html" title='ZODB/ZEO programming Guide' />
 <link rel='contents' href='contents.html' title="Contents" />
 <link rel='last' href='about.html' title='About this document...' />
 <link rel='help' href='about.html' title='About this document...' />
 <link rel="next" href="contents.html" />
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name='aesop' content='information' />
 <title>ZODB/ZEO Programming Guide</title>
 </head>
 <body>
-<DIV CLASS="navigation">
+<div class="page-wrapper">
+<div class="navigation">
 <div id='top-navigation-panel' xml:id='top-navigation-panel'>
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></td>
-<td class='online-navigation'><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></td>
-<td class='online-navigation'><a rel="next" title="Contents"
-  href="contents.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="contents.html">Contents</A>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="next" title="Contents"
+        href="contents.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='spacer'></div>
+</div>
 </div>
-<hr /></div>
-</DIV>
 <!--End of Navigation Panel-->
 
 <div class="titlepage">
@@ -44,128 +34,117 @@
 <h1>ZODB/ZEO Programming Guide</h1>
 <p><b><font size="+2">A.M. Kuchling</font></b></p>
 <p><span class="email">amk at amk.ca</span></p>
-<p><strong>Release 3.2.7</strong><br />
-<strong>April 26, 2005</strong></p>
+<p><strong>Release 3.2.8</strong><br />
+<strong>27 April 2005</strong></p>
 <p></p>
 </div>
 </div>
 
-<p><br /></p><hr class='online-navigation' />
-<div class='online-navigation'>
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"></a>
-
-<UL CLASS="ChildLinks">
-<LI><A href="contents.html">Contents</a>
-<LI><A href="node2.html">1 Introduction</a>
-<UL>
-<LI><A href="node2.html#SECTION000210000000000000000">1.1 What is the ZODB?</a>
-<LI><A href="node2.html#SECTION000220000000000000000">1.2 OODBs vs. Relational DBs</a>
-<LI><A href="node2.html#SECTION000230000000000000000">1.3 What is ZEO?</a>
-<LI><A href="node2.html#SECTION000240000000000000000">1.4 About this guide</a>
-<LI><A href="node2.html#SECTION000250000000000000000">1.5 Acknowledgements</a>
-</ul>
-<LI><A href="node3.html">2 ZODB Programming</a>
-<UL>
-<LI><A href="node3.html#SECTION000310000000000000000">2.1 Installing ZODB</a>
-<UL>
-<LI><A href="node3.html#SECTION000311000000000000000">2.1.1 Requirements</a>
-<LI><A href="node3.html#SECTION000312000000000000000">2.1.2 Installing the Packages</a>
-</ul>
-<LI><A href="node3.html#SECTION000320000000000000000">2.2 How ZODB Works</a>
-<LI><A href="node3.html#SECTION000330000000000000000">2.3 Opening a ZODB</a>
-<LI><A href="node3.html#SECTION000340000000000000000">2.4 Writing a Persistent Class</a>
-<LI><A href="node3.html#SECTION000350000000000000000">2.5 Rules for Writing Persistent Classes</a>
-<UL>
-<LI><A href="node3.html#SECTION000351000000000000000">2.5.1 Modifying Mutable Objects</a>
-<LI><A href="node3.html#SECTION000352000000000000000">2.5.2 Some Special Methods Don't Work</a>
-<LI><A href="node3.html#SECTION000353000000000000000">2.5.3 <tt class="method">__getattr__</tt>, <tt class="method">__delattr__</tt>, and <tt class="method">__setattr__</tt></a>
-<LI><A href="node3.html#SECTION000354000000000000000">2.5.4 <tt class="method">__del__</tt> methods</a>
-</ul>
-<LI><A href="node3.html#SECTION000360000000000000000">2.6 Writing Persistent Classes</a>
-<UL>
-<LI><A href="node3.html#SECTION000361000000000000000">2.6.1 Changing Instance Attributes</a>
-</ul>
-</ul>
-<LI><A href="zeo.html">3 ZEO</a>
-<UL>
-<LI><A href="zeo.html#SECTION000410000000000000000">3.1 How ZEO Works</a>
-<LI><A href="zeo.html#SECTION000420000000000000000">3.2 Installing ZEO</a>
-<UL>
-<LI><A href="zeo.html#SECTION000421000000000000000">3.2.1 Requirements</a>
-<LI><A href="zeo.html#SECTION000422000000000000000">3.2.2 Running a server</a>
-</ul>
-<LI><A href="zeo.html#SECTION000430000000000000000">3.3 Testing the ZEO Installation</a>
-<LI><A href="zeo.html#SECTION000440000000000000000">3.4 ZEO Programming Notes</a>
-<LI><A href="zeo.html#SECTION000450000000000000000">3.5 Sample Application: chatter.py</a>
-</ul>
-<LI><A href="node5.html">4 Transactions and Versioning</a>
-<UL>
-<LI><A href="node5.html#SECTION000510000000000000000">4.1 Subtransactions</a>
-<LI><A href="node5.html#SECTION000520000000000000000">4.2 Undoing Changes</a>
-<LI><A href="node5.html#SECTION000530000000000000000">4.3 Versions</a>
-<LI><A href="node5.html#SECTION000540000000000000000">4.4 Multithreaded ZODB Programs</a>
-</ul>
-<LI><A href="node6.html">5 Related Modules</a>
-<UL>
-<LI><A href="node6.html#SECTION000610000000000000000">5.1 <tt class="module">ZODB.PersistentMapping</tt></a>
-<LI><A href="node6.html#SECTION000620000000000000000">5.2 <tt class="module">ZODB.PersistentList</tt></a>
-<LI><A href="node6.html#SECTION000630000000000000000">5.3 BTrees Package</a>
-<UL>
-<LI><A href="node6.html#SECTION000631000000000000000">5.3.1 Total Ordering and Persistence</a>
-</ul>
-</ul>
-<LI><A href="node7.html">A. Resources</a>
-<LI><A href="node8.html">B. GNU Free Documentation License</a>
-<UL>
-<LI><A href="node8.html#SECTION000810000000000000000">Preamble</a>
-<LI><A href="node8.html#SECTION000820000000000000000">B..1 Applicability and Definitions</a>
-<LI><A href="node8.html#SECTION000830000000000000000">B..2 Verbatim Copying</a>
-<LI><A href="node8.html#SECTION000840000000000000000">B..3 Copying in Quantity</a>
-<LI><A href="node8.html#SECTION000850000000000000000">B..4 Modifications</a>
-<LI><A href="node8.html#SECTION000860000000000000000">B..5 Combining Documents</a>
-<LI><A href="node8.html#SECTION000870000000000000000">B..6 Collections of Documents</a>
-<LI><A href="node8.html#SECTION000880000000000000000">B..7 Aggregation With Independent Works</a>
-<LI><A href="node8.html#SECTION000890000000000000000">B..8 Translation</a>
-<LI><A href="node8.html#SECTION0008100000000000000000">B..9 Termination</a>
-<LI><A href="node8.html#SECTION0008110000000000000000">B..10 Future Revisions of This Licence</a>
-<LI><A href="node8.html#SECTION0008120000000000000000">ADDENDUM: How to use this License for your documents</a>
+<ul class="ChildLinks">
+<li><a href="contents.html">Contents</a>
+<li><a href="node2.html">1 Introduction</a>
+<ul>
+<li><a href="node2.html#SECTION000210000000000000000">1.1 What is the ZODB?</a>
+<li><a href="node2.html#SECTION000220000000000000000">1.2 OODBs vs. Relational DBs</a>
+<li><a href="node2.html#SECTION000230000000000000000">1.3 What is ZEO?</a>
+<li><a href="node2.html#SECTION000240000000000000000">1.4 About this guide</a>
+<li><a href="node2.html#SECTION000250000000000000000">1.5 Acknowledgements</a>
+</ul>
+<li><a href="node3.html">2 ZODB Programming</a>
+<ul>
+<li><a href="node3.html#SECTION000310000000000000000">2.1 Installing ZODB</a>
+<ul>
+<li><a href="node3.html#SECTION000311000000000000000">2.1.1 Requirements</a>
+<li><a href="node3.html#SECTION000312000000000000000">2.1.2 Installing the Packages</a>
+</ul>
+<li><a href="node3.html#SECTION000320000000000000000">2.2 How ZODB Works</a>
+<li><a href="node3.html#SECTION000330000000000000000">2.3 Opening a ZODB</a>
+<li><a href="node3.html#SECTION000340000000000000000">2.4 Writing a Persistent Class</a>
+<li><a href="node3.html#SECTION000350000000000000000">2.5 Rules for Writing Persistent Classes</a>
+<ul>
+<li><a href="node3.html#SECTION000351000000000000000">2.5.1 Modifying Mutable Objects</a>
+<li><a href="node3.html#SECTION000352000000000000000">2.5.2 Some Special Methods Don't Work</a>
+<li><a href="node3.html#SECTION000353000000000000000">2.5.3 <tt class="method">__getattr__</tt>, <tt class="method">__delattr__</tt>, and <tt class="method">__setattr__</tt></a>
+<li><a href="node3.html#SECTION000354000000000000000">2.5.4 <tt class="method">__del__</tt> methods</a>
+</ul>
+<li><a href="node3.html#SECTION000360000000000000000">2.6 Writing Persistent Classes</a>
+<ul>
+<li><a href="node3.html#SECTION000361000000000000000">2.6.1 Changing Instance Attributes</a>
+</ul>
+</ul>
+<li><a href="zeo.html">3 ZEO</a>
+<ul>
+<li><a href="zeo.html#SECTION000410000000000000000">3.1 How ZEO Works</a>
+<li><a href="zeo.html#SECTION000420000000000000000">3.2 Installing ZEO</a>
+<ul>
+<li><a href="zeo.html#SECTION000421000000000000000">3.2.1 Requirements</a>
+<li><a href="zeo.html#SECTION000422000000000000000">3.2.2 Running a server</a>
+</ul>
+<li><a href="zeo.html#SECTION000430000000000000000">3.3 Testing the ZEO Installation</a>
+<li><a href="zeo.html#SECTION000440000000000000000">3.4 ZEO Programming Notes</a>
+<li><a href="zeo.html#SECTION000450000000000000000">3.5 Sample Application: chatter.py</a>
+</ul>
+<li><a href="node5.html">4 Transactions and Versioning</a>
+<ul>
+<li><a href="node5.html#SECTION000510000000000000000">4.1 Subtransactions</a>
+<li><a href="node5.html#SECTION000520000000000000000">4.2 Undoing Changes</a>
+<li><a href="node5.html#SECTION000530000000000000000">4.3 Versions</a>
+<li><a href="node5.html#SECTION000540000000000000000">4.4 Multithreaded ZODB Programs</a>
+</ul>
+<li><a href="node6.html">5 Related Modules</a>
+<ul>
+<li><a href="node6.html#SECTION000610000000000000000">5.1 <tt class="module">ZODB.PersistentMapping</tt></a>
+<li><a href="node6.html#SECTION000620000000000000000">5.2 <tt class="module">ZODB.PersistentList</tt></a>
+<li><a href="node6.html#SECTION000630000000000000000">5.3 BTrees Package</a>
+<ul>
+<li><a href="node6.html#SECTION000631000000000000000">5.3.1 Total Ordering and Persistence</a>
+</ul>
+</ul>
+<li><a href="node7.html">A. Resources</a>
+<li><a href="node8.html">B. GNU Free Documentation License</a>
+<ul>
+<li><a href="node8.html#SECTION000810000000000000000">Preamble</a>
+<li><a href="node8.html#SECTION000820000000000000000">B..1 Applicability and Definitions</a>
+<li><a href="node8.html#SECTION000830000000000000000">B..2 Verbatim Copying</a>
+<li><a href="node8.html#SECTION000840000000000000000">B..3 Copying in Quantity</a>
+<li><a href="node8.html#SECTION000850000000000000000">B..4 Modifications</a>
+<li><a href="node8.html#SECTION000860000000000000000">B..5 Combining Documents</a>
+<li><a href="node8.html#SECTION000870000000000000000">B..6 Collections of Documents</a>
+<li><a href="node8.html#SECTION000880000000000000000">B..7 Aggregation With Independent Works</a>
+<li><a href="node8.html#SECTION000890000000000000000">B..8 Translation</a>
+<li><a href="node8.html#SECTION0008100000000000000000">B..9 Termination</a>
+<li><a href="node8.html#SECTION0008110000000000000000">B..10 Future Revisions of This Licence</a>
+<li><a href="node8.html#SECTION0008120000000000000000">ADDENDUM: How to use this License for your documents</a>
 </ul>
-<LI><A href="about.html">About this document ...</a>
+<li><a href="about.html">About this document ...</a>
 </ul>
 <!--End of Table of Child-Links-->
-</div>
 
-<DIV CLASS="navigation">
-<div class='online-navigation'>
-<p></p><hr />
-<table align="center" width="100%" cellpadding="0" cellspacing="2">
-<tr>
-<td class='online-navigation'><img src='previous.png'
-  border='0' height='32'  alt='Previous Page' width='32' /></td>
-<td class='online-navigation'><img src='up.png'
-  border='0' height='32'  alt='Up One Level' width='32' /></td>
-<td class='online-navigation'><a rel="next" title="Contents"
-  href="contents.html"><img src='next.png'
-  border='0' height='32'  alt='Next Page' width='32' /></A></td>
-<td align="center" width="100%">ZODB/ZEO Programming Guide</td>
-<td class='online-navigation'><a rel="contents" title="Table of Contents"
-  href="contents.html"><img src='contents.png'
-  border='0' height='32'  alt='Contents' width='32' /></A></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-<td class='online-navigation'><img src='blank.png'
-  border='0' height='32'  alt='' width='32' /></td>
-</tr></table>
-<div class='online-navigation'>
-<b class="navlabel">Next:</b>
-<a class="sectref" rel="next" href="contents.html">Contents</A>
-</div>
-</div>
-<hr />
-<span class="release-info">Release 3.2.7, documentation updated on April 26, 2005.</span>
-</DIV>
+<div class="navigation">
+<div id='bot-navigation-panel' xml:id='bot-navigation-panel'
+     class='online-navigation'>
+  <div class='spacer'></div>
+  <table class='iconbar'>
+    <tr>
+      <td class='online-navigation'><a rel="next" title="Contents"
+        href="contents.html"><img src='next.png' height='32' width='32' alt='Next Page' /></a></td>
+      <td class='online-navigation'><a rel="contents" title="Table of Contents"
+        href="contents.html"><img src='contents.png' height='32' width='32' alt='Contents' /></a></td>
+      <td class='titlebox'>ZODB/ZEO Programming Guide</td>
+    </tr>
+  </table>
+  <div class='online-navigation text-links'>
+    Next: <a rel="next"      href="contents.html">Contents</a>
+  </div>
+</div>
+<div class='spacer'></div>
+<span class="release-info">Documentation released on 27 April 2005.</span>
+<address>See <i><a href="about.html">About this document...</a></i>
+for information on suggesting changes.</address>
+</div>
+</div>
 <!--End of Navigation Panel-->
 
-</BODY>
-</HTML>
+</div> <!-- page-wrapper -->
+</body>
+</html>



More information about the Zodb-checkins mailing list