Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

first ever version of library

  • Loading branch information...
commit eeabdc87a5e42109d92c18bdbac8154b78c00982 0 parents
@joearms authored
Showing with 34,254 additions and 0 deletions.
  1. +20 −0 MIT-LICENSE
  2. +19 −0 Makefile
  3. +27 −0 Readme
  4. +5 −0 bin/efind_similar_files
  5. +3 −0  bin/eindex
  6. +14 −0 bin/openurl
  7. +68 −0 bin/term.sh
  8. +41 −0 bin/term_osx.sh
  9. +32 −0 doc/Makefile
  10. +46 −0 doc/about.ehtml
  11. +120 −0 doc/bin.ehtml
  12. +220 −0 doc/edit.html
  13. +37 −0 doc/glossary.ehtml
  14. +36 −0 doc/index.ehtml
  15. +14 −0 doc/trawl.ehtml
  16. +53 −0 doc/webserver.ehtml
  17. BIN  include/354984si.ngl.gz
  18. +11 −0 include/dtd/catalog.xml
  19. +68 −0 include/dtd/readdme.html
  20. +196 −0 include/dtd/xhtml-lat1.ent
  21. +80 −0 include/dtd/xhtml-special.ent
  22. +237 −0 include/dtd/xhtml-symbol.ent
  23. +1,201 −0 include/dtd/xhtml1-transitional.dtd
  24. +6 −0 include/dtd/xml_check
  25. +54 −0 include/elib1.css
  26. BIN  include/images/dir_icon.jpg
  27. BIN  include/images/dir_icon_thumb.jpg
  28. BIN  include/images/joe.jpg
  29. BIN  include/images/joe_thumb.jpg
  30. BIN  include/images/pdf_icon.jpg
  31. BIN  include/images/pdf_icon_thumb.jpg
  32. BIN  include/images/ring.gif
  33. BIN  include/images/ringtxt.jpg
  34. +19 −0 include/jquery-1.3.2.min.js
  35. +28 −0 include/jquery-slides.js
  36. +653 −0 include/jquery.form.js
  37. +612 −0 include/jquery.simplemodal-1.3.3.js
  38. +75 −0 include/plain.css
  39. +35 −0 include/slides.css
  40. +2 −0  lib/doc/edoc-info
  41. +30 −0 lib/doc/elib1_best.html
  42. +54 −0 lib/doc/elib1_blob_store.html
  43. +19 −0 lib/doc/elib1_chunks.html
  44. +19 −0 lib/doc/elib1_content_edit.html
  45. +54 −0 lib/doc/elib1_diff.html
  46. +48 −0 lib/doc/elib1_doc.html
  47. +66 −0 lib/doc/elib1_docmaker.html
  48. +19 −0 lib/doc/elib1_ensure_copyrighted.html
  49. +66 −0 lib/doc/elib1_expand.html
  50. +53 −0 lib/doc/elib1_fast_read.html
  51. +48 −0 lib/doc/elib1_fast_write.html
  52. +36 −0 lib/doc/elib1_file_finder.html
  53. +60 −0 lib/doc/elib1_find.html
  54. +78 −0 lib/doc/elib1_gamma.html
  55. +19 −0 lib/doc/elib1_geom.html
  56. +48 −0 lib/doc/elib1_guid_store.html
  57. +54 −0 lib/doc/elib1_http_driver.html
  58. +161 −0 lib/doc/elib1_indexer.html
  59. +48 −0 lib/doc/elib1_indexer_plugin_erl.html
  60. +19 −0 lib/doc/elib1_indexer_results.html
  61. +933 −0 lib/doc/elib1_misc.html
  62. +84 −0 lib/doc/elib1_ml9.html
  63. +36 −0 lib/doc/elib1_ml9_2_html.html
  64. +78 −0 lib/doc/elib1_mysql.html
  65. +108 −0 lib/doc/elib1_new_webkit.html
  66. +42 −0 lib/doc/elib1_porter.html
  67. +96 −0 lib/doc/elib1_rfc4627.html
  68. +19 −0 lib/doc/elib1_screen.html
  69. +19 −0 lib/doc/elib1_search.html
  70. +42 −0 lib/doc/elib1_seq_web_server1.html
  71. +36 −0 lib/doc/elib1_sha1.html
  72. +36 −0 lib/doc/elib1_similar.html
  73. +30 −0 lib/doc/elib1_simple_kv_db.html
  74. +90 −0 lib/doc/elib1_store.html
  75. +60 −0 lib/doc/elib1_tagger.html
  76. +19 −0 lib/doc/elib1_telnet.html
  77. +131 −0 lib/doc/elib1_webkit.html
  78. +19 −0 lib/doc/elib1_webquery.html
  79. +78 −0 lib/doc/elib1_xml.html
  80. BIN  lib/doc/erlang.png
  81. +17 −0 lib/doc/index.html
  82. +12 −0 lib/doc/modules-frame.html
  83. +15 −0 lib/doc/overview-summary.html
  84. +11 −0 lib/doc/packages-frame.html
  85. +36 −0 lib/doc/password.html
  86. +55 −0 lib/doc/stylesheet.css
  87. +19 −0 lib/doc/tryxform.html
  88. +77 −0 lib/src/Makefile
  89. +44 −0 lib/src/elib1_best.erl
  90. +43 −0 lib/src/elib1_blob_store.erl
  91. +356 −0 lib/src/elib1_chunks.erl
  92. +111 −0 lib/src/elib1_content_edit.erl
  93. +110 −0 lib/src/elib1_diff.erl
  94. +60 −0 lib/src/elib1_doc.erl
  95. +452 −0 lib/src/elib1_docmaker.erl
  96. +31 −0 lib/src/elib1_ensure_copyrighted.erl
  97. +172 −0 lib/src/elib1_expand.erl
  98. +123 −0 lib/src/elib1_fast_read.erl
  99. +78 −0 lib/src/elib1_fast_write.erl
  100. +142 −0 lib/src/elib1_file_finder.erl
  101. +148 −0 lib/src/elib1_find.erl
  102. +251 −0 lib/src/elib1_gamma.erl
  103. +30 −0 lib/src/elib1_geom.erl
  104. +143 −0 lib/src/elib1_guid_store.erl
  105. +258 −0 lib/src/elib1_http_driver.erl
  106. +643 −0 lib/src/elib1_indexer.erl
  107. +117 −0 lib/src/elib1_indexer_plugin_erl.erl
  108. +42 −0 lib/src/elib1_indexer_results.erl
  109. +2,315 −0 lib/src/elib1_misc.erl
  110. +370 −0 lib/src/elib1_ml9.erl
  111. +103 −0 lib/src/elib1_ml9_2_html.erl
  112. +38 −0 lib/src/elib1_ml9_parse_header.yrl
  113. +585 −0 lib/src/elib1_mysql.erl
  114. +549 −0 lib/src/elib1_new_webkit.erl
  115. +397 −0 lib/src/elib1_parse_dtd.yrl
  116. +378 −0 lib/src/elib1_porter.erl
  117. +429 −0 lib/src/elib1_rfc4627.erl
  118. +185 −0 lib/src/elib1_screen.erl
  119. +26 −0 lib/src/elib1_search.erl
  120. +207 −0 lib/src/elib1_seq_web_server1.erl
  121. +103 −0 lib/src/elib1_sha1.erl
  122. +203 −0 lib/src/elib1_similar.erl
  123. +67 −0 lib/src/elib1_simple_kv_db.erl
  124. +432 −0 lib/src/elib1_store.erl
  125. +643 −0 lib/src/elib1_tagger.erl
  126. +130 −0 lib/src/elib1_telnet.erl
  127. +516 −0 lib/src/elib1_webkit.erl
  128. +25 −0 lib/src/elib1_webquery.erl
  129. +1,046 −0 lib/src/elib1_xml.erl
  130. +5 −0 lib/src/mkdoc
  131. +12 −0 lib/src/password.erl
  132. +33 −0 lib/src/slides.ehtml
  133. +50 −0 lib/src/tryxform.erl
  134. +558 −0 lib/tmp/elib1_ml9_parse_header.erl
  135. +1,403 −0 lib/tmp/elib1_parse_dtd.erl
  136. +1 −0  root
  137. +7 −0 supported/drivers/README
  138. +13 −0 supported/drivers/c_linked_in_driver/Makefile
  139. +88 −0 supported/drivers/c_linked_in_driver/complex.erl
  140. +68 −0 supported/drivers/c_linked_in_driver/port_driver.c
  141. +16 −0 supported/drivers/c_port_driver/Makefile
  142. +83 −0 supported/drivers/c_port_driver/example1.erl
  143. +83 −0 supported/drivers/c_port_driver/port_driver.c
  144. +14 −0 supported/drivers/cpp_linked_in_driver/Makefile
  145. +88 −0 supported/drivers/cpp_linked_in_driver/complex.erl
  146. +76 −0 supported/drivers/cpp_linked_in_driver/port_driver.cpp
  147. +11 −0 supported/drivers/doc.ehtml
  148. +19 −0 supported/indexer/Makefile
  149. +59 −0 supported/indexer/README
  150. +344 −0 supported/indexer/doc.ehtml
  151. +4 −0 supported/indexer/medium.in
  152. +313 −0 supported/indexer/slides.ehtml
  153. +35 −0 supported/indexer/web_query.ehtml
  154. +40 −0 supported/irc/Makefile
  155. +6 −0 supported/irc/README
  156. +141 −0 supported/irc/chat_erl.tcl
  157. +47 −0 supported/irc/chat_erl_test.tcl
  158. +139 −0 supported/irc/chat_tcl.tcl
  159. +255 −0 supported/irc/chat_widget.erl
  160. +34 −0 supported/irc/doc.ehtml
  161. +137 −0 supported/irc/elib1_spy.erl
  162. +505 −0 supported/irc/elib1_wish.erl
  163. +102 −0 supported/irc/elib1_wish.tcl
  164. +165 −0 supported/irc/irc.erl
  165. +104 −0 supported/irc/irc_expt.erl
  166. +147 −0 supported/irc/irc_server.bad
  167. +147 −0 supported/irc/irc_server.erl.test
  168. +78 −0 supported/irc/irc_text_client.erl
  169. +292 −0 supported/irc/ircd.erl
  170. BIN  supported/irc/redball.gif
  171. +3,531 −0 supported/irc/rfc2812.txt
  172. +184 −0 supported/irc/session.txt
  173. +24 −0 supported/irc/test1.tcl
  174. BIN  supported/irc/whiteball.gif
  175. +90 −0 supported/irc/widget_lib.erl
  176. +28 −0 supported/midi_driver/Makefile
  177. +9 −0 supported/midi_driver/doc.ehtml
  178. +185 −0 supported/midi_driver/endpoint_name.c
  179. +39 −0 supported/midi_driver/list_devices.c
  180. +112 −0 supported/midi_driver/midi_driver.erl
  181. +143 −0 supported/midi_driver/midi_in_driver.c
  182. +59 −0 supported/midi_driver/midi_in_driver.erl
  183. +122 −0 supported/midi_driver/midi_out_driver.c
  184. +68 −0 supported/midi_driver/midi_out_driver.erl
  185. +26 −0 supported/tagger/Makefile
  186. +17 −0 supported/tagger/Todo
  187. +19 −0 supported/tagger/doc.ehtml
  188. +10 −0 supported/tagger/html/erl.css
  189. +27 −0 supported/tagger/make_html.erl
  190. +1 −0  supported/template/Readme
  191. +17 −0 supported/template/Todo
  192. +9 −0 supported/template/doc.ehtml
  193. +1 −0  supported/template/doc.html
  194. +207 −0 supported/versions/doc.ehtml
  195. +91 −0 supported/versions/elib1_lin.erl
  196. +143 −0 supported/versions/elib1_publish.erl
  197. +70 −0 supported/versions/elib1_ran.erl
  198. +238 −0 supported/versions/elib1_rsa.erl
  199. BIN  supported/versions/joe.pri
  200. BIN  supported/versions/joe.pub
  201. +17 −0 supported/versions/nmap.erl
  202. +14 −0 supported/versions/nmap.erl.bak
  203. +93 −0 supported/versions/versions.chap
  204. +219 −0 supported/versions/versions.html
  205. +1 −0  supported/website/.#test.html
  206. +1 −0  supported/website/.#test1.html
  207. +1 −0  supported/website/.#test4.html
  208. +24 −0 supported/website/Makefile
  209. +2 −0  supported/website/browse.ehtml
  210. +135 −0 supported/website/browser.html
  211. +49 −0 supported/website/captions.html
  212. BIN  supported/website/dave.jpg
  213. +55 −0 supported/website/doc.ehtml
  214. +98 −0 supported/website/editor.html
  215. +127 −0 supported/website/file_lister.erl
  216. +162 −0 supported/website/ibrowser.html
  217. +178 −0 supported/website/index.ehtml
  218. +252 −0 supported/website/index.html
  219. BIN  supported/website/joe.jpg
  220. BIN  supported/website/johnny.jpg
  221. +197 −0 supported/website/my_simple_server.erl
  222. +1 −0  supported/website/nav.html
  223. +152 −0 supported/website/new.html
  224. BIN  supported/website/pdf_icon.jpg
  225. +40 −0 supported/website/simple.css
  226. +19 −0 supported/website/simple.js
  227. +98 −0 supported/website/simple_web_server.erl
  228. +115 −0 supported/website/slides.ehtml
  229. +77 −0 supported/website/test.html
  230. +110 −0 supported/website/test1.html
  231. +158 −0 supported/website/test4.html
  232. +88 −0 supported/website/test5.html
  233. +49 −0 supported/website/test6.html
  234. +15 −0 supported/website/todo.ehtml
  235. +42 −0 supported/website/web_server_one.erl
  236. +42 −0 supported/website/web_server_two.erl
  237. +29 −0 unsupported/epeg/Makefile
  238. +15 −0 unsupported/epeg/Readme
  239. +14 −0 unsupported/epeg/bug.peg
  240. +26 −0 unsupported/epeg/doc.ehtml
  241. +725 −0 unsupported/epeg/epeg.erl
  242. +290 −0 unsupported/epeg/epeg.peg
  243. +2 −0  unsupported/epeg/epeg2erl
Sorry, we could not display the entire diff because it was too big.
20 MIT-LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2006-2009 Joe Armstrong
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
19 Makefile
@@ -0,0 +1,19 @@
+## Make
+
+all:
+ cd lib/src; make
+ cd supported/indexer; make
+ cd supported/tagger; make
+ cd supported/irc; make beam
+ cd supported/website; make
+ (sleep 1 && bin/openurl http://localhost:2246/supported/website/index.ehtml) & \
+ erl -pa ./supported/irc -pa ./supported/website -s simple_web_server start
+
+clean:
+ cd lib/src; make clean
+ cd supported/indexer; make clean
+ cd supported/tagger; make clean
+ cd supported/irc; make clean
+ cd supported/website; make clean
+
+
27 Readme
@@ -0,0 +1,27 @@
+
+ Elib1
+
+ An Erlang library and collection of applications
+
+You will also have to do the following:
+
+ 1) add a path to your ${HOME}/.erlang
+ code:add_patha(".../elib1-3/lib/ebin").
+
+ 2) add path to your .bash_profile (on a mac)
+ export PATH=/Users/joe/code/elib2-1/bin:$PATH
+
+ 3) make eindex and executable
+ chmod u+x elib1-3/bin/einidex
+ chnod u+x elib1-3/bin/elib2_find_similar_files
+
+Then make to compile the library and view
+the documentation.
+
+This should start a web server on port
+
+If it doesn't point your browser at:
+
+ http://localhost:2246/supported/website/index.ehtml
+
+Note - I have only tested this with firefox
5 bin/efind_similar_files
@@ -0,0 +1,5 @@
+#!/bin/sh
+## Usage efsim <Name>
+
+erl -noshell -s elib1_similar batch_find_similar $1
+
3  bin/eindex
@@ -0,0 +1,3 @@
+#!/usr/bin/env escript
+main(Args) ->
+ elib1_indexer:do(Args).
14 bin/openurl
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# an OS independent way to open a URL in a browser
+
+os=`uname`
+
+case $os in
+ Linux)
+ firefox $1;;
+ Darwin)
+ open -a firefox $1;;
+ *)
+ echo unknown OS $os;;
+esac
68 bin/term.sh
@@ -0,0 +1,68 @@
+#!/bin/sh
+#
+# Open a new Mac OS X terminal window or tab in the current or another
+# directory and optionally run a command in the new window or tab.
+#
+# - Without any arguments, the new terminal window opens in
+# the current directory, i.e. the executed command is "cd $PWD".
+# - If the first argument is a directory, the new terminal will "cd" into
+# that directory before executing the remaining arguments as command.
+# - The optional "-t" flag executes the command in a new tab
+# instead of a new window.
+# - The optional "-x" flag closes the new window or tab
+# after the executed command finishes.
+# - The optional "-p" flag takes an argument of the form x,y (e.g. 40,50) and
+# positions the terminal window to the indicated location on the screen
+# - The optional "-s" flag takes an argument of the form w,h (e.g. 800,400) and
+# resizes the terminal window to the indicated width and height in pixels.
+#
+# Written by Marc Liyanage <http://www.entropy.ch>
+#
+# Version 2.1
+#
+
+set -e
+
+while getopts xtp:s: OPTION; do
+[ $OPTION = "x" ] && { EXIT='; exit'; }
+[ $OPTION = "t" ] && { TAB=1; }
+[ $OPTION = "p" ] && { POSITION="set position of window 1 to {$OPTARG}"; }
+[ $OPTION = "s" ] && { SIZE="set size of window 1 to {$OPTARG}"; }
+done
+
+for (( $OPTIND; $OPTIND-1; OPTIND=$OPTIND-1 )); do shift; done
+
+if [[ -d "$1" ]]; then WD=$(cd "$1"; pwd); shift; else WD=$PWD; fi
+
+
+COMMAND="cd '$WD' && echo -n \$'\\\\ec';"
+for i in "$@"; do
+ COMMAND="$COMMAND '$i'"
+done
+
+if [ $TAB ]; then
+
+osascript 2>/dev/null <<EOF
+ tell application "System Events"
+ tell process "Terminal" to keystroke "t" using command down
+ end
+ tell application "Terminal"
+ activate
+ do script with command "$COMMAND $EXIT" in window 1
+ $POSITION
+ $SIZE
+ end tell
+EOF
+
+else
+
+osascript <<EOF
+ tell application "Terminal"
+ activate
+ do script with command "$COMMAND $EXIT"
+ $POSITION
+ $SIZE
+ end tell
+EOF
+
+fi
41 bin/term_osx.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# Open a new Mac OS X terminal window with the command given
+# as argument.
+#
+# - If there are no arguments, the new terminal window will
+# be opened in the current directory, i.e. as if the command
+# would be "cd `pwd`".
+# - If the first argument is a directory, the new terminal will
+# "cd" into that directory before executing the remaining
+# arguments as command.
+# - If there are arguments and the first one is not a directory,
+# the new window will be opened in the current directory and
+# then the arguments will be executed as command.
+# - The optional, leading "-x" flag will cause the new terminal
+# to be closed immediately after the executed command finishes.
+#
+# Written by Marc Liyanage <http://www.entropy.ch>
+#
+# Version 1.0
+#
+
+if [ "x-x" = x"$1" ]; then
+ EXIT="; exit"; shift;
+fi
+
+if [[ -d "$1" ]]; then
+ WD=`cd "$1"; pwd`; shift;
+else
+ WD="'`pwd`'";
+fi
+
+COMMAND="cd $WD; $@"
+echo "$COMMAND $EXIT"
+
+osascript 2>/dev/null <<EOF
+ tell application "Terminal"
+ activate
+ do script with command "$COMMAND $EXIT"
+ end tell
+EOF
32 doc/Makefile
@@ -0,0 +1,32 @@
+.SUFFIXES: .erl .beam .yrl
+
+DOCS := $(wildcard *.ehtml)
+
+MODS := $(wildcard *.erl)
+
+%.beam: %.erl
+ erlc -W $<
+
+%.html: %.ehtml
+ erl -noshell -s elib1_doc batch $< -s init stop
+
+
+all: beam html
+
+
+beam: ${MODS:%.erl=%.beam}
+
+html: ${DOCS:%.ehtml=%.html}
+
+clean:
+ rm -rf *.aux *.beam
+ rm -rf ${DOCS:%.ehtml=%.html}
+ rm -rf *.log *.tmp erl_crash.dump
+
+veryclean:
+ rm ../bin/* ../doc/* ../tmp/*
+
+
+
+
+
46 doc/about.ehtml
@@ -0,0 +1,46 @@
+<html>
+
+ <h1>About</h1>
+
+ <h2>Restrictions</h2>
+
+ <p>All documentation <i>must be in a fixed directory</i>
+ <b>${ROOT}/doc</b> documentation is written with the extension
+ <b>.ehtml</b></p>
+
+ <p>Elib1 is a library of Erlang modules, together with a number of
+ complete applications built using the library. The applications have
+ been co-developed with the library. The test of any library is
+ <i>are the library functions useful?</i> The only way to answer
+ this is to write a largish number of applications using the library
+ functions. If the applications are useful and if they reuse large
+ amounts of library code then the library is probably OK, otherwise
+ not.</p>
+
+ <p>Usually when we write an application we often get to a point
+ where we think, "Oh dear the libraries are wrong." What we should
+ really do is stop work on the application, fix up the libraries then
+ return to the application. Now while this is what we <i>should</i>
+ do, we rarely do this in practice since we are keen to get the
+ application finished.</p>
+
+ <p>In writing the applications I have strictly followed the
+ principle: <i>If In find anything wrong with the libraries, then go
+ fix the libraries and return to the application</i>. This of course
+ breaks all the other application that depend on the libraries, so
+ I've had a spend end a lot of time fixing up the breakages.</p>
+
+ <h2>Organization</h2>
+
+ <pre> ${ROOT}/lib/src -- the library
+ /ebin -- compiled code
+ /bin -- runnable programs
+ /examples/XXX -- application XXX written using the
+ library
+ /doc -- documentation
+ </pre>
+
+
+
+
+</html>
120 doc/bin.ehtml
@@ -0,0 +1,120 @@
+<html>
+
+
+ <h1>/bin</h1>
+
+ <p><b>/bin</b> is a directory of programs that can be run from the
+ command line. They are as follows:</p>
+
+ <dl>
+ <dt><b>&gt; elib1_collect_filenames Name Ext Dir</b></dt>
+ <dd>
+ <p>This command recursively scans all directories under
+ <b>Dir</b> looking for files with the extension <b>Ext</b>. The
+ set of files found is written to the file <b>Name.files</b> this
+ is fommated as a BTSF file of strings</p>
+
+ <p>Hidden directories are not followed. Symbolic links are
+ followed once (so chains of circular symbolic links are not
+ followed). Temporary files (files starting <b>#...</b>) are not
+ collected even if they have the correct extension.</p>
+
+ <p>Example:</p>
+
+ <pre>
+ > ./elib1_collect_filenames medium erl /home/joe/code
+ listing: Scanning from:"/home/ejoearm/code"
+ listing: Found 912 files
+ listing: Created medium.files size:59661 bytes
+ listing: Took 1495 ms.
+ </pre>
+
+ <p>finds all file under <b>/home/joe/code</b> with extension
+ <b>.erl</b> making a Collection file <b>medium.files</b> in the
+ current directory.</p>
+ </dd>
+
+ <dt><b>&gt;elib1_pack_files Name</b></dt>
+ <dd>
+ <p>Makes a trawl file <b>Name.trawl</b> from a file list
+ <b>Name.files</b>. <b>Name.trawl</b> is a BTSF file of
+ <b>{File,Md5,compress(Content)}</b> tuples.
+ </p>
+
+ <p>Example:</p>
+
+ <pre>
+ > ./elib1_pack_files medium
+ Packing data ...
+ pack: 912 files (5423222 bytes) read
+ pack: 677 files (1286798 bytes) written
+ pack: Size of input (medium.files): 59661 bytes
+ pack: Created (medium.trawl): 1286798 bytes
+ pack: compression ratio for data = 0.2372755531674713
+ pack: Took 354 ms.
+ </pre>
+
+ <p>The input to this was the file <b>medium.files</b>, the
+ output is the file <b>medium.trawl</b>.
+ </dd>
+
+ <dt><b>> elib1_make_index Name</b></dt>
+ <dd><p>Creates an index from a trawl file.</p>
+ <p>Example:</p>
+ <pre>
+ ./elib1_make_index medium
+ keywords: building word table
+ indexing: 215830 words loaded
+ keywords: analysing files files (can take a while) .....100
+ ....200 ....300 ....400 ....500 ....600 ...
+ keywords: Number of files indexed: 677
+ keywords: Inverting word table
+ extract keywords Took 5589 ms.
+ pack index: sorting
+ pack index: sorting done
+ pack index: outputting index
+ pack index: Size of temporary pair map:1058713 bytes
+ pack index: Size of serialised word table:6391579 bytes
+ pack index: Number of words in word table:218582
+ pack index: Created medium.index: 532152 bytes
+ pack index: Took 717 ms.
+ indexing: Took 6307 ms.
+ </pre>
+
+ <p>In the above given a trawl file <b>medium.trawl</b> we create
+ an index file <b>medium.index</b>.</p>
+ </dd>
+
+ <dd>
+ <dt><b>./elib1_query name String</b></dt>
+ <dd><p>Query the index. For example:</p>
+ <pre>
+ > elib1_query medium "rectangle area"
+ lookup:"rectangle"
+ rectangle 10 hits
+ lookup:"area"
+ area 9 hits
+ [{874747,&lt;&lt;"/home/ejoearm/code/talks/2009/lecture.erl">>},
+ {138487,&lt;&lt;"/home/ejoearm/code/jaerlang_code/area_server_final.erl">>},
+ {20919,&lt;&lt;"/home/ejoearm/code/whoomph/Whoomph1Day/code/compiling/math2.erl">>},
+ {159631,&lt;&lt;"/home/ejoearm/code/jaerlang_code/geometry.erl">>},
+ {131382,&lt;&lt;"/home/ejoearm/code/jaerlang_code/area_server.erl">>}]
+ query Took 27 ms.
+ </pre>
+ <p>Once we have queried the index we get a list of the matching
+ keywords and the filename of the files which match the query.</p>
+
+ <p>These can be further extracted as follows:</p>
+ <pre>
+ elib1_indexer:extract(medium, 874747).
+ {&lt;&lt;"/home/ejoearm/code/talks/2009/lecture.erl">>,
+ &lt;&lt; "-module(lecture).\n\n%% erl +P 2000000\n%% Erlang ...">>
+ </pre>
+
+ <p>A better way to query the index is
+ use the <a href="web_query.html">web query page</a>
+ </dd>
+ </dl>
+
+
+</html>
220 doc/edit.html
@@ -0,0 +1,220 @@
+<style>
+ /* set the padding here to match with the size of the top and right
+ sidebars */
+
+body{
+ padding-top:120px;
+ padding-left:100px;
+ padding-right:320px;
+ }
+
+p {text-align:justify}
+
+div#header{
+ background-color:#aabbcc;
+ position:fixed;
+ padding-left:10px;
+ top:0;
+ left:0;
+ width:500%;
+ height:30px; /* so padding-left:70px */
+ }
+
+ * html body{
+ overflow:hidden;
+ }
+
+ * html div.content{
+ height:100%;
+ overflow:auto;
+ }
+
+</style>
+<script src="/include/jquery-1.3.2.min.js"></script>
+<link href='../../include/elib1.css' type='text/css' rel='stylesheet'/>
+
+<script>
+
+var editing;
+var c;
+var guid;
+
+function setup()
+{
+ c=$("#content");
+ var editButtons =
+ $("<div id='editButtons' class='buttons'></div>");
+ $("#buttons").append(editButtons);
+ // note ${file} is expanded and so is not jquery code
+ add_regular_button(editButtons, "save",
+ function(){save_edit("${file}")});
+ $(editButtons).append("&nbsp;");
+ add_edit_button(editButtons, "Q", "insertHTML", "&ldquo;quotes&rdquo;");
+ add_edit_button(editButtons, "I", "italic", null);
+ add_edit_button(editButtons, "S", "strikethrough", null);
+ add_edit_button(editButtons, "C", "bold", null);
+ add_edit_button(editButtons, "ol", "insertHTML", "<ol><li>one</ol>\n");
+ add_edit_button(editButtons, "ul", "insertHTML", "<ul><li>one</ul>\n");
+ add_edit_button(editButtons, "pre", "insertHTML", "<pre></pre>");
+ add_edit_button(editButtons, "h2", "insertHTML", "<h2>H2</h2>");
+ add_edit_button(editButtons, "h1", "insertHTML", "<h1>H</h1>");
+ add_edit_button(editButtons, "p", "insertHTML", "<p>para</p>");
+ add_edit_button(editButtons, "todo", "insertHTML",
+ "<h3>To Do</h3><ul><li>one</li>");
+
+ add_edit_button(editButtons, "image", "insertHTML",
+ "<center><img onclick='cimage(1);' width='200' src='p2.jpg'/></center>");
+ set_edit_on();
+}
+
+function cimage(x)
+{
+ alert(x);
+ alert($(this));
+ $(this).hide();
+}
+
+function save_edit(f)
+{
+ // send data back to the server
+ val = $("#content").html();
+ $.get("mod",
+ {mod:"elib1_content_edit",
+ func:"save",
+ file:f, value:val},
+ // function(x){done_save(x)}, 'json');
+ function(x){done_save(f)});
+}
+
+function load_content(g)
+{
+ $.get("load_content", {id:g}, function(x){done_load(x)}, 'json');
+ // $.get("load_content", {id:g}, function(x){done_load(x)});
+}
+
+function done_save(f)
+{
+ // done_load(x);
+ // $("#versions").html(x.versions);
+ // alert("saved="+f);
+ window.location.href = "/doc/" + f + ".html";
+ // $().load(f + ".html");
+}
+
+function done_load(x)
+{
+ $("#header").html("guid=" + x.guid + " last modified=" + x.mod
+ + " editable=" + x.edit);
+ guid = x.guid;
+ $("#content").html(x.val);
+ switch(x.edit){
+ case true:
+ set_edit_on();
+ break;
+ case false:
+ set_edit_off();
+ break;
+ };
+}
+
+function toggle_edit()
+{
+ switch(editing){
+ case true:
+ set_edit_off();
+ break;
+ case false:
+ set_edit_on();
+ break;
+ };
+}
+
+
+function load_content_old(type, G)
+{
+ // alert("load content type=" + type + " guid=" + G);
+ // $("#header").html("Guid=" + G);
+ $("#content").load("load_content",{id:G});
+ guid=G;
+ switch(type){
+ case "edit":
+ set_edit_on();
+ break;
+ case "lock":
+ set_edit_off();
+ break;
+ default:
+ alert("????????");
+ };}
+
+function load_versions(Guid)
+{
+ // load the toolbar with versions ...
+ $("#versions").load("get_versions",
+ {"id":Guid});
+
+}
+
+function toggle_class(x)
+{
+ $(x).toggle();
+}
+
+function set_edit_off()
+{
+ c.get(0).contentEditable = false;
+ c.css({background:"white"});
+ editing=false;
+ $("#header").html("No status is good status");
+ $("#editButtons").hide();
+}
+
+function set_edit_on()
+{
+ c.get(0).contentEditable = true;
+ // c.css({background:"#eeeeee"});
+ editing=true;
+ $("#editButtons").show();
+}
+
+function add_regular_button(x, text, callback)
+{
+ var button = $("<button>" + text + "</button>").
+ click(callback);
+ x.append(button);
+}
+
+function add_div(x)
+{
+ var y = "." + x;
+ $(x).show();
+ document.execCommand("insertHTML",
+ false,
+ "<div class='" + x +"'>Add " + x + "here</div>");
+}
+
+function add_edit_button(x, text, cmd, val)
+{
+ var button = $("<button>" + text + "</button>").
+ click(function(){
+ document.execCommand(cmd, false, val);
+ });
+ x.append(button);
+}
+
+$(document).ready(function(){setup()});
+
+</script>
+
+<body>
+
+<div id="header">
+ <div id="buttons">
+ </div>
+</div>
+
+<div id="content">
+${content}
+</div>
+
+</body>
37 doc/glossary.ehtml
@@ -0,0 +1,37 @@
+<html>
+ <h1>Glossary</h1>
+
+ <h2>Binary Term Sequence File</h2>
+
+ <p>A BTSF file is a sequence of terms <b>T1, T2, ...</b>
+ encoded as follows:</p>
+
+ <table>
+ <tr><td>encode_term(T1)</td></tr>
+ <tr><td>encode_term(T2)</td></tr>
+ <tr><td>...</td></tr>
+ </table>
+
+ <p>Where:</p>
+
+ <pre>
+ encode_term(Term) ->
+ Bin = term_to_binary(Term),
+ Len = size(Bin),
+ &lt;&lt;Len:32/big,Bin/binary>>.
+ </pre>
+
+ <p>An individual term <b>T</b> is represented by a length count <b>Len</b>
+ <i>(A 32 bit big endian integer)</i> followed by a <b>Len</b>
+ byte binary. The binary is made by calling <b>term_to_binary(T)</b>.</p>
+
+ <p>
+ Files of encoded binary terms can be read and written extremely
+ efficiently using the routines in <b>elib1_fast_read</b>
+ and <b>elib1_fast_write</b>.
+ </p>
+
+ <p>Library modules like <b>sort_file</b> make use of buffered I/O to
+ sort BTSF file very efficiently.</p>
+</html>
+
36 doc/index.ehtml
@@ -0,0 +1,36 @@
+<html>
+ <script>
+function link(file,text)
+{
+ document.write("<li><a href='/mod?mod=elib1_content_edit&func=show_ehtml&file=/home/ejoearm/code/elib2-1/doc/" + file + ".html'>" + text + "</a></li>");
+}
+</script>
+
+ <h1>Index</h1>
+
+ <a href="/mod?mod=elib1_content_edit&amp;func=list_dir">auto generate
+ the index</a>
+
+ <ul>
+ <script>
+ link("about","About This Library");
+ link("glossary", "Glossary");
+ link("trawl", "Trawl files");
+ link("bin", "runnable programs");
+ link("full_text_index","A full text indexing engine");
+ link("web_query","A query interface to the indexing engine");
+ link("webserver", "A Web Server");
+ link("validate", "Notes on my XML validation chain");
+ link("content_editable", "Content editable a custom editor for this library");
+ link("erl_browser", "A browser for Erlang code");
+ link("squasher", "squash many files into one");
+ link("similar", "Find similar files in a trawl");
+ link("doc", "How this library is documented.");
+ link("xml.html", "XML parsing and manipulation");
+ link("fast_io","Fast I/O");
+ link("parsing", "Parser combinators");
+ link("lib_misc", "Lib misc");
+ </script>
+ </ul>
+
+</html>
14 doc/trawl.ehtml
@@ -0,0 +1,14 @@
+<html>
+
+
+ <h1>Trawl files</h1>
+ <p> <img light="right" wodth="100" src="./trawl.jpg">A trawler at
+ work. The trawler catches fish. Our trawler catches files. A trawl
+ file is created with top-level
+ command <br></p><pre><br></pre><p>&gt; trawl Name Top</p><p>This
+ will tug along for a while collecting a large number of files. These
+ files are compressed ad appended to the trawl file. Trawl files are
+ tuple files which contain {FileName, MD5, B} tuples, where B
+ is <br></p>
+
+</html>
53 doc/webserver.ehtml
@@ -0,0 +1,53 @@
+<html>
+
+ <h1>Web Server</h1>
+
+ <p>
+ The web server described here is used for all my experiments. It
+ is not a fully-featured can-do-everything web
+ server <comment>refer to yaws ... here</comment> But it is
+ sufficient for most of my rather modest needs.
+ </p>
+
+ <h2>Starting the web server</h2>
+
+ <pre> &gt; elib1_webkit:start_web_server(Port, Root)
+ </pre>
+
+ <h2>Urls and callbacks</h2>
+
+ <dl>
+ <dt>Path/to/FileName</dt>
+ <dd>
+ <p>will try and retreive <b>Path/to/FileName</b>. The path to
+ the filename can be absolute (starting with "/") or relatiove
+ (starting with anything else). ".." in a path is permitted,
+ thjough you cannout use this to climb outside root of the
+ server.</p>
+ </dd>
+ <dt>/mod?mod=ModName&amp;func=Func&amp;arg1=...</dt>
+ <dd>
+ <p>This is where life gets interesting.
+ <b>/mod?mod=foo?func=bar&amp;x=1&amp;y=2</b> will try to
+ evaluate the code in <b>foo.beam</b> (which will be autoloaded)
+ necessary. It will call <b>foo:bar(...)handle/3</b></p>
+ </dd>
+ </dl>
+
+ <h2>handle/3</h2>
+
+ <dl>
+ <dt>handle(Op, Headers, Uri, Args)</dt>
+ <dd>
+ <p>This must return:</p>
+ <ul>
+ <li><p><b>{ok, Type, Content}</b></p></li>
+ <li><p><b>{error, Code}</b></p></li>
+ </ul>
+ </dd>
+ </dl>
+
+
+
+
+</html>
BIN  include/354984si.ngl.gz
Binary file not shown
11 include/dtd/catalog.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE catalog PUBLIC
+ "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
+ "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+ <public
+ publicId="-//W3C//DTD XHTML 1.0 Transitional//EN"
+ uri="/Users/joe/code/elib2-1/dtd/xhtml1-transitional.dtd"/>
+
+
+</catalog>
68 include/dtd/readdme.html
@@ -0,0 +1,68 @@
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" >
+ <head>
+ <title>Readme</title>
+ <!-- note: Do not omit the rel="stylesheet" -->
+ <link href="../include/elib1.css" rel="stylesheet" />
+ <!-- note: Always use <script>..</script> format -->
+
+ <script src="../include/jquery-1.3.2.min.js"
+ type="text/javascript"> </script>
+ </head>
+ <body>
+ <h1>Readme</h1>
+
+
+ <h1>Validation</h1>
+
+ <p><b>XML</b> and <b>HTML</b> are validated with the command:</p>
+ <pre>
+ > xml_check &lt;File>
+ </pre>
+
+ <p><b>xml_check</b> is as follows:</p>
+
+ <pre>
+#!/bin/sh
+export XML_CATALOG_FILES=$HOME/code/elib2-1/dtd/catalog.xml
+unset SGML_CATALOG_FILES
+xmllint --nonet --valid --noout $1
+ </pre>
+
+ <p>The environemnt variable must point to <i>this</i> directory.</p>
+
+ <p><b>catalog.xml</b> also contains some absolut paths
+ which must be edited to reflect the absolute location of the
+ DTD files.</p>
+
+ <p>The nXML mode is used for all XML/HTML editing. It is setup as
+ follows:</p>
+
+ <p><b><font color="red">How do I setup xmllint to validate xhtml?</font></b></p>
+
+ <p>Well actually it does :-)</p>
+
+ <pre>
+ xmllint --valid --noout html1.html
+ </pre>
+
+ <pre>
+ xmllint --valid --noout --nonet html1.html
+ Validation failed: no DTD found !
+ </pre>
+
+ <p>Which means we can validate but not offline</p>
+
+
+ <pre>
+ wget http:
+ </pre>
+
+ <pre>
+ wget http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
+ </pre>
+
+ </body>
+</html>
196 include/dtd/xhtml-lat1.ent
@@ -0,0 +1,196 @@
+<!-- Portions (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+ %HTMLlat1;
+-->
+
+<!ENTITY nbsp "&#160;"> <!-- no-break space = non-breaking space,
+ U+00A0 ISOnum -->
+<!ENTITY iexcl "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
+ U+00A6 ISOnum -->
+<!ENTITY sect "&#167;"> <!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml "&#168;"> <!-- diaeresis = spacing diaeresis,
+ U+00A8 ISOdia -->
+<!ENTITY copy "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo "&#171;"> <!-- left-pointing double angle quotation mark
+ = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not "&#172;"> <!-- not sign = angled dash,
+ U+00AC ISOnum -->
+<!ENTITY shy "&#173;"> <!-- soft hyphen = discretionary hyphen,
+ U+00AD ISOnum -->
+<!ENTITY reg "&#174;"> <!-- registered sign = registered trade mark sign,
+ U+00AE ISOnum -->
+<!ENTITY macr "&#175;"> <!-- macron = spacing macron = overline
+ = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
+ U+00B1 ISOnum -->
+<!ENTITY sup2 "&#178;"> <!-- superscript two = superscript digit two
+ = squared, U+00B2 ISOnum -->
+<!ENTITY sup3 "&#179;"> <!-- superscript three = superscript digit three
+ = cubed, U+00B3 ISOnum -->
+<!ENTITY acute "&#180;"> <!-- acute accent = spacing acute,
+ U+00B4 ISOdia -->
+<!ENTITY micro "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para "&#182;"> <!-- pilcrow sign = paragraph sign,
+ U+00B6 ISOnum -->
+<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
+ = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1 "&#185;"> <!-- superscript one = superscript digit one,
+ U+00B9 ISOnum -->
+<!ENTITY ordm "&#186;"> <!-- masculine ordinal indicator,
+ U+00BA ISOnum -->
+<!ENTITY raquo "&#187;"> <!-- right-pointing double angle quotation mark
+ = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
+ = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
+ = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
+ = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;"> <!-- inverted question mark
+ = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
+ = latin capital letter A grave,
+ U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
+ U+00C1 ISOlat1 -->
+<!ENTITY Acirc "&#194;"> <!-- latin capital letter A with circumflex,
+ U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
+ U+00C3 ISOlat1 -->
+<!ENTITY Auml "&#196;"> <!-- latin capital letter A with diaeresis,
+ U+00C4 ISOlat1 -->
+<!ENTITY Aring "&#197;"> <!-- latin capital letter A with ring above
+ = latin capital letter A ring,
+ U+00C5 ISOlat1 -->
+<!ENTITY AElig "&#198;"> <!-- latin capital letter AE
+ = latin capital ligature AE,
+ U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
+ U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
+ U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
+ U+00C9 ISOlat1 -->
+<!ENTITY Ecirc "&#202;"> <!-- latin capital letter E with circumflex,
+ U+00CA ISOlat1 -->
+<!ENTITY Euml "&#203;"> <!-- latin capital letter E with diaeresis,
+ U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
+ U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
+ U+00CD ISOlat1 -->
+<!ENTITY Icirc "&#206;"> <!-- latin capital letter I with circumflex,
+ U+00CE ISOlat1 -->
+<!ENTITY Iuml "&#207;"> <!-- latin capital letter I with diaeresis,
+ U+00CF ISOlat1 -->
+<!ENTITY ETH "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
+ U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
+ U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
+ U+00D3 ISOlat1 -->
+<!ENTITY Ocirc "&#212;"> <!-- latin capital letter O with circumflex,
+ U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
+ U+00D5 ISOlat1 -->
+<!ENTITY Ouml "&#214;"> <!-- latin capital letter O with diaeresis,
+ U+00D6 ISOlat1 -->
+<!ENTITY times "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
+ = latin capital letter O slash,
+ U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
+ U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
+ U+00DA ISOlat1 -->
+<!ENTITY Ucirc "&#219;"> <!-- latin capital letter U with circumflex,
+ U+00DB ISOlat1 -->
+<!ENTITY Uuml "&#220;"> <!-- latin capital letter U with diaeresis,
+ U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
+ U+00DD ISOlat1 -->
+<!ENTITY THORN "&#222;"> <!-- latin capital letter THORN,
+ U+00DE ISOlat1 -->
+<!ENTITY szlig "&#223;"> <!-- latin small letter sharp s = ess-zed,
+ U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
+ = latin small letter a grave,
+ U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
+ U+00E1 ISOlat1 -->
+<!ENTITY acirc "&#226;"> <!-- latin small letter a with circumflex,
+ U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
+ U+00E3 ISOlat1 -->
+<!ENTITY auml "&#228;"> <!-- latin small letter a with diaeresis,
+ U+00E4 ISOlat1 -->
+<!ENTITY aring "&#229;"> <!-- latin small letter a with ring above
+ = latin small letter a ring,
+ U+00E5 ISOlat1 -->
+<!ENTITY aelig "&#230;"> <!-- latin small letter ae
+ = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
+ U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
+ U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
+ U+00E9 ISOlat1 -->
+<!ENTITY ecirc "&#234;"> <!-- latin small letter e with circumflex,
+ U+00EA ISOlat1 -->
+<!ENTITY euml "&#235;"> <!-- latin small letter e with diaeresis,
+ U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
+ U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
+ U+00ED ISOlat1 -->
+<!ENTITY icirc "&#238;"> <!-- latin small letter i with circumflex,
+ U+00EE ISOlat1 -->
+<!ENTITY iuml "&#239;"> <!-- latin small letter i with diaeresis,
+ U+00EF ISOlat1 -->
+<!ENTITY eth "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
+ U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
+ U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
+ U+00F3 ISOlat1 -->
+<!ENTITY ocirc "&#244;"> <!-- latin small letter o with circumflex,
+ U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
+ U+00F5 ISOlat1 -->
+<!ENTITY ouml "&#246;"> <!-- latin small letter o with diaeresis,
+ U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
+ = latin small letter o slash,
+ U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
+ U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
+ U+00FA ISOlat1 -->
+<!ENTITY ucirc "&#251;"> <!-- latin small letter u with circumflex,
+ U+00FB ISOlat1 -->
+<!ENTITY uuml "&#252;"> <!-- latin small letter u with diaeresis,
+ U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
+ U+00FD ISOlat1 -->
+<!ENTITY thorn "&#254;"> <!-- latin small letter thorn,
+ U+00FE ISOlat1 -->
+<!ENTITY yuml "&#255;"> <!-- latin small letter y with diaeresis,
+ U+00FF ISOlat1 -->
80 include/dtd/xhtml-special.ent
@@ -0,0 +1,80 @@
+<!-- Special characters for XHTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+ %HTMLspecial;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ existing ISO 8879 entity names. ISO 10646 character numbers
+ are given for each character, in hex. values are decimal
+ conversions of the ISO 10646 values and refer to the document
+ character set. Names are Unicode names.
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot "&#34;"> <!-- quotation mark, U+0022 ISOnum -->
+<!ENTITY amp "&#38;#38;"> <!-- ampersand, U+0026 ISOnum -->
+<!ENTITY lt "&#38;#60;"> <!-- less-than sign, U+003C ISOnum -->
+<!ENTITY gt "&#62;"> <!-- greater-than sign, U+003E ISOnum -->
+<!ENTITY apos "&#39;"> <!-- apostrophe = APL quote, U+0027 ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig "&#338;"> <!-- latin capital ligature OE,
+ U+0152 ISOlat2 -->
+<!ENTITY oelig "&#339;"> <!-- latin small ligature oe, U+0153 ISOlat2 -->
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron "&#352;"> <!-- latin capital letter S with caron,
+ U+0160 ISOlat2 -->
+<!ENTITY scaron "&#353;"> <!-- latin small letter s with caron,
+ U+0161 ISOlat2 -->
+<!ENTITY Yuml "&#376;"> <!-- latin capital letter Y with diaeresis,
+ U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ "&#710;"> <!-- modifier letter circumflex accent,
+ U+02C6 ISOpub -->
+<!ENTITY tilde "&#732;"> <!-- small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp "&#8194;"> <!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp "&#8195;"> <!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp "&#8201;"> <!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj "&#8204;"> <!-- zero width non-joiner,
+ U+200C NEW RFC 2070 -->
+<!ENTITY zwj "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash "&#8211;"> <!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash "&#8212;"> <!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo "&#8216;"> <!-- left single quotation mark,
+ U+2018 ISOnum -->
+<!ENTITY rsquo "&#8217;"> <!-- right single quotation mark,
+ U+2019 ISOnum -->
+<!ENTITY sbquo "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo "&#8220;"> <!-- left double quotation mark,
+ U+201C ISOnum -->
+<!ENTITY rdquo "&#8221;"> <!-- right double quotation mark,
+ U+201D ISOnum -->
+<!ENTITY bdquo "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger "&#8224;"> <!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
+<!ENTITY lsaquo "&#8249;"> <!-- single left-pointing angle quotation mark,
+ U+2039 ISO proposed -->
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo "&#8250;"> <!-- single right-pointing angle quotation mark,
+ U+203A ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+
+<!-- Currency Symbols -->
+<!ENTITY euro "&#8364;"> <!-- euro sign, U+20AC NEW -->
237 include/dtd/xhtml-symbol.ent
@@ -0,0 +1,237 @@
+<!-- Mathematical, Greek and Symbolic characters for XHTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+ %HTMLsymbol;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ existing ISO 8879 entity names. ISO 10646 character numbers
+ are given for each character, in hex. values are decimal
+ conversions of the ISO 10646 values and refer to the document
+ character set. Names are Unicode names.
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof "&#402;"> <!-- latin small letter f with hook = function
+ = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha "&#913;"> <!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta "&#914;"> <!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma "&#915;"> <!-- greek capital letter gamma,
+ U+0393 ISOgrk3 -->
+<!ENTITY Delta "&#916;"> <!-- greek capital letter delta,
+ U+0394 ISOgrk3 -->
+<!ENTITY Epsilon "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta "&#918;"> <!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta "&#919;"> <!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta "&#920;"> <!-- greek capital letter theta,
+ U+0398 ISOgrk3 -->
+<!ENTITY Iota "&#921;"> <!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa "&#922;"> <!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda "&#923;"> <!-- greek capital letter lamda,
+ U+039B ISOgrk3 -->
+<!ENTITY Mu "&#924;"> <!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu "&#925;"> <!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron "&#927;"> <!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho "&#929;"> <!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma "&#931;"> <!-- greek capital letter sigma,
+ U+03A3 ISOgrk3 -->
+<!ENTITY Tau "&#932;"> <!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon "&#933;"> <!-- greek capital letter upsilon,
+ U+03A5 ISOgrk3 -->
+<!ENTITY Phi "&#934;"> <!-- greek capital letter phi,
+ U+03A6 ISOgrk3 -->
+<!ENTITY Chi "&#935;"> <!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi "&#936;"> <!-- greek capital letter psi,
+ U+03A8 ISOgrk3 -->
+<!ENTITY Omega "&#937;"> <!-- greek capital letter omega,
+ U+03A9 ISOgrk3 -->
+
+<!ENTITY alpha "&#945;"> <!-- greek small letter alpha,
+ U+03B1 ISOgrk3 -->
+<!ENTITY beta "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma "&#947;"> <!-- greek small letter gamma,
+ U+03B3 ISOgrk3 -->
+<!ENTITY delta "&#948;"> <!-- greek small letter delta,
+ U+03B4 ISOgrk3 -->
+<!ENTITY epsilon "&#949;"> <!-- greek small letter epsilon,
+ U+03B5 ISOgrk3 -->
+<!ENTITY zeta "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta "&#952;"> <!-- greek small letter theta,
+ U+03B8 ISOgrk3 -->
+<!ENTITY iota "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa "&#954;"> <!-- greek small letter kappa,
+ U+03BA ISOgrk3 -->
+<!ENTITY lambda "&#955;"> <!-- greek small letter lamda,
+ U+03BB ISOgrk3 -->
+<!ENTITY mu "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf "&#962;"> <!-- greek small letter final sigma,
+ U+03C2 ISOgrk3 -->
+<!ENTITY sigma "&#963;"> <!-- greek small letter sigma,
+ U+03C3 ISOgrk3 -->
+<!ENTITY tau "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon "&#965;"> <!-- greek small letter upsilon,
+ U+03C5 ISOgrk3 -->
+<!ENTITY phi "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega "&#969;"> <!-- greek small letter omega,
+ U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
+ U+03D1 NEW -->
+<!ENTITY upsih "&#978;"> <!-- greek upsilon with hook symbol,
+ U+03D2 NEW -->
+<!ENTITY piv "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull "&#8226;"> <!-- bullet = black small circle,
+ U+2022 ISOpub -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip "&#8230;"> <!-- horizontal ellipsis = three dot leader,
+ U+2026 ISOpub -->
+<!ENTITY prime "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime "&#8243;"> <!-- double prime = seconds = inches,
+ U+2033 ISOtech -->
+<!ENTITY oline "&#8254;"> <!-- overline = spacing overscore,
+ U+203E NEW -->
+<!ENTITY frasl "&#8260;"> <!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp "&#8472;"> <!-- script capital P = power set
+ = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image "&#8465;"> <!-- black-letter capital I = imaginary part,
+ U+2111 ISOamso -->
+<!ENTITY real "&#8476;"> <!-- black-letter capital R = real part symbol,
+ U+211C ISOamso -->
+<!ENTITY trade "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym "&#8501;"> <!-- alef symbol = first transfinite cardinal,
+ U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef,
+ U+05D0 although the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr "&#8629;"> <!-- downwards arrow with corner leftwards
+ = carriage return, U+21B5 NEW -->
+<!ENTITY lArr "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+ but also does not have any other character for that function. So lArr can
+ be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr "&#8658;"> <!-- rightwards double arrow,
+ U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have
+ another character with this function so rArr can be used for 'implies'
+ as ISOtech suggests -->
+<!ENTITY dArr "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr "&#8660;"> <!-- left right double arrow,
+ U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall "&#8704;"> <!-- for all, U+2200 ISOtech -->
+<!ENTITY part "&#8706;"> <!-- partial differential, U+2202 ISOtech -->
+<!ENTITY exist "&#8707;"> <!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
+<!ENTITY nabla "&#8711;"> <!-- nabla = backward difference,
+ U+2207 ISOtech -->
+<!ENTITY isin "&#8712;"> <!-- element of, U+2208 ISOtech -->
+<!ENTITY notin "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni "&#8715;"> <!-- contains as member, U+220B ISOtech -->
+<!ENTITY prod "&#8719;"> <!-- n-ary product = product sign,
+ U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+ the same glyph might be used for both -->
+<!ENTITY sum "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+ though the same glyph might be used for both -->
+<!ENTITY minus "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic "&#8730;"> <!-- square root = radical sign,
+ U+221A ISOtech -->
+<!ENTITY prop "&#8733;"> <!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin "&#8734;"> <!-- infinity, U+221E ISOtech -->
+<!ENTITY ang "&#8736;"> <!-- angle, U+2220 ISOamso -->
+<!ENTITY and "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup "&#8746;"> <!-- union = cup, U+222A ISOtech -->
+<!ENTITY int "&#8747;"> <!-- integral, U+222B ISOtech -->
+<!ENTITY there4 "&#8756;"> <!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim "&#8764;"> <!-- tilde operator = varies with = similar to,
+ U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+ although the same glyph might be used to represent both -->
+<!ENTITY cong "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp "&#8776;"> <!-- almost equal to = asymptotic to,
+ U+2248 ISOamsr -->
+<!ENTITY ne "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv "&#8801;"> <!-- identical to, U+2261 ISOtech -->
+<!ENTITY le "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge "&#8805;"> <!-- greater-than or equal to,
+ U+2265 ISOtech -->
+<!ENTITY sub "&#8834;"> <!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup "&#8835;"> <!-- superset of, U+2283 ISOtech -->
+<!ENTITY nsub "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe "&#8839;"> <!-- superset of or equal to,
+ U+2287 ISOtech -->
+<!ENTITY oplus "&#8853;"> <!-- circled plus = direct sum,
+ U+2295 ISOamsb -->
+<!ENTITY otimes "&#8855;"> <!-- circled times = vector product,
+ U+2297 ISOamsb -->
+<!ENTITY perp "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
+ U+22A5 ISOtech -->
+<!ENTITY sdot "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil "&#8968;"> <!-- left ceiling = APL upstile,
+ U+2308 ISOamsc -->
+<!ENTITY rceil "&#8969;"> <!-- right ceiling, U+2309 ISOamsc -->
+<!ENTITY lfloor "&#8970;"> <!-- left floor = APL downstile,
+ U+230A ISOamsc -->
+<!ENTITY rfloor "&#8971;"> <!-- right floor, U+230B ISOamsc -->
+<!ENTITY lang "&#9001;"> <!-- left-pointing angle bracket = bra,
+ U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than sign'
+ or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang "&#9002;"> <!-- right-pointing angle bracket = ket,
+ U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than sign'
+ or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs "&#9827;"> <!-- black club suit = shamrock,
+ U+2663 ISOpub -->
+<!ENTITY hearts "&#9829;"> <!-- black heart suit = valentine,
+ U+2665 ISOpub -->
+<!ENTITY diams "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->
1,201 include/dtd/xhtml1-transitional.dtd
@@ -0,0 +1,1201 @@
+<!--
+ Extensible HTML version 1.0 Transitional DTD
+
+ This is the same as HTML 4 Transitional except for
+ changes due to the differences between XML and SGML.
+
+ Namespace = http://www.w3.org/1999/xhtml
+
+ For further information, see: http://www.w3.org/TR/xhtml1
+
+ Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
+ All Rights Reserved.
+
+ This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+
+ $Revision: 1.2 $
+ $Date: 2002/08/01 18:37:55 $
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+ "xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols for XHTML//EN"
+ "xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special for XHTML//EN"
+ "xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+ <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+ <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+ <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+ <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+ <!-- a language code, as per [RFC3066] -->
+
+<!ENTITY % Character "CDATA">
+ <!-- a single character, as per section 2.2 of [XML] -->
+
+<!ENTITY % Number "CDATA">
+ <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+ <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+ <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+ <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+ <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+ <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+ <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+ <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+ <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+ <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+ <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+ <!-- pixel, percentage, or relative -->
+
+<!ENTITY % Pixels "CDATA">
+ <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+ <!-- comma separated list of lengths -->
+
+<!-- used for object, applet, img, input and iframe -->
+<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
+
+<!-- a color using sRGB: #RRGGBB as Hex values -->
+<!ENTITY % Color "CDATA">
+
+<!-- There are also 16 widely known color names with their sRGB values:
+
+ Black = #000000 Green = #008000
+ Silver = #C0C0C0 Lime = #00FF00
+ Gray = #808080 Olive = #808000
+ White = #FFFFFF Yellow = #FFFF00
+ Maroon = #800000 Navy = #000080
+ Red = #FF0000 Blue = #0000FF
+ Purple = #800080 Teal = #008080
+ Fuchsia= #FF00FF Aqua = #00FFFF
+-->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+ id document-wide unique id
+ class space separated list of classes
+ style associated style info
+ title advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id ID #IMPLIED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED"
+ >
+
+<!-- internationalization attributes
+ lang language code (backwards compatible)
+ xml:lang language code (as per XML 1.0 spec)
+ dir direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #IMPLIED"
+ >
+
+<!-- attributes for common UI events
+ onclick a pointer button was clicked
+ ondblclick a pointer button was double clicked
+ onmousedown a pointer button was pressed down
+ onmouseup a pointer button was released
+ onmousemove a pointer was moved onto the element
+ onmouseout a pointer was moved away from the element
+ onkeypress a key was pressed and released
+ onkeydown a key was pressed down
+ onkeyup a key was released
+-->
+<!ENTITY % events
+ "onclick %Script; #IMPLIED
+ ondblclick %Script; #IMPLIED
+ onmousedown %Script; #IMPLIED
+ onmouseup %Script; #IMPLIED
+ onmouseover %Script; #IMPLIED
+ onmousemove %Script; #IMPLIED
+ onmouseout %Script; #IMPLIED
+ onkeypress %Script; #IMPLIED
+ onkeydown %Script; #IMPLIED
+ onkeyup %Script; #IMPLIED"
+ >
+
+<!-- attributes for elements that can get the focus
+ accesskey accessibility key character
+ tabindex position in tabbing order
+ onfocus the element got the focus
+ onblur the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey %Character; #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED"
+ >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!-- text alignment for p, div, h1-h6. The default is
+ align="left" for ltr headings, "right" for rtl -->
+
+<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special.extra
+ "object | applet | img | map | iframe">
+
+<!ENTITY % special.basic
+ "br | span | bdo">
+
+<!ENTITY % special
+ "%special.basic; | %special.extra;">
+
+<!ENTITY % fontstyle.extra "big | small | font | basefont">
+
+<!ENTITY % fontstyle.basic "tt | i | b | u
+ | s | strike ">
+
+<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
+
+<!ENTITY % phrase.extra "sub | sup">
+<!ENTITY % phrase.basic "em | strong | dfn | code | q |
+ samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc.inline "ins | del | script">
+
+<!-- these can only occur at block level -->
+<!ENTITY % misc "noscript | %misc.inline;">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl | menu | dir">
+<!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">
+
+<!ENTITY % block
+ "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">
+
+<!-- %Flow; mixes block and inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+ "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
+
+<!-- pre uses %Inline excluding img, object, applet, big, small,
+ font, or basefont -->
+
+<!ENTITY % pre.content
+ "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
+ %inline.forms; | %misc.inline;)*">
+
+<!-- form uses %Flow; excluding form -->
+
+<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
+
+<!ENTITY % button.content
+ "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+ table | br | span | bdo | object | applet | img | map |
+ %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, body)>
+<!ATTLIST html
+ %i18n;
+ id ID #IMPLIED
+ xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
+ >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
+
+<!-- content model is %head.misc; combined with a single
+ title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+ ((title, %head.misc;, (base, %head.misc;)?) |
+ (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+ %i18n;
+ id ID #IMPLIED
+ profile %URI; #IMPLIED
+ >
+
+<!-- The title element is not considered part of the flow of text.
+ It should be displayed, for example as the page header or
+ window title. Exactly one title is required per document.
+ -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title
+ %i18n;
+ id ID #IMPLIED
+ >
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+ id ID #IMPLIED
+ href %URI; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+ %i18n;
+ id ID #IMPLIED
+ http-equiv CDATA #IMPLIED
+ name CDATA #IMPLIED
+ content CDATA #REQUIRED
+ scheme CDATA #IMPLIED
+ >
+
+<!--
+ Relationship values can be used in principle:
+
+ a) for document specific toolbars/menus when used
+ with the link element in document head e.g.
+ start, contents, previous, next, index, end, help
+ b) to link to a separate style sheet (rel="stylesheet")
+ c) to make a link to a script (rel="script")
+ d) by stylesheets to control how collections of
+ html nodes are rendered into printed documents
+ e) to make a link to a printable version of this document
+ e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+ %attrs;
+ charset %Charset; #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ type %ContentType; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ media %MediaDesc; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+ %i18n;
+ id ID #IMPLIED
+ type %ContentType; #REQUIRED
+ media %MediaDesc; #IMPLIED
+ title %Text; #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+ id ID #IMPLIED
+ charset %Charset; #IMPLIED
+ type %ContentType; #REQUIRED
+ language CDATA #IMPLIED
+ src %URI; #IMPLIED
+ defer (defer) #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Flow;>
+<!ATTLIST noscript
+ %attrs;
+ >
+
+<!--======================= Frames =======================================-->
+
+<!-- inline subwindow -->
+
+<!ELEMENT iframe %Flow;>
+<!ATTLIST iframe
+ %coreattrs;
+ longdesc %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ src %URI; #IMPLIED
+ frameborder (1|0) "1"
+ marginwidth %Pixels; #IMPLIED
+ marginheight %Pixels; #IMPLIED
+ scrolling (yes|no|auto) "auto"
+ align %ImgAlign; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ >
+
+<!-- alternate content container for non frame-based rendering -->
+
+<!ELEMENT noframes %Flow;>
+<!ATTLIST noframes
+ %attrs;
+ >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Flow;>
+<!ATTLIST body
+ %attrs;
+ onload %Script; #IMPLIED
+ onunload %Script; #IMPLIED
+ background %URI; #IMPLIED
+ bgcolor %Color; #IMPLIED
+ text %Color; #IMPLIED
+ link %Color; #IMPLIED
+ vlink %Color; #IMPLIED
+ alink %Color; #IMPLIED
+ >
+
+<!ELEMENT div %Flow;> <!-- generic language/style container -->
+<!ATTLIST div
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Headings =========================================-->
+
+<!--
+ There are six levels of headings from h1 (the most important)
+ to h6 (the least important).
+-->
+
+<!ELEMENT h1 %Inline;>
+<!ATTLIST h1
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list bullet styles -->
+
+<!ENTITY % ULStyle "(disc|square|circle)">
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+ %attrs;
+ type %ULStyle; #IMPLIED
+ compact (compact) #IMPLIED
+ >
+
+<!-- Ordered list numbering style
+
+ 1 arabic numbers 1, 2, 3, ...
+ a lower alpha a, b, c, ...
+ A upper alpha A, B, C, ...
+ i lower roman i, ii, iii, ...
+ I upper roman I, II, III, ...
+
+ The style is applied to the sequence number which by default
+ is reset to 1 for the first list item in an ordered list.
+-->
+<!ENTITY % OLStyle "CDATA">
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+ %attrs;
+ type %OLStyle; #IMPLIED
+ compact (compact) #IMPLIED
+ start %Number; #IMPLIED
+ >
+
+<!-- single column list (DEPRECATED) -->
+<!ELEMENT menu (li)+>
+<!ATTLIST menu
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!-- multiple column list (DEPRECATED) -->
+<!ELEMENT dir (li)+>
+<!ATTLIST dir
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
+<!ENTITY % LIStyle "CDATA">
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+ %attrs;
+ type %LIStyle; #IMPLIED
+ value %Number; #IMPLIED
+ >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+ %attrs;
+ >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+ %attrs;
+ >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
+<!ATTLIST address
+ %attrs;
+ >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+ %attrs;
+ align (left|center|right) #IMPLIED
+ noshade (noshade) #IMPLIED
+ size %Pixels; #IMPLIED
+ width %Length; #IMPLIED
+ >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding
+ "img|object|applet|big|small|sub|sup|font|basefont" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+ %attrs;
+ width %Number; #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Flow;>
+<!ATTLIST blockquote
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!--=================== Text alignment ===================================-->
+
+<!-- center content -->
+<!ELEMENT center %Flow;>
+<!ATTLIST center
+ %attrs;
+ >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+<!--
+ ins/del are allowed in block and inline content, but its
+ inappropriate to include block content within an ins element
+ occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+ %attrs;
+ %focus;
+ charset %Charset; #IMPLIED
+ type %ContentType; #IMPLIED
+ name NMTOKEN #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+ %attrs;
+ >
+
+<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+ %coreattrs;
+ %events;
+ lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #REQUIRED
+ >
+
+<!ELEMENT br EMPTY> <!-- forced line break -->
+<!ATTLIST br
+ %coreattrs;
+ clear (left|all|right|none) "none"
+ >
+
+<!ELEMENT em %Inline;> <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;> <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;> <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;> <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;> <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;> <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;> <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;> <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;> <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;> <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;> <!-- inlined quote -->
+<!ATTLIST q
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;> <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;> <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;> <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;> <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;> <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!ELEMENT u %Inline;> <!-- underline -->
+<!ATTLIST u %attrs;>
+
+<!ELEMENT s %Inline;> <!-- strike-through -->
+<!ATTLIST s %attrs;>
+
+<!ELEMENT strike %Inline;> <!-- strike-through -->
+<!ATTLIST strike %attrs;>
+
+<!ELEMENT basefont EMPTY> <!-- base font size -->
+<!ATTLIST basefont
+ id ID #IMPLIED
+ size CDATA #REQUIRED
+ color %Color; #IMPLIED
+ face CDATA #IMPLIED
+ >
+
+<!ELEMENT font %Inline;> <!-- local change to font -->
+<!ATTLIST font
+ %coreattrs;
+ %i18n;
+ size CDATA #IMPLIED
+ color %Color; #IMPLIED
+ face CDATA #IMPLIED