make the generated HTML more XHTML friendly
diff --git a/Doc/tools/buildindex.py b/Doc/tools/buildindex.py
index 08fdb7b..a07ed2f 100755
--- a/Doc/tools/buildindex.py
+++ b/Doc/tools/buildindex.py
@@ -7,6 +7,8 @@
 import string
 import sys
 
+from xml.sax.saxutils import quoteattr
+
 
 bang_join = "!".join
 null_join = "".join
@@ -215,7 +217,7 @@
 DL_LEVEL_INDENT = "  "
 
 def format_column(nodes):
-    strings = ["<dl compact>"]
+    strings = ["<dl compact='compact'>"]
     append = strings.append
     level = 0
     previous = []
@@ -227,7 +229,7 @@
                 break
             count = i + 1
         if count > level:
-            append("<dl compact>" * (count - level) + "\n")
+            append("<dl compact='compact'>" * (count - level) + "\n")
             level = count
         elif level > count:
             append("\n")
@@ -242,7 +244,7 @@
                 extra = " (continued)"
             else:
                 extra = ""
-            append("\n<dt>%s%s\n<dd>\n%s<dl compact>"
+            append("\n<dt>%s%s\n<dd>\n%s<dl compact='compact'>"
                    % (term, extra, level * DL_LEVEL_INDENT))
         append("\n%s<dt>%s%s</a>"
                % (level * DL_LEVEL_INDENT, node.links[0], node.text[-1]))
@@ -271,7 +273,6 @@
         append("\n</tr></table>")
     else:
         append(format_column(nodes))
-    append("\n<p>\n")
     return null_join(strings)
 
 
@@ -282,8 +283,8 @@
         lettername = "_ (underscore)"
     else:
         lettername = letter.capitalize()
-    return "\n<hr>\n<h2><a name=\"letter-%s\">%s</a></h2>\n\n" \
-           % (letter, lettername)
+    return "\n<hr />\n<h2 id=%s>%s</h2>\n\n" \
+           % (quoteattr("letter-" + letter), lettername)
 
 
 def format_html_letters(nodes, columns, group_symbol_nodes):
@@ -294,7 +295,7 @@
     for letter, nodes in letter_groups:
         s = "<b><a href=\"#letter-%s\">%s</a></b>" % (letter, letter)
         items.append(s)
-    s = ["<hr><center>\n%s</center>\n" % " |\n".join(items)]
+    s = ["<hr /><center>\n%s</center>\n" % " |\n".join(items)]
     for letter, nodes in letter_groups:
         s.append(format_letter(letter))
         s.append(format_nodes(nodes, columns))