aboutsummaryrefslogtreecommitdiffstats
path: root/documentation
diff options
context:
space:
mode:
authorreinelt <>2004-06-02 05:28:06 +0000
committerreinelt <>2004-06-02 05:28:06 +0000
commit2e3c73e0883a2bdfa525fc6fe4e10d30971d9651 (patch)
tree8333b427632f129e005ca6f7d4796c18ffddccb6 /documentation
parent91ef53962dfc61a78b58a5fcd7ca2e3941a1be1b (diff)
downloadlcd4linux-2e3c73e0883a2bdfa525fc6fe4e10d30971d9651.tar.gz
[lcd4linux @ 2004-06-02 05:27:59 by reinelt]
added documentation tree
Diffstat (limited to 'documentation')
-rw-r--r--documentation/Makefile32
-rw-r--r--documentation/Makefile.generic59
-rw-r--r--documentation/data/doc.css82
-rw-r--r--documentation/data/images/note-icon.pngbin0 -> 2288 bytes
-rw-r--r--documentation/data/images/warn-icon.pngbin0 -> 2592 bytes
-rw-r--r--documentation/data/references.xml65
-rw-r--r--documentation/drivers/Makefile59
-rw-r--r--documentation/drivers/index.xml14
-rw-r--r--documentation/dtd/doc.dtd910
-rw-r--r--documentation/dtd/references.dtd18
-rw-r--r--documentation/dtd/xhtml-lat1.ent194
-rw-r--r--documentation/dtd/xhtml-special.ent77
-rw-r--r--documentation/dtd/xhtml-symbol.ent241
-rw-r--r--documentation/lcd4linux/Makefile59
-rw-r--r--documentation/lcd4linux/bug_report.xml32
-rw-r--r--documentation/lcd4linux/example.xml50
-rw-r--r--documentation/lcd4linux/index.xml17
-rw-r--r--documentation/lcd4linux/write_doc.xml102
-rw-r--r--documentation/plugins/Makefile59
-rw-r--r--documentation/plugins/index.xml14
-rw-r--r--documentation/xsl/body.xsl20
-rw-r--r--documentation/xsl/doc.xsl29
-rw-r--r--documentation/xsl/head.xsl68
-rw-r--r--documentation/xsl/helpers.xsl141
-rw-r--r--documentation/xsl/references.xsl47
-rw-r--r--documentation/xsl/xhtml.xsl16
26 files changed, 2405 insertions, 0 deletions
diff --git a/documentation/Makefile b/documentation/Makefile
new file mode 100644
index 0000000..47425e4
--- /dev/null
+++ b/documentation/Makefile
@@ -0,0 +1,32 @@
+REP= lcd4linux drivers plugins
+
+default: makefiles html
+ true
+
+makefiles:
+ @for i in $(REP) ; do \
+ (cd $$i && ln -sf ../Makefile.generic Makefile) ; \
+ done
+
+cleanmakefiles:
+ @for i in $(REP) ; do \
+ rm -f $$i/Makefile ; \
+ done
+
+totalclean:
+ @for i in $(REP) ; do \
+ (cd $$i && make clean ; rm Makefile) ; \
+ done
+ rm -rf HTML
+
+#catalog: catalogue.xml xsl/catalogue.xsl
+# test -d catalog || mkdir catalog
+# xsltproc --param dir \'$(PWD)\' \
+# --param odir \'$(PWD)/catalog\' \
+# xsl/catalogue.xsl catalogue.xml >catalog/index.html
+# cp charte/default/default.css catalog/
+
+%:
+ @for i in $(REP) ; do \
+ (cd $$i && make $@) ; \
+ done
diff --git a/documentation/Makefile.generic b/documentation/Makefile.generic
new file mode 100644
index 0000000..2519f22
--- /dev/null
+++ b/documentation/Makefile.generic
@@ -0,0 +1,59 @@
+# Path
+DIR = $(notdir $(PWD))
+OUTPUT = ../HTML
+
+ifeq "$(DIR)" "lcd4linux"
+ DIR =
+endif
+
+ifeq "$(DIR)" ""
+ XSLTPROC = xsltproc
+else
+ XSLTPROC = xsltproc --stringparam class $(DIR) --stringparam root "../"
+endif
+
+XMLVALID = xmllint --noout --valid
+
+NAMES=$(shell find . -name "*.xml" -exec basename {} .xml \;)
+
+html: $(patsubst %.xml,%.html,$(wildcard *.xml))
+html-forced: $(patsubst %.xml,%.html-forced,$(wildcard *.xml))
+
+%.html: %.xml %.xml-check output
+ $(XSLTPROC) $< > $(OUTPUT)/$(DIR)/$@
+
+%.html-forced: %.xml output
+ $(XSLTPROC) $< > $(OUTPUT)/$(DIR)/$(patsubst %.xml,%.html,$<)
+
+check: $(patsubst %.xml, %.xml-check, $(wildcard *.xml))
+
+%.xml-check: %.xml
+ @echo "*** Validation of $<"
+ $(XMLVALID) $<
+
+output:
+ test -d $(OUTPUT) || `mkdir $(OUTPUT); cp ../data/doc.css $(OUTPUT); cp -R ../data/images $(OUTPUT)`
+ test -d $(OUTPUT)/$(DIR) || mkdir $(OUTPUT)/$(DIR)
+
+clean:
+ rm -f $(OUTPUT)/$(DIR)/*.html
+
+clean-bak:
+ rm -f *~ *.bak
+
+help:
+ @echo -e ""
+ @echo -e "Usage :"
+ @echo -e "-------"
+ @echo -e "make or make html : builds all possible html pages from xml files"
+ @echo -e "make %.html : builds the %.html page from %.xml"
+ @echo -e ""
+ @echo -e "make html-forced : builds all possible html pages from xml files (no validity check)"
+ @echo -e "make %.html-forced : builds the %.html page from %.xml (no validity check)"
+ @echo -e ""
+ @echo -e "make check : checks the validity of all possible xml files"
+ @echo -e "make %.xml-check : checks the validity of %.xml"
+ @echo -e ""
+ @echo -e "make clean : deletes all generated html pages"
+ @echo -e "make clean-bak : deletes *~ and *.bak files"
+ @echo -e ""
diff --git a/documentation/data/doc.css b/documentation/data/doc.css
new file mode 100644
index 0000000..8a06636
--- /dev/null
+++ b/documentation/data/doc.css
@@ -0,0 +1,82 @@
+body {
+ margin: 0 10px 10px 10px;
+ padding: 0;
+}
+
+h1 {
+ margin-left: -10px;
+ margin-top: 5px;
+ text-align: center;
+ border-bottom: 2px groove black;
+}
+
+div.links {
+ float: right;
+ margin-left: 10px;
+ margin-top: 1em;
+ padding: 0 10px 0px 10px;
+ text-align: center;
+ border: 1px solid black;
+ background: white;
+} div.links div.title {
+ background: white;
+ margin: -0.5em 10px 5px 10px;
+ padding: 0 10px;
+ float: center;
+ border: 1px solid black;
+} div.links div.index {
+ position: relative;
+ bottom: 0;
+ left: -5px;
+ margin-top: 4px;
+ text-align: left;
+} div.links a {
+ color: black;
+ /*text-decoration: none;*/
+}
+
+div.cmd {
+ background: #000;
+ border: 1px solid #ddd;
+ font-family: monospace,fixed;
+ font-style: bold;
+ color: #fff;
+ white-space: pre;
+ font-size: 12px;
+ padding: 5px;
+ margin: 5px;
+}
+
+div.conf {
+ background: #eee;
+ border: 1px solid #111;
+ font-family: monospace,fixed;
+ white-space: pre;
+ font-size: 12px;
+ padding: 5px;
+ margin: 5px;
+}
+
+div.warn {
+ margin-top: 20px;
+ border: 2px solid #700000;
+ margin-left: 20px;
+ padding-left: 5px;
+ width: auto;
+ min-height: 30px;
+}
+
+div.note {
+ margin-top: 20px;
+ border: 2px solid #43607e;
+ margin-left: 20px;
+ padding-left: 5px;
+ width: auto;
+ min-height: 30px;
+}
+
+img.icon {
+ float: left;
+ margin-left: -14px;
+ margin-top: -20px;
+}
diff --git a/documentation/data/images/note-icon.png b/documentation/data/images/note-icon.png
new file mode 100644
index 0000000..33aa88b
--- /dev/null
+++ b/documentation/data/images/note-icon.png
Binary files differ
diff --git a/documentation/data/images/warn-icon.png b/documentation/data/images/warn-icon.png
new file mode 100644
index 0000000..2e1a2a3
--- /dev/null
+++ b/documentation/data/images/warn-icon.png
Binary files differ
diff --git a/documentation/data/references.xml b/documentation/data/references.xml
new file mode 100644
index 0000000..793dd2a
--- /dev/null
+++ b/documentation/data/references.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<!DOCTYPE references SYSTEM "../dtd/references.dtd">
+
+<references>
+<!--Pages about lcd4linux-->
+ <ref id="index">
+ <class/>
+ <file>index</file>
+ <label>Documentation index</label>
+ <hiden/>
+ </ref>
+ <ref id="overview">
+ <class/>
+ <file>overview</file>
+ <label>&L4L; overview</label>
+ </ref>
+ <ref id="bug_report">
+ <class/>
+ <file>bug_report</file>
+ <label>How to report bugs or get support</label>
+ </ref>
+ <ref id="contact">
+ <class/>
+ <file>contact</file>
+ <label>How to contact us</label>
+ </ref>
+ <ref id="write_doc">
+ <class/>
+ <file>write_doc</file>
+ <label>How to write documentation</label>
+ </ref>
+
+ <ref id="test">
+ <class/>
+ <file>example</file>
+ <label>A test page</label>
+ </ref>
+
+<!--Drivers-->
+ <ref id="drivers_index">
+ <class>drivers</class>
+ <file>index</file>
+ <label>Drivers index</label>
+ <hiden/>
+ </ref>
+ <ref id="hd44780">
+ <class>drivers</class>
+ <file>hd44780</file>
+ <label>HD44780 displays driver</label>
+ </ref>
+
+<!--Plugins-->
+ <ref id="plugins_index">
+ <class>plugins</class>
+ <file>index</file>
+ <label>Plugins index</label>
+ <hiden/>
+ </ref>
+ <ref id="i2c_sensors">
+ <class>plugins</class>
+ <file>i2c_sensors</file>
+ <label>I2C sensors plugin</label>
+ </ref>
+
+</references>
diff --git a/documentation/drivers/Makefile b/documentation/drivers/Makefile
new file mode 100644
index 0000000..2519f22
--- /dev/null
+++ b/documentation/drivers/Makefile
@@ -0,0 +1,59 @@
+# Path
+DIR = $(notdir $(PWD))
+OUTPUT = ../HTML
+
+ifeq "$(DIR)" "lcd4linux"
+ DIR =
+endif
+
+ifeq "$(DIR)" ""
+ XSLTPROC = xsltproc
+else
+ XSLTPROC = xsltproc --stringparam class $(DIR) --stringparam root "../"
+endif
+
+XMLVALID = xmllint --noout --valid
+
+NAMES=$(shell find . -name "*.xml" -exec basename {} .xml \;)
+
+html: $(patsubst %.xml,%.html,$(wildcard *.xml))
+html-forced: $(patsubst %.xml,%.html-forced,$(wildcard *.xml))
+
+%.html: %.xml %.xml-check output
+ $(XSLTPROC) $< > $(OUTPUT)/$(DIR)/$@
+
+%.html-forced: %.xml output
+ $(XSLTPROC) $< > $(OUTPUT)/$(DIR)/$(patsubst %.xml,%.html,$<)
+
+check: $(patsubst %.xml, %.xml-check, $(wildcard *.xml))
+
+%.xml-check: %.xml
+ @echo "*** Validation of $<"
+ $(XMLVALID) $<
+
+output:
+ test -d $(OUTPUT) || `mkdir $(OUTPUT); cp ../data/doc.css $(OUTPUT); cp -R ../data/images $(OUTPUT)`
+ test -d $(OUTPUT)/$(DIR) || mkdir $(OUTPUT)/$(DIR)
+
+clean:
+ rm -f $(OUTPUT)/$(DIR)/*.html
+
+clean-bak:
+ rm -f *~ *.bak
+
+help:
+ @echo -e ""
+ @echo -e "Usage :"
+ @echo -e "-------"
+ @echo -e "make or make html : builds all possible html pages from xml files"
+ @echo -e "make %.html : builds the %.html page from %.xml"
+ @echo -e ""
+ @echo -e "make html-forced : builds all possible html pages from xml files (no validity check)"
+ @echo -e "make %.html-forced : builds the %.html page from %.xml (no validity check)"
+ @echo -e ""
+ @echo -e "make check : checks the validity of all possible xml files"
+ @echo -e "make %.xml-check : checks the validity of %.xml"
+ @echo -e ""
+ @echo -e "make clean : deletes all generated html pages"
+ @echo -e "make clean-bak : deletes *~ and *.bak files"
+ @echo -e ""
diff --git a/documentation/drivers/index.xml b/documentation/drivers/index.xml
new file mode 100644
index 0000000..12ba14e
--- /dev/null
+++ b/documentation/drivers/index.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<?xml-stylesheet type="text/xsl" href="../xsl/doc.xsl"?>
+<!DOCTYPE doc SYSTEM "../dtd/doc.dtd">
+<doc>
+<head>
+ <title>&L4L; drivers</title>
+ <ref>drivers_index</ref>
+ <links/>
+</head>
+<body>
+<h2>Drivers</h2>
+<index class="drivers"/>
+</body>
+</doc>
diff --git a/documentation/dtd/doc.dtd b/documentation/dtd/doc.dtd
new file mode 100644
index 0000000..3b1a778
--- /dev/null
+++ b/documentation/dtd/doc.dtd
@@ -0,0 +1,910 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!ELEMENT doc (head,body)>
+
+<!ENTITY l4l "LCD4Linux">
+<!ENTITY L4L "LCD4Linux">
+
+
+<!--head-->
+<!ELEMENT head (title,(version|ref|links|history|state)*)>
+ <!ELEMENT title (#PCDATA)>
+ <!ELEMENT version (#PCDATA)>
+ <!ELEMENT ref (#PCDATA)>
+ <!ELEMENT links (link*)>
+ <!ELEMENT link (#PCDATA)>
+ <!ATTLIST link ref CDATA #IMPLIED url CDATA #IMPLIED>
+ <!ELEMENT history (revision)*>
+ <!ELEMENT revision (#PCDATA)>
+ <!ATTLIST revision version CDATA #REQUIRED by CDATA #IMPLIED>
+ <!ELEMENT state (#PCDATA)>
+ <!ATTLIST state finished CDATA #IMPLIED proofread CDATA #IMPLIED>
+
+<!--body-->
+<!ELEMENT body ANY>
+ <!--Helpers-->
+ <!ELEMENT cmd ANY>
+ <!ELEMENT conf ANY>
+ <!ELEMENT note ANY>
+ <!ELEMENT warn ANY>
+ <!ELEMENT new ANY>
+ <!ATTLIST new date CDATA #IMPLIED title CDATA #REQUIRED>
+ <!ELEMENT index ANY>
+ <!ATTLIST index class CDATA #IMPLIED>
+
+ <!--XHTML tags from the official DTD-->
+ <!--not that clean, but it works :P -->
+
+<!--
+ Extensible HTML version 1.0 Strict DTD
+
+ This is the same as HTML 4.0 Strict 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-2000 W3C (MIT, INRIA, Keio),
+ All Rights Reserved.
+
+ This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+
+ $Revision: 1.1 $
+ $Date: 2004/06/02 05:28:05 $
+
+-->
+
+<!--================ 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 [RFC1766] -->
+
+<!ENTITY % Character "CDATA">
+ <!-- a single character from [ISO10646] -->
+
+<!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 % MultiLengths "CDATA">
+ <!-- comma-separated list of MultiLength -->
+
+<!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 -->
+
+<!--=================== 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 Elements ====================================-->
+
+<!ENTITY % special
+ "br | span | bdo | object | img | map">
+
+<!ENTITY % fontstyle "tt | i | b | big | small">
+
+<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
+ samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc "ins | del | script | noscript">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl">
+<!ENTITY % blocktext "pre | hr | blockquote | address">
+
+<!ENTITY % block
+ "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
+
+<!ENTITY % Block "(%block; | form | %misc;)*">
+
+<!-- %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;)*">
+
+<!-- pre uses %Inline excluding img, object, big, small, sup or sup -->
+
+<!ENTITY % pre.content
+ "(#PCDATA | a | br | span | bdo | map | tt | i | b |
+ %phrase; | %inline.forms;)*">
+
+<!-- form uses %Block; excluding form -->
+
+<!ENTITY % form.content "(%block; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form and form controls -->
+
+<!ENTITY % button.content
+ "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+ table | %special; | %fontstyle; | %phrase; | %misc;)*">
+
+
+<!--[...]-->
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+ %attrs;
+ >
+
+<!--=================== Headings =========================================-->
+
+<!--
+ There are six levels of headings from h1 (the most important)
+ to h6 (the least important).
+-->
+
+<!ELEMENT h1 %Inline;>
+<!ATTLIST h1
+ %attrs;
+ >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+ %attrs;
+ >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+ %attrs;
+ >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+ %attrs;
+ >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+ %attrs;
+ >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+ %attrs;
+ >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+ %attrs;
+ >
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+ %attrs;
+ >
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+ %attrs;
+ >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+ %attrs;
+ >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+ %attrs;
+ >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+ %attrs;
+ >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address %Inline;>
+<!ATTLIST address
+ %attrs;
+ >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+ %attrs;
+ >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+ %attrs;
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Block;>
+<!ATTLIST blockquote
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!--=================== 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;
+ charset %Charset; #IMPLIED
+ type %ContentType; #IMPLIED
+ name NMTOKEN #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ accesskey %Character; #IMPLIED
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #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;
+ >
+
+<!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;>
+
+<!--==================== Object ======================================-->
+<!--
+ object is used to embed objects as part of HTML pages.
+ param elements should precede other content. Parameters
+ can also be expressed as attribute/value pairs on the
+ object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST object
+ %attrs;
+ declare (declare) #IMPLIED
+ classid %URI; #IMPLIED
+ codebase %URI; #IMPLIED
+ data %URI; #IMPLIED
+ type %ContentType; #IMPLIED
+ codetype %ContentType; #IMPLIED
+ archive %UriList; #IMPLIED
+ standby %Text; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ tabindex %Number; #IMPLIED
+ >
+
+<!--
+ param is used to supply a named property value.
+ In XML it would seem natural to follow RDF and support an
+ abbreviated syntax where the param elements are replaced
+ by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+ id ID #IMPLIED
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ valuetype (data|ref|object) "data"
+ type %ContentType; #IMPLIED
+ >
+
+<!--=================== Images ===========================================-->
+
+<!--
+ To avoid accessibility problems for people who aren't
+ able to see the image, you should provide a text
+ description using the alt and longdesc attributes.
+ In addition, avoid the use of server-side image maps.
+ Note that in this DTD there is no name attribute. That
+ is only available in the transitional and frameset DTD.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+ %attrs;
+ src %URI; #REQUIRED
+ alt %Text; #REQUIRED
+ longdesc %URI; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ ismap (ismap) #IMPLIED
+ >
+
+<!-- usemap points to a map element which may be in this document
+ or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+ separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+ %i18n;
+ %events;
+ id ID #REQUIRED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED
+ name NMTOKEN #IMPLIED
+ >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+ %attrs;
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ href %URI; #IMPLIED
+ nohref (nohref) #IMPLIED
+ alt %Text; #REQUIRED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!--================ Forms ===============================================-->
+<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+ %attrs;
+ action %URI; #REQUIRED
+ method (get|post) "get"
+ enctype %ContentType; "application/x-www-form-urlencoded"
+ onsubmit %Script; #IMPLIED
+ onreset %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ accept-charset %Charsets; #IMPLIED
+ >
+
+<!--
+ Each label must not contain more than ONE field
+ Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+ %attrs;
+ for IDREF #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!ENTITY % InputType
+ "(text | password | checkbox |
+ radio | submit | reset |
+ file | hidden | image | button)"
+ >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY> <!-- form control -->
+<!ATTLIST input
+ %attrs;
+ type %InputType; "text"
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ checked (checked) #IMPLIED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ size CDATA #IMPLIED
+ maxlength %Number; #IMPLIED
+ src %URI; #IMPLIED
+ alt CDATA #IMPLIED
+ usemap %URI; #IMPLIED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ >
+
+<!ELEMENT select (optgroup|option)+> <!-- option selector -->
+<!ATTLIST select
+ %attrs;
+ name CDATA #IMPLIED
+ size %Number; #IMPLIED
+ multiple (multiple) #IMPLIED
+ disabled (disabled) #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!ELEMENT optgroup (option)+> <!-- option group -->
+<!ATTLIST optgroup
+ %attrs;
+ disabled (disabled) #IMPLIED
+ label %Text; #REQUIRED
+ >
+
+<!ELEMENT option (#PCDATA)> <!-- selectable choice -->
+<!ATTLIST option
+ %attrs;
+ selected (selected) #IMPLIED
+ disabled (disabled) #IMPLIED
+ label %Text; #IMPLIED
+ value CDATA #IMPLIED
+ >
+
+<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
+<!ATTLIST textarea
+ %attrs;
+ name CDATA #IMPLIED
+ rows %Number; #REQUIRED
+ cols %Number; #REQUIRED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!--
+ The fieldset element is used to group form fields.
+ Only one legend element should occur in the content
+ and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+ %attrs;
+ >
+
+<!ELEMENT legend %Inline;> <!-- fieldset label -->
+<!ATTLIST legend
+ %attrs;
+ accesskey %Character; #IMPLIED
+ >
+
+<!--
+ Content is %Flow; excluding a, form and form controls
+-->
+<!ELEMENT button %button.content;> <!-- push button -->
+<!ATTLIST button
+ %attrs;
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ type (button|submit|reset) "submit"
+ disabled (disabled) #IMPLIED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+ "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+ char alignment char, e.g. char=':'
+ charoff offset for alignment char
+-->
+<!ENTITY % cellhalign
+ "align (left|center|right|justify|char) #IMPLIED
+ char %Character; #IMPLIED
+ charoff %Length; #IMPLIED"
+ >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+ "valign (top|middle|bottom|baseline) #IMPLIED"
+ >
+
+<!ELEMENT table
+ (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption %Inline;>
+<!ELEMENT thead (tr)+>
+<!ELEMENT tfoot (tr)+>
+<!ELEMENT tbody (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col EMPTY>
+<!ELEMENT tr (th|td)+>
+<!ELEMENT th %Flow;>
+<!ELEMENT td %Flow;>
+
+<!ATTLIST table
+ %attrs;
+ summary %Text; #IMPLIED
+ width %Length; #IMPLIED
+ border %Pixels; #IMPLIED
+ frame %TFrame; #IMPLIED
+ rules %TRules; #IMPLIED
+ cellspacing %Length; #IMPLIED
+ cellpadding %Length; #IMPLIED
+ >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+ %attrs;
+ >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+ width=64 width in screen pixels
+ width=0.5* relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ Use thead to duplicate headers when breaking table
+ across page boundaries, or for static headers when
+ tbody sections are rendered in scrolling panel.
+
+ Use tfoot to duplicate footers when breaking table
+ across page boundaries, or for static footers when
+ tbody sections are rendered in scrolling panel.
+
+ Use multiple tbody sections when rules are needed
+ between groups of table rows.
+-->
+<!ATTLIST thead
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tfoot
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tbody
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tr
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST td
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ >
diff --git a/documentation/dtd/references.dtd b/documentation/dtd/references.dtd
new file mode 100644
index 0000000..fc54fde
--- /dev/null
+++ b/documentation/dtd/references.dtd
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ DTD of documentation for the lcd4linux project
+ Copyright 2004 Xavier Vello <xavier66@free.fr>
+ Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
+-->
+
+<!ENTITY l4l "LCD4Linux">
+<!ENTITY L4L "LCD4Linux">
+
+<!ELEMENT references (ref*)>
+
+<!ELEMENT ref ((class|file|label|hiden))>
+<!ATTLIST ref id CDATA #REQUIRED>
+ <!ELEMENT class (#PCDATA)>
+ <!ELEMENT file (#PCDATA)>
+ <!ELEMENT label (#PCDATA)>
+ <!ELEMENT hiden EMPTY>
diff --git a/documentation/dtd/xhtml-lat1.ent b/documentation/dtd/xhtml-lat1.ent
new file mode 100644
index 0000000..293d2ba
--- /dev/null
+++ b/documentation/dtd/xhtml-lat1.ent
@@ -0,0 +1,194 @@
+<!-- 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//EN//HTML">
+ %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, 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 -->
diff --git a/documentation/dtd/xhtml-special.ent b/documentation/dtd/xhtml-special.ent
new file mode 100644
index 0000000..fefb15d
--- /dev/null
+++ b/documentation/dtd/xhtml-special.ent
@@ -0,0 +1,77 @@
+<!-- Special characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special//EN//HTML">
+ %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 ISO 10646 names.
+
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot "&#34;"> <!-- quotation mark = APL quote,
+ U+0022 ISOnum -->
+<!ENTITY amp "&#38;"> <!-- ampersand, U+0026 ISOnum -->
+<!ENTITY lt "&#60;"> <!-- less-than sign, U+003C ISOnum -->
+<!ENTITY gt "&#62;"> <!-- greater-than sign, U+003E 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 -->
+<!ENTITY euro "&#8364;"> <!-- euro sign, U+20AC NEW -->
diff --git a/documentation/dtd/xhtml-symbol.ent b/documentation/dtd/xhtml-symbol.ent
new file mode 100644
index 0000000..e950aad
--- /dev/null
+++ b/documentation/dtd/xhtml-symbol.ent
@@ -0,0 +1,241 @@
+<!-- Mathematical, Greek and Symbolic characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols//EN//HTML">
+ %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 ISO 10646 names.
+
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof "&#402;"> <!-- latin small 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 lambda,
+ 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 lambda,
+ 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 small letter 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;"> <!-- blackletter capital I = imaginary part,
+ U+2111 ISOamso -->
+<!ENTITY real "&#8476;"> <!-- blackletter 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 -->
+<!-- ISO 10646 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 -->
+<!-- ISO 10646 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 = diameter,
+ 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 -->
+<!-- should there be a more memorable name than 'ni'? -->
+<!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 sumation, 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 -->
+<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol
+ font encoding and is not included. Should it be, for symmetry?
+ It is in ISOamsn -->
+<!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'
+ 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'
+ 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 -->
diff --git a/documentation/lcd4linux/Makefile b/documentation/lcd4linux/Makefile
new file mode 100644
index 0000000..2519f22
--- /dev/null
+++ b/documentation/lcd4linux/Makefile
@@ -0,0 +1,59 @@
+# Path
+DIR = $(notdir $(PWD))
+OUTPUT = ../HTML
+
+ifeq "$(DIR)" "lcd4linux"
+ DIR =
+endif
+
+ifeq "$(DIR)" ""
+ XSLTPROC = xsltproc
+else
+ XSLTPROC = xsltproc --stringparam class $(DIR) --stringparam root "../"
+endif
+
+XMLVALID = xmllint --noout --valid
+
+NAMES=$(shell find . -name "*.xml" -exec basename {} .xml \;)
+
+html: $(patsubst %.xml,%.html,$(wildcard *.xml))
+html-forced: $(patsubst %.xml,%.html-forced,$(wildcard *.xml))
+
+%.html: %.xml %.xml-check output
+ $(XSLTPROC) $< > $(OUTPUT)/$(DIR)/$@
+
+%.html-forced: %.xml output
+ $(XSLTPROC) $< > $(OUTPUT)/$(DIR)/$(patsubst %.xml,%.html,$<)
+
+check: $(patsubst %.xml, %.xml-check, $(wildcard *.xml))
+
+%.xml-check: %.xml
+ @echo "*** Validation of $<"
+ $(XMLVALID) $<
+
+output:
+ test -d $(OUTPUT) || `mkdir $(OUTPUT); cp ../data/doc.css $(OUTPUT); cp -R ../data/images $(OUTPUT)`
+ test -d $(OUTPUT)/$(DIR) || mkdir $(OUTPUT)/$(DIR)
+
+clean:
+ rm -f $(OUTPUT)/$(DIR)/*.html
+
+clean-bak:
+ rm -f *~ *.bak
+
+help:
+ @echo -e ""
+ @echo -e "Usage :"
+ @echo -e "-------"
+ @echo -e "make or make html : builds all possible html pages from xml files"
+ @echo -e "make %.html : builds the %.html page from %.xml"
+ @echo -e ""
+ @echo -e "make html-forced : builds all possible html pages from xml files (no validity check)"
+ @echo -e "make %.html-forced : builds the %.html page from %.xml (no validity check)"
+ @echo -e ""
+ @echo -e "make check : checks the validity of all possible xml files"
+ @echo -e "make %.xml-check : checks the validity of %.xml"
+ @echo -e ""
+ @echo -e "make clean : deletes all generated html pages"
+ @echo -e "make clean-bak : deletes *~ and *.bak files"
+ @echo -e ""
diff --git a/documentation/lcd4linux/bug_report.xml b/documentation/lcd4linux/bug_report.xml
new file mode 100644
index 0000000..49bf743
--- /dev/null
+++ b/documentation/lcd4linux/bug_report.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<?xml-stylesheet type="text/xsl" href="../xsl/doc.xsl"?>
+<!DOCTYPE doc SYSTEM "../dtd/doc.dtd">
+<doc>
+<head>
+ <title>How to report bugs or get support</title>
+ <ref>bug_report</ref>
+ <links>
+ <link ref="contact"/>
+ </links>
+</head>
+<body>
+You've checked twice your configuration, but &l4l; keeps complaining, prints horrible things on your display or even crashes. What to do ?
+
+<h2>Configuration problems and minor bugs</h2>
+<ul>
+<li>Your display doesn't want to work, prints strange things or keeps blank ?</li>
+<li>You can't get a plugin to work, there are ???? or **** where you wanted to display the temperature ?</li>
+<li>You noticed a strange behavior from &l4l; or a plugin ?</li>
+</ul>
+You should contact the lcd4linux-users maillist, and post a detailled report containing at least :
+<ul>
+<li>the &l4l; version you use.</li>
+<li>a description of what happens</li>
+<li>if relevant, a description of your display (especially for HD44780-based displays)</li>
+<li>a log of &l4l; output ( <tt>lcd4linux -vvv > log</tt> )</li>
+<li>a copy of your lcd4linux.conf file</li>
+</ul>
+<note>If you use some plugins (mysql, mail, ...), lcd4linux.conf may contain passwords and other private information. For your privacy, we recommend you to replace these information with ***** before attaching your configuration file</note>
+
+</body>
+</doc>
diff --git a/documentation/lcd4linux/example.xml b/documentation/lcd4linux/example.xml
new file mode 100644
index 0000000..63702e0
--- /dev/null
+++ b/documentation/lcd4linux/example.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<?xml-stylesheet type="text/xsl" href="../xsl/doc.xsl"?>
+<!DOCTYPE doc SYSTEM "../dtd/doc.dtd">
+<doc>
+<head>
+ <title>The title of the page The title of the page</title>
+ <version>0.1</version>
+ <ref>doc_example</ref>
+ <links>
+ <link ref="i2c_sensors"/>
+ <link url="http://lcd4linux.sf.net"/>
+ <link url="http://lcd4linux.sf.net">SourceForge</link>
+ </links>
+ <history>
+ <revision version="0.1" by="Xavier">
+ The first, and only version ever ;)
+ </revision>
+ <revision version="0.0" by="Xavier">
+ TEST
+ </revision>
+ </history>
+ <state finished="true" proofread="true"/>
+</head>
+<body>
+<h2>This is the text of the page, we can use xhtml tags here and there are some helpers : </h2>
+<cmd>&lt;cmd&gt; Will be used to indicate <tt>console commands</tt>, or other things</cmd>
+<conf>&lt;conf&gt; Is to format lcd4linux.conf examples</conf>
+<note>&lt;note&gt; Will display a div with the message, to add a tip, or an explanation</note>
+<warn>&lt;warn&gt; Will work just as &lt;note&gt;, but for more important messages</warn>
+<new date="01/01/01" title="test new">&lt;new&gt; is to display boxes with news, for the main page or, as an example for displays/plugins pages to show news in the features</new> <br />
+
+<link ref="plugin_i2c_sensors"/>
+
+There will be other helpers : &lt;image&gt;, &lt;link&gt;, &lt;table&gt; ...<br />
+
+If you look at the sources of this page, there are a lot of information in the head. They will be used for internal processing, and some will be displayed (for example &lt;links&gt; will define links to be put in a &apos;See also&apos; box, with links to related articles, websites, ...<br />
+
+We&apos;ll use &apos;standard&apos; xhtml tags &lt;br /&gt; <b>&lt;b&gt;</b> <i>&lt;i&gt;</i> <tt>&lt;tt&gt;</tt> <small>&lt;small&gt;</small> <big>&lt;big&gt;</big> and others, not really proceced by xslt.
+ <h2>&lt;h2&gt;</h2> <h3>&lt;h3&gt;</h3> <h4>&lt;h4&gt;</h4> <h5>&lt;h5&gt;</h5> <h6>&lt;h6&gt;</h6>
+
+ <h2>test</h2>
+ <h3>one</h3>
+ <h3>two</h3>
+ <h3>three</h3>
+ <h2>AAAA</h2>
+ <h3>one</h3>
+ <h3>two</h3>
+ <h3>three</h3>
+</body>
+</doc>
diff --git a/documentation/lcd4linux/index.xml b/documentation/lcd4linux/index.xml
new file mode 100644
index 0000000..93f75eb
--- /dev/null
+++ b/documentation/lcd4linux/index.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<?xml-stylesheet type="text/xsl" href="../xsl/doc.xsl"?>
+<!DOCTYPE doc SYSTEM "../dtd/doc.dtd">
+<doc>
+<head>
+ <title>&L4L; documentation index</title>
+ <ref>index</ref>
+</head>
+<body>
+<h2>&L4L;</h2>
+<index/>
+<h2><a href="drivers/index.html">Drivers</a></h2>
+<index class="drivers"/>
+<h2><a href="plugins/index.html">Plugins</a></h2>
+<index class="plugins"/>
+</body>
+</doc>
diff --git a/documentation/lcd4linux/write_doc.xml b/documentation/lcd4linux/write_doc.xml
new file mode 100644
index 0000000..b8d243d
--- /dev/null
+++ b/documentation/lcd4linux/write_doc.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<?xml-stylesheet type="text/xsl" href="../xsl/doc.xsl"?>
+<!DOCTYPE doc SYSTEM "../dtd/doc.dtd">
+<doc>
+<head>
+ <title>How to write documentation for &l4l; ?</title>
+ <ref>write_doc</ref>
+<!-- <links>
+ <link ref="i2c_sensors"/>
+ </links>-->
+</head>
+<body>
+<h2>Overview</h2>
+<p>The &l4l; documentation is composed of XML files which are processed with XSL stylesheets to produce XHTML files.
+There these XML files are writen in a syntax similar to the HTML syntax, plus some helpers.</p>
+<p>The whole documentation is generated through a make system, which uses <tt>xmllint</tt> to check the validy of the xml files and <tt>xsltproc</tt> to process them and generate the XHTML pages. <i>These two programs are mandatory</i></p>
+
+<h2>The syntax</h2>
+A doc page looks like this :
+<conf>&lt;?xml version="1.0" encoding="UTF-8" standalone="no" ?&gt;
+&lt;?xml-stylesheet type="text/xsl" href="../xsl/doc.xsl"?&gt;
+&lt;!DOCTYPE doc SYSTEM "../dtd/doc.dtd"&gt;
+&lt;doc&gt;
+&lt;head&gt;
+ &lt;title&gt;How to write documentation for &l4l; ?&lt;/title&gt;
+ &lt;ref&gt;write_doc&lt;/ref&gt;
+ &lt;links&gt;
+ &lt;link ref="http://lcd4linux.sf.net"/&gt;
+ &lt;/links&gt;
+&lt;/head&gt;
+&lt;body&gt;
+...
+&lt;/body&gt;
+&lt;/doc&gt;
+</conf>
+
+<li>The three first lines are the preambule of the file, don't touch them.</li>
+<li>The root of the document is <tt>&lt;doc&gt;</tt>, it's the equivalent of &lt;html&gt;.</li>
+<li>Then, there's a <tt>&lt;head&gt;</tt> node, containing the information about the page. See later for the childs.</li>
+<li>The core of the doc is the &lt;body&gt; node, like in HTML, containing the content.</li>
+
+<h3>The &lt;head&gt;</h3>
+The head contains some information about the document :
+<li>&lt;title&gt; is the title of the document, which will be displayed as a &lt;h1&gt;</li>
+<li>&lt;ref&gt; is a unique reference for the document, which is assumed to be the same as in <i>references.xml</i> (we'll discuss later about this file)</li>
+<li>&lt;links&gt; is the section responsible of the "See Alo" box, containing links to other help pages, or to urls. It can contain several &lt;link&gt; elements, whose syntax is explained in the next part.</li>
+<li>There may be other elements, but we'll only use these ones for now.</li>
+
+<h3>The helpers</h3>
+You can use a lot of helpers in the body :
+<li>&lt;link&gt; is a helper to create links. It is used with one of these two arguments :
+<ul>
+<li><tt>&lt;link ref="xxx"/&gt;</tt> will create a link to the documentation page associated with this reference (defined in <i>references.xml</i>)</li>
+<li><tt>&lt;link url="http://..."/&gt;</tt> will create a link to the url</li>
+</ul>
+Note that if you don't provide a text, the text of the link will be the label of the reference or the url. You can specify a text writing <tt>&lt;link url="http://..."&gt;TEXT&lt;/link&gt;</tt>
+</li>
+<warn>As this is XML, you <b>must</b> close all the tags you open, or use self-closing tags for empty ones :<br/>For example, you have to write <tt>&lt;br/&gt;</tt> but not <tt>&lt;br&gt;.</tt></warn>
+
+<li>&lt;cmd&gt; Opens a box with write text on black background, used to indicate something's happening in a console (compilation, logs, ...). The text is in "pre" mode, so spaces and newlines are kept, no need of &amp;nbsp; or &lt;br/&gt;, <b>But beware of &lt; and &gt;</b> (you must replace them with &amp;lt; and &amp;gt;)</li>
+<cmd>xav:~$ echo "An example of &lt;cmd&gt; box"
+An example of &lt;cmd&gt; box
+xav:~$
+</cmd>
+<li>&lt;conf&gt; works like &lt;cmd&gt; but with black text on grey background, to print lcd4linux.conf examples.</li>
+<conf>Widget Lightning {
+ class 'icon'
+ speed 100
+ visible cpu('busy', 500)-50
+ bitmap {
+ row1 '...***'
+ row2 '..***.'
+ row3 '.***..'
+ row4 '.****.'
+ row5 '..**..'
+ row6 '.**...'
+ row7 '**....'
+ row8 '*.....'
+ }
+}</conf>
+<li>&lt;note&gt; is to display a box with a small icon, to point out a detail, or an advice</li>
+<note>To dry a wet cat, don't put it in a microwave ;)</note>
+<li>&lt;warn&gt; works like &lt;note&gt; but with a red exclamation mark and a red border, to display warnings. In general, use a note for a detail or an advice and warn to point configuration problems, hardware hazards, or other happy things ;)</li>
+<warn>We're not responsible for damages caused to your microwave if you don't read the above note !</warn>
+<li>&lt;index&gt; is a cool thing. It displays the list of pages of a specified class. It's used to display indexes. For example &lt;index class="drivers"/&gt; will display a list of all pages about drivers. If there's no class specified, it'll parse the list of pages of the "lcd4linux" class.</li>
+<li>&lt;new&gt; is in the DTD, but is not yet implemented :/</li>
+<li>You can use any other XHTML-valid tag. The most used should be : &lt;br/&gt; &lt;h2&gt; &lt;h3&gt; &lt;li&gt; &lt;b&gt; &lt;i&gt; &lt;tt&gt; ...</li>
+
+<h3>references.xml</h3>
+There's a file in <tt>data/</tt> called <tt>references.xml</tt>. It isn't processed directly, but is used to parse links and indexes. It's syntax is quite straightforward, so I won't explain it.<br/>
+You must add a new entry in it for each page you write so that other pages can have links to it and index it.
+<note>A null &lt;class/&gt; attribute corresponds to the lcd4linux class. It's not a bug, it's a feature, used to make links (the lcd4linux class is in the root of the documentation)</note>
+
+<h2>The compilation system</h2>
+The documentation is compiled with a Makefile build system. There's a toplevel Makefile which calls the apropriate targets in each subdirs which contains xml files (for the moment, <tt>lcd4linux</tt>, <tt>drivers</tt> and <tt>plugins</tt>). In these subdirs, the Makefile is a link to <tt>Makefile.generic</tt>.<br/>
+To compile the documentation, just type make at the toplevel, and look in the <tt>HTML</tt> folder. Type make help for help ;)
+<warn>Two programs are mandatory to build the documentation :
+<ul><li><tt>xmllint</tt> from libxml2 is used to validate the xml pages to be processed. It's in the debian package <tt>libxml2</tt></li>
+<li><tt>xsltproc</tt> from libxslt processes the xml files to generate the html pages. It's in the libxslt tarballs or in the <tt>xsltproc</tt> debian package</li></ul>
+</warn>
+</body>
+</doc>
diff --git a/documentation/plugins/Makefile b/documentation/plugins/Makefile
new file mode 100644
index 0000000..2519f22
--- /dev/null
+++ b/documentation/plugins/Makefile
@@ -0,0 +1,59 @@
+# Path
+DIR = $(notdir $(PWD))
+OUTPUT = ../HTML
+
+ifeq "$(DIR)" "lcd4linux"
+ DIR =
+endif
+
+ifeq "$(DIR)" ""
+ XSLTPROC = xsltproc
+else
+ XSLTPROC = xsltproc --stringparam class $(DIR) --stringparam root "../"
+endif
+
+XMLVALID = xmllint --noout --valid
+
+NAMES=$(shell find . -name "*.xml" -exec basename {} .xml \;)
+
+html: $(patsubst %.xml,%.html,$(wildcard *.xml))
+html-forced: $(patsubst %.xml,%.html-forced,$(wildcard *.xml))
+
+%.html: %.xml %.xml-check output
+ $(XSLTPROC) $< > $(OUTPUT)/$(DIR)/$@
+
+%.html-forced: %.xml output
+ $(XSLTPROC) $< > $(OUTPUT)/$(DIR)/$(patsubst %.xml,%.html,$<)
+
+check: $(patsubst %.xml, %.xml-check, $(wildcard *.xml))
+
+%.xml-check: %.xml
+ @echo "*** Validation of $<"
+ $(XMLVALID) $<
+
+output:
+ test -d $(OUTPUT) || `mkdir $(OUTPUT); cp ../data/doc.css $(OUTPUT); cp -R ../data/images $(OUTPUT)`
+ test -d $(OUTPUT)/$(DIR) || mkdir $(OUTPUT)/$(DIR)
+
+clean:
+ rm -f $(OUTPUT)/$(DIR)/*.html
+
+clean-bak:
+ rm -f *~ *.bak
+
+help:
+ @echo -e ""
+ @echo -e "Usage :"
+ @echo -e "-------"
+ @echo -e "make or make html : builds all possible html pages from xml files"
+ @echo -e "make %.html : builds the %.html page from %.xml"
+ @echo -e ""
+ @echo -e "make html-forced : builds all possible html pages from xml files (no validity check)"
+ @echo -e "make %.html-forced : builds the %.html page from %.xml (no validity check)"
+ @echo -e ""
+ @echo -e "make check : checks the validity of all possible xml files"
+ @echo -e "make %.xml-check : checks the validity of %.xml"
+ @echo -e ""
+ @echo -e "make clean : deletes all generated html pages"
+ @echo -e "make clean-bak : deletes *~ and *.bak files"
+ @echo -e ""
diff --git a/documentation/plugins/index.xml b/documentation/plugins/index.xml
new file mode 100644
index 0000000..8e803ae
--- /dev/null
+++ b/documentation/plugins/index.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<?xml-stylesheet type="text/xsl" href="../xsl/doc.xsl"?>
+<!DOCTYPE doc SYSTEM "../dtd/doc.dtd">
+<doc>
+<head>
+ <title>&L4L; plugins</title>
+ <ref>plugins_index</ref>
+ <links/>
+</head>
+<body>
+<h2>Plugins</h2>
+<index class="plugins"/>
+</body>
+</doc>
diff --git a/documentation/xsl/body.xsl b/documentation/xsl/body.xsl
new file mode 100644
index 0000000..8b13ebd
--- /dev/null
+++ b/documentation/xsl/body.xsl
@@ -0,0 +1,20 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!--
+ XSL stylesheet for processing documentation for the lcd4linux project
+ Copyright 2004 Xavier Vello <xavier66@free.fr>
+ Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
+-->
+
+<!--The content of the page-->
+
+<xsl:template match="body" node="doc">
+ <xsl:element name="body">
+ <!--Here will be added html code for the layout-->
+ <xsl:apply-templates select="/doc/head/links"/>
+ <xsl:element name="h1">
+ <xsl:value-of select="/doc/head/title"/>
+ </xsl:element>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/documentation/xsl/doc.xsl b/documentation/xsl/doc.xsl
new file mode 100644
index 0000000..1a2045f
--- /dev/null
+++ b/documentation/xsl/doc.xsl
@@ -0,0 +1,29 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!--
+ XSL stylesheet for processing documentation for the lcd4linux project
+ Copyright 2004 Xavier Vello <xavier66@free.fr>
+ Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
+-->
+
+<xsl:output omit-xml-declaration="yes" method="xml" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
+
+<xsl:variable name="references" select="document('../data/references.xml')/references"/>
+<xsl:param name="class" select="''"/>
+<xsl:param name="root" select="''"/>
+
+<!--Includes-->
+<xsl:include href="head.xsl"/>
+<xsl:include href="body.xsl"/>
+<xsl:include href="helpers.xsl"/>
+<xsl:include href="xhtml.xsl"/>
+<xsl:include href="references.xsl"/>
+
+<!--The start point-->
+<xsl:template match="doc">
+ <xsl:element name="html">
+ <xsl:apply-templates select="head"/>
+ <xsl:apply-templates select="body"/>
+ </xsl:element>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/documentation/xsl/head.xsl b/documentation/xsl/head.xsl
new file mode 100644
index 0000000..7d975dd
--- /dev/null
+++ b/documentation/xsl/head.xsl
@@ -0,0 +1,68 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!--
+ XSL stylesheet for processing documentation for the lcd4linux project
+ Copyright 2004 Xavier Vello <xavier66@free.fr>
+ Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
+-->
+
+<!--The info node, to generate headers-->
+
+<xsl:template match="head" node="doc">
+ <xsl:element name="head">
+ <xsl:apply-templates select="title"/>
+ <xsl:apply-templates select="ref"/>
+ <xsl:element name="link">
+ <xsl:attribute name="rel">stylesheet</xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:copy-of select="$root"/>
+ <xsl:text>doc.css</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="type">text/css</xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="title" node="head">
+ <xsl:element name="title">
+ <xsl:value-of select="."/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="ref" node="head">
+</xsl:template>
+
+<xsl:template match="history" node="head">
+ <table border="1">
+ <xsl:for-each select="revision">
+ <tr>
+ <td><xsl:value-of select="@version"/></td>
+ <td><xsl:value-of select="."/></td>
+ </tr>
+ </xsl:for-each>
+ </table>
+</xsl:template>
+
+<xsl:template match="links" node="head">
+ <xsl:element name="div">
+ <xsl:attribute name="class">links</xsl:attribute>
+ <xsl:element name="div">
+ <xsl:attribute name="class">title</xsl:attribute>
+ See Also
+ </xsl:element>
+
+ <xsl:apply-templates select="link" mode="head"/>
+
+ <xsl:element name="div">
+ <xsl:attribute name="class">index</xsl:attribute>
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:copy-of select="$root"/>
+ <xsl:text>index.html</xsl:text>
+ </xsl:attribute>
+ <xsl:text>&lt; Index</xsl:text>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/documentation/xsl/helpers.xsl b/documentation/xsl/helpers.xsl
new file mode 100644
index 0000000..df91a4a
--- /dev/null
+++ b/documentation/xsl/helpers.xsl
@@ -0,0 +1,141 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!--
+ XSL stylesheet for processing documentation for the lcd4linux project
+ Copyright 2004 Xavier Vello <xavier66@free.fr>
+ Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
+-->
+
+<!--The special helpers-->
+
+<xsl:template match="cmd">
+ <xsl:element name="div">
+ <xsl:attribute name="class">cmd</xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="conf">
+ <xsl:element name="div">
+ <xsl:attribute name="class">conf</xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="note">
+ <xsl:element name="div">
+ <xsl:attribute name="class">note</xsl:attribute>
+ <xsl:element name="img">
+ <xsl:attribute name="src">
+ <xsl:copy-of select="$root"/>
+ <xsl:text>images/note-icon.png</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:text>Note : </xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="class">icon</xsl:attribute>
+ </xsl:element>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="warn">
+ <xsl:element name="div">
+ <xsl:attribute name="class">warn</xsl:attribute>
+ <xsl:element name="img">
+ <xsl:attribute name="src">
+ <xsl:copy-of select="$root"/>
+ <xsl:text>images/warn-icon.png</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:text>Warning : </xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="class">icon</xsl:attribute>
+ </xsl:element>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="new"> <!--This last will be more complicated-->
+ <xsl:element name="div">
+ <xsl:attribute name="class">new</xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="link" mode="head">
+ <xsl:apply-templates select="."/>
+ <xsl:element name="br"/>
+</xsl:template>
+
+<xsl:template match="link">
+ <xsl:choose>
+ <xsl:when test="@ref">
+ <xsl:variable name="refid" select="@ref"/>
+ <xsl:choose>
+ <xsl:when test="$references/ref[@id=$refid]">
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:choose>
+ <xsl:when test="$references/ref[@id=$refid]/class = $class">
+ <xsl:value-of select="concat($references/ref[@id=$refid]/file, '.html', $references/ref[@id=$refid]/anchor)"/>
+ </xsl:when>
+ <xsl:when test="not(string-length($references/ref[@id=$refid]/class))">
+ <xsl:copy-of select="$root"/>
+ <xsl:value-of select="concat($references/ref[@id=$refid]/file, '.html', $references/ref[@id=$refid]/anchor)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$root"/>
+ <xsl:value-of select="concat($references/ref[@id=$refid]/class, '/', $references/ref[@id=$refid]/file, '.html', $references/ref[@id=$refid]/anchor)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="string-length(.)">
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:when test="$references/ref[@id=$refid]/label">
+ <xsl:value-of select="$references/ref[@id=$refid]/label"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>NO LABEL</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="@url">
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:value-of select="@url"/>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="string-length(.)">
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@url"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message><xsl:value-of select="current()"/> : invalid link !</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="index">
+ <xsl:choose>
+ <xsl:when test="@class">
+ <xsl:apply-templates select="$references/ref">
+ <xsl:with-param name="class"><xsl:value-of select="@class"/></xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$references/ref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/documentation/xsl/references.xsl b/documentation/xsl/references.xsl
new file mode 100644
index 0000000..4dc47f6
--- /dev/null
+++ b/documentation/xsl/references.xsl
@@ -0,0 +1,47 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!--
+ XSL stylesheet for processing documentation for the lcd4linux project
+ Copyright 2004 Xavier Vello <xavier66@free.fr>
+ Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
+-->
+
+<xsl:template match="ref" node="references">
+ <xsl:param name="class" select="''"/>
+ <xsl:choose>
+ <xsl:when test="class=$class">
+ <xsl:apply-templates select="." mode="link"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="ref" node="references" mode="link">
+ <xsl:choose>
+ <xsl:when test="not(hiden)">
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:choose>
+ <xsl:when test="not(string-length(class))">
+ <xsl:copy-of select="$root"/>
+ <xsl:value-of select="concat(file, '.html')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$root"/>
+ <xsl:value-of select="concat(class, '/', file, '.html', anchor)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="label">
+ <xsl:value-of select="label"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="file"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ <xsl:element name="br"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/documentation/xsl/xhtml.xsl b/documentation/xsl/xhtml.xsl
new file mode 100644
index 0000000..1f5cb98
--- /dev/null
+++ b/documentation/xsl/xhtml.xsl
@@ -0,0 +1,16 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!--
+ XSL stylesheet for processing documentation for the lcd4linux project
+ Copyright 2004 Xavier Vello <xavier66@free.fr>
+ Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
+-->
+
+<!--Standard html tags, just a wraper-->
+
+<xsl:template match="@*|node()">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>