aboutsummaryrefslogtreecommitdiffstats
path: root/lib/erl_docgen/priv
diff options
context:
space:
mode:
Diffstat (limited to 'lib/erl_docgen/priv')
-rw-r--r--lib/erl_docgen/priv/Makefile34
-rw-r--r--lib/erl_docgen/priv/bin/Makefile74
-rwxr-xr-xlib/erl_docgen/priv/bin/codeline_preprocessing.escript117
-rw-r--r--lib/erl_docgen/priv/css/Makefile77
-rw-r--r--lib/erl_docgen/priv/css/otp_doc.css117
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/Makefile99
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/application.dtd29
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/appref.dtd33
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/book.dtd73
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/bookinsidecover.dtd36
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/chapter.dtd36
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/cites.dtd35
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/common.dtd87
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/common.entities.dtd24
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/common.header.dtd42
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/common.image.dtd21
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/common.refs.dtd40
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/common.table.dtd25
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/comref.dtd31
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/cref.dtd34
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/erlref.dtd31
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/fascicules.dtd35
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/fileref.dtd31
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/part.dtd29
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/report.dtd138
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/terms.dtd36
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/xhtml1-frameset.dtd1235
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/xhtml1-strict.dtd978
-rw-r--r--lib/erl_docgen/priv/docbuilder_dtd/xhtml1-transitional.dtd1201
-rw-r--r--lib/erl_docgen/priv/dtd_html_entities/Makefile75
-rw-r--r--lib/erl_docgen/priv/dtd_html_entities/xhtml-lat1.ent196
-rw-r--r--lib/erl_docgen/priv/dtd_man_entities/Makefile75
-rw-r--r--lib/erl_docgen/priv/dtd_man_entities/xhtml-lat1.ent195
-rw-r--r--lib/erl_docgen/priv/images/Makefile79
-rw-r--r--lib/erl_docgen/priv/images/erlang-logo.gifbin0 -> 11588 bytes
-rw-r--r--lib/erl_docgen/priv/images/erlang-logo.pngbin0 -> 14795 bytes
-rw-r--r--lib/erl_docgen/priv/images/erlang-old.gifbin0 -> 7549 bytes
-rw-r--r--lib/erl_docgen/priv/js/flipmenu/Makefile81
-rw-r--r--lib/erl_docgen/priv/js/flipmenu/flip_closed.gifbin0 -> 82 bytes
-rw-r--r--lib/erl_docgen/priv/js/flipmenu/flip_open.gifbin0 -> 86 bytes
-rw-r--r--lib/erl_docgen/priv/js/flipmenu/flip_static.gifbin0 -> 109 bytes
-rw-r--r--lib/erl_docgen/priv/js/flipmenu/flipmenu.js352
-rw-r--r--lib/erl_docgen/priv/js/flipmenu/fm.js376
-rw-r--r--lib/erl_docgen/priv/nyi.html16
-rw-r--r--lib/erl_docgen/priv/xsl/Makefile80
-rw-r--r--lib/erl_docgen/priv/xsl/db_html.xsl1486
-rw-r--r--lib/erl_docgen/priv/xsl/db_html_params.xsl35
-rw-r--r--lib/erl_docgen/priv/xsl/db_man.xsl308
-rw-r--r--lib/erl_docgen/priv/xsl/db_pdf.xsl1129
-rw-r--r--lib/erl_docgen/priv/xsl/db_pdf_params.xsl406
50 files changed, 9667 insertions, 0 deletions
diff --git a/lib/erl_docgen/priv/Makefile b/lib/erl_docgen/priv/Makefile
new file mode 100644
index 0000000000..f50350bef2
--- /dev/null
+++ b/lib/erl_docgen/priv/Makefile
@@ -0,0 +1,34 @@
+# ``The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved via the world wide web at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# The Initial Developer of the Original Code is Ericsson Utvecklings AB.
+# Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
+# AB. All Rights Reserved.''
+#
+# $Id$
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+#
+# Macros
+#
+
+SUB_DIRECTORIES = bin css docbuilder_dtd dtd_html_entities dtd_man_entities images js/flipmenu xsl
+
+SPECIAL_TARGETS =
+
+#
+# Default Subdir Targets
+#
+include $(ERL_TOP)/make/otp_subdir.mk
+
+
diff --git a/lib/erl_docgen/priv/bin/Makefile b/lib/erl_docgen/priv/bin/Makefile
new file mode 100644
index 0000000000..bd59675003
--- /dev/null
+++ b/lib/erl_docgen/priv/bin/Makefile
@@ -0,0 +1,74 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2009. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Application version
+# ----------------------------------------------------
+include ../../vsn.mk
+VSN=$(ERL_DOCGEN_VSN)
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/lib/erl_docgen-$(VSN)
+
+
+# ----------------------------------------------------
+# Target Specs
+# ----------------------------------------------------
+
+
+ESCRIPT_FILES= \
+ codeline_preprocessing.escript
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+debug opt:
+
+docs:
+
+clean:
+ $(RM) $(TARGET_FILES)
+
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+
+release_spec: opt
+ $(INSTALL_DIR) $(RELSYSDIR)/priv/bin
+ $(INSTALL_SCRIPT) $(ESCRIPT_FILES) $(RELSYSDIR)/priv/bin
+
+release_docs_spec:
+
+
+release_tests_spec:
+
+
diff --git a/lib/erl_docgen/priv/bin/codeline_preprocessing.escript b/lib/erl_docgen/priv/bin/codeline_preprocessing.escript
new file mode 100755
index 0000000000..33a678d3a4
--- /dev/null
+++ b/lib/erl_docgen/priv/bin/codeline_preprocessing.escript
@@ -0,0 +1,117 @@
+#!/usr/bin/env escript
+%% -*- erlang -*-
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2009. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%----------------------------------------------------------------------
+%% File : codeline_preprocessing.escript
+%%
+%% Created : 10 Sep 2008 by Lars Thorsen
+%%----------------------------------------------------------------------
+
+%%======================================================================
+%% External functions
+%%======================================================================
+%%----------------------------------------------------------------------
+%% Function: main/1
+%% Description:
+%%----------------------------------------------------------------------
+main([InFile, OutFile]) ->
+ InDev =
+ case file:open(InFile, [read]) of
+ {ok,ID} ->
+ ID;
+ _ ->
+ halt(5)
+ end,
+ CPath=filename:dirname(InFile),
+ OutDev =
+ case file:open(OutFile, [write]) of
+ {ok,OD} ->
+ OD;
+ _ ->
+ halt(5)
+ end,
+ case re:compile("<codeinclude(?:\040|\t)*file=\"([^\"]*)\"(?:(?:(?:\040|\t)*tag=\"([^\"]*)\".*)|(?:.*))(?:/>|/codeinclude>)") of
+ {ok, Mp} ->
+ parse(InDev, OutDev, CPath, Mp);
+ _ ->
+ halt(2)
+ end;
+main(_) ->
+ usage().
+
+
+%%----------------------------------------------------------------------
+%% Function: main/1
+%% Description:
+%%----------------------------------------------------------------------
+usage() ->
+ io:format("usage: codeline_preprocessing <infile> <outfile>\n"),
+ halt(1).
+
+
+%%======================================================================
+%% Internal functions
+%%======================================================================
+
+parse(InDev, OutDev, CPath, Mp) ->
+ case io:get_line(InDev, "") of
+ eof ->
+ file:close(OutDev),
+ file:close(InDev);
+ String ->
+ case re:run(String, Mp,[{capture, [1,2], list}]) of
+ {match,[File, []]} ->
+ case file:read_file(filename:join(CPath, File))of
+ {ok, Bin} ->
+ file:write(OutDev, "<code>\n<![CDATA[\n"),
+ file:write(OutDev, Bin),
+ file:write(OutDev, "]]></code>");
+ _ ->
+ halt(3)
+ end;
+ {match,[File, Tag]} ->
+ String2 = get_code(filename:join(CPath, File), Tag),
+ file:write(OutDev, "<code>\n<![CDATA[\n"),
+ file:write(OutDev, String2),
+ file:write(OutDev, "]]></code>");
+ _ ->
+ file:write(OutDev, String)
+ end,
+ parse(InDev, OutDev, CPath, Mp)
+ end.
+
+%%----------------------------------------------------------------------
+%% Function: get_code/2
+%% Description:
+%%----------------------------------------------------------------------
+get_code(File, Tag) ->
+ case file:read_file(File) of
+ {ok, Bin} ->
+ case re:run(Bin,"^" ++ Tag ++ "\n((.|\n)*)\n" ++
+ Tag ++ "\$",[global, multiline, {capture, [1], binary}]) of
+ {match,[[Match]]} ->
+ Match;
+ _ ->
+ halt(4)
+ end;
+ _ ->
+ halt(3)
+ end.
+
+
+
diff --git a/lib/erl_docgen/priv/css/Makefile b/lib/erl_docgen/priv/css/Makefile
new file mode 100644
index 0000000000..81124fb111
--- /dev/null
+++ b/lib/erl_docgen/priv/css/Makefile
@@ -0,0 +1,77 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2009. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Application version
+# ----------------------------------------------------
+include ../../vsn.mk
+VSN=$(ERL_DOCGEN_VSN)
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/lib/erl_docgen-$(VSN)
+
+
+# ----------------------------------------------------
+# Target Specs
+# ----------------------------------------------------
+
+
+CSS_FILES = \
+ otp_doc.css
+
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+debug opt:
+
+docs:
+
+clean:
+ $(RM) $(TARGET_FILES)
+
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+
+release_spec: opt
+ $(INSTALL_DIR) $(RELSYSDIR)/priv/css
+ $(INSTALL_DATA) $(CSS_FILES) $(RELSYSDIR)/priv/css
+
+
+release_docs_spec:
+ $(INSTALL_DIR) $(RELEASE_PATH)/doc
+ $(INSTALL_DATA) $(CSS_FILES) ../nyi.html $(RELEASE_PATH)/doc
+
+release_tests_spec:
+
+
diff --git a/lib/erl_docgen/priv/css/otp_doc.css b/lib/erl_docgen/priv/css/otp_doc.css
new file mode 100644
index 0000000000..97d8c2df74
--- /dev/null
+++ b/lib/erl_docgen/priv/css/otp_doc.css
@@ -0,0 +1,117 @@
+
+
+body {
+ background: white;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ margin: 0;
+ padding: 0;
+ border: 0;
+ overflow: scroll;
+ height: 100%;
+ max-height: 100%;
+}
+
+
+th { font-family: Verdana, Arial, Helvetica, sans-serif }
+td { font-family: Verdana, Arial, Helvetica, sans-serif }
+p { font-family: Verdana, Arial, Helvetica, sans-serif }
+
+.header { background: #222; color: #fff }
+.top { background: #efe }
+.otp { background: #efe }
+.erlang { background: #ffe }
+.otp2 { background: #efe }
+.app { background: #ffe }
+
+a:link { color: blue; text-decoration: none }
+a:active { color: blue; text-decoration: none }
+a:visited { color: blue; text-decoration: none }
+
+#container {
+ width: 100%;
+ margin: 0;
+ background-color: #fff;
+}
+
+
+#leftnav {
+ position: fixed;
+ float: left;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 200px;
+ overflow:auto;
+ margin: 0;
+ padding: 1px;
+ border-right: 1px solid red;
+}
+
+
+#content {
+ margin-left: 240px; /* set left value to WidthOfFrameDiv */
+}
+
+.frontpage
+{
+ padding-top: 50px; /* Magins for inner DIV inside each DIV (to provide padding) */
+}
+
+
+.innertube
+{
+ margin: 15px; /* Magins for inner DIV inside each DIV (to provide padding) */
+}
+
+.footer
+{
+ margin: 15px; /* Magins for inner DIV inside each DIV (to provide padding) */
+
+}
+span.bold_code { font-family: courier;font-weight: bold}
+span.code { font-family: courier;font-weight: normal}
+
+.note, .warning {
+ border: solid black 1px;
+ margin: 1em 3em;
+}
+
+.note .label {
+ background: #30d42a;
+ color: white;
+ font-weight: bold;
+ padding: 5px 10px;
+}
+.note .content {
+ background: #eafeea;
+ color: black;
+ line-height: 120%;
+ font-size: 90%;
+ padding: 5px 10px;
+}
+.warning .label {
+ background: #C00;
+ color: white;
+ font-weight: bold;
+ padding: 5px 10px;
+}
+.warning .content {
+ background: #FFF0F0;
+ color: black;
+ line-height: 120%;
+ font-size: 90%;
+ padding: 5px 10px;
+}
+
+.example {
+ background-color:#eeeeff;
+ padding: 0px 10px;
+}
+
+pre { font-family: courier; font-weight: normal }
+
+.REFBODY { margin-left: 13mm }
+
+.REFTYPES { margin-left: 8mm }
+
+footer { }
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/Makefile b/lib/erl_docgen/priv/docbuilder_dtd/Makefile
new file mode 100644
index 0000000000..e2214107cb
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/Makefile
@@ -0,0 +1,99 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2009. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Application version
+# ----------------------------------------------------
+include ../../vsn.mk
+VSN=$(ERL_DOCGEN_VSN)
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/lib/erl_docgen-$(VSN)
+
+
+# ----------------------------------------------------
+# Target Specs
+# ----------------------------------------------------
+
+
+DTD_FILES = \
+ application.dtd \
+ chapter.dtd \
+ common.header.dtd \
+ comref.dtd \
+ fileref.dtd \
+ xhtml1-frameset.dtd \
+ appref.dtd \
+ cites.dtd \
+ common.image.dtd \
+ cref.dtd \
+ part.dtd \
+ xhtml1-strict.dtd \
+ book.dtd \
+ common.dtd \
+ common.refs.dtd \
+ erlref.dtd \
+ report.dtd \
+ xhtml1-transitional.dtd \
+ bookinsidecover.dtd \
+ common.entities.dtd \
+ common.table.dtd \
+ fascicules.dtd \
+ terms.dtd
+
+
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+debug opt:
+
+docs:
+
+clean:
+ $(RM) $(TARGET_FILES)
+
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+
+release_spec: opt
+ $(INSTALL_DIR) $(RELSYSDIR)/priv/docbuilder_dtd
+ $(INSTALL_DATA) $(DTD_FILES) $(RELSYSDIR)/priv/docbuilder_dtd
+
+
+release_docs_spec:
+
+
+release_tests_spec:
+
+
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/application.dtd b/lib/erl_docgen/priv/docbuilder_dtd/application.dtd
new file mode 100644
index 0000000000..8a1e8832ec
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/application.dtd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+
+<!ENTITY % common SYSTEM "common.dtd" >
+%common;
+<!ENTITY % common.header SYSTEM "common.header.dtd" >
+%common.header;
+
+<!ELEMENT application (header,description?,include+) >
+<!ELEMENT description (%block;|quote|br|marker|warning|note)* >
+<!ELEMENT include EMPTY >
+<!ATTLIST include file CDATA #REQUIRED>
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/appref.dtd b/lib/erl_docgen/priv/docbuilder_dtd/appref.dtd
new file mode 100644
index 0000000000..70a5ff37af
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/appref.dtd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+
+<!ENTITY % common.refs SYSTEM "common.refs.dtd" >
+%common.refs;
+
+<!-- Structure -->
+
+<!ELEMENT appref (header,app,appsummary,description,
+ (section|funcs)*,authors?) >
+<!ELEMENT app (#PCDATA) >
+<!ELEMENT appsummary (#PCDATA) >
+
+<!-- `name' is used in common.refs.dtd and must therefore
+ be defined in each *ref. dtd -->
+<!ELEMENT name (#PCDATA) >
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/book.dtd b/lib/erl_docgen/priv/docbuilder_dtd/book.dtd
new file mode 100644
index 0000000000..bb89a6d255
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/book.dtd
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+
+<!ENTITY % common SYSTEM "common.dtd" >
+%common;
+<!ENTITY % common.header SYSTEM "common.header.dtd" >
+%common.header;
+<!ENTITY % common.table SYSTEM "common.table.dtd" >
+%common.table;
+
+<!ELEMENT book (header,
+ insidecover?,
+ pagetext,
+ preamble,
+ (applications|parts|headline|pagetext)+,
+ (listoffigures?,
+ listoftables?,
+ listofterms?,
+ bibliography?,
+ index?)) >
+
+<!ELEMENT pagetext (#PCDATA) >
+<!ELEMENT preamble (contents?,preface?) >
+<!ELEMENT preface (title?,(%block;|quote|br|marker|warning|note|table)*) >
+
+<!ELEMENT insidecover (#PCDATA|br|theheader|vfill|vspace|tt|bold|
+ include)* >
+<!ELEMENT tt (#PCDATA|br|theheader|vfill)* >
+<!ELEMENT bold (#PCDATA|br|theheader|vfill)* >
+<!ELEMENT vfill EMPTY >
+<!ELEMENT theheader EMPTY >
+<!ATTLIST theheader tag (title|prepared|responsible|docno|
+ approved|checked|date|rev|file|
+ abbreviation|
+ none) "none" >
+
+
+<!ELEMENT applications (include)* >
+<!ELEMENT parts (title?,description?,(include|onepart)*) >
+<!ATTLIST parts lift (yes|no) "no" >
+<!ELEMENT headline (#PCDATA) >
+<!ELEMENT index EMPTY >
+<!ELEMENT listoffigures EMPTY >
+<!ELEMENT listoftables EMPTY >
+<!ELEMENT listofterms EMPTY >
+<!ELEMENT bibliography EMPTY >
+<!ELEMENT contents EMPTY >
+<!ATTLIST contents level (0|1|2|3) "2">
+
+<!ELEMENT onepart (title?,description?,include+) >
+<!ATTLIST onepart lift (yes|no) "no" >
+
+<!ELEMENT description (%block;|quote|br|marker|warning|note)* >
+
+<!ELEMENT include EMPTY >
+<!ATTLIST include file CDATA #REQUIRED>
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/bookinsidecover.dtd b/lib/erl_docgen/priv/docbuilder_dtd/bookinsidecover.dtd
new file mode 100644
index 0000000000..d6efbef6a4
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/bookinsidecover.dtd
@@ -0,0 +1,36 @@
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+<!ENTITY % ISOlat1 SYSTEM "xhtml-lat1.ent" >
+%ISOlat1;
+
+<!ENTITY amp "&#x0026;" >
+<!ENTITY gt "&#x003E;" >
+<!ENTITY lt "&#x003C;" >
+
+<!ELEMENT bookinsidecover (#PCDATA|br|theheader|vfill|tt|bold)* >
+
+<!ELEMENT tt (#PCDATA|br|theheader|vfill)* >
+<!ELEMENT bold (#PCDATA|br|theheader|vfill)* >
+<!ELEMENT vfill EMPTY >
+<!ELEMENT theheader EMPTY >
+<!ATTLIST theheader tag (title|prepared|responsible|docno|
+ approved|checked|date|rev|file|
+ none) "none" >
+
+<!ELEMENT br EMPTY >
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/chapter.dtd b/lib/erl_docgen/priv/docbuilder_dtd/chapter.dtd
new file mode 100644
index 0000000000..eb2c96b04f
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/chapter.dtd
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+
+<!ENTITY % common SYSTEM "common.dtd" >
+%common;
+<!ENTITY % common.header SYSTEM "common.header.dtd" >
+%common.header;
+<!ENTITY % common.table SYSTEM "common.table.dtd" >
+%common.table;
+<!ENTITY % common.image SYSTEM "common.image.dtd" >
+%common.image;
+
+<!-- Structure -->
+
+<!ELEMENT chapter (header,(%block;|quote|warning|note|br|
+ image|marker|table)*,section+) >
+<!ELEMENT section (marker*,title,
+ (%block;|quote|warning|note|br|image|marker|
+ table|section)*) >
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/cites.dtd b/lib/erl_docgen/priv/docbuilder_dtd/cites.dtd
new file mode 100644
index 0000000000..334574bff9
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/cites.dtd
@@ -0,0 +1,35 @@
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+<!ENTITY % ISOlat1 SYSTEM "xhtml-lat1.ent" >
+%ISOlat1;
+
+<!ENTITY amp "&#x0026;" >
+<!ENTITY gt "&#x003E;" >
+<!ENTITY lt "&#x003C;" >
+
+<!-- Structure -->
+
+<!ELEMENT cites (cite)* >
+<!ELEMENT cite (id, shortdef, def, resp?) >
+<!ELEMENT id (#PCDATA) >
+<!ELEMENT shortdef (#PCDATA) >
+<!ELEMENT def (#PCDATA|c|em)* >
+<!ELEMENT resp (#PCDATA) >
+<!ELEMENT c (#PCDATA) >
+<!ELEMENT em (#PCDATA|c)* >
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/common.dtd b/lib/erl_docgen/priv/docbuilder_dtd/common.dtd
new file mode 100644
index 0000000000..fdc02c55a1
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/common.dtd
@@ -0,0 +1,87 @@
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+<!-- This file contains common stuff for all dtds. -->
+
+<!ENTITY % common.entities SYSTEM "common.entities.dtd" >
+%common.entities;
+
+<!ENTITY % block "p|pre|code|list|taglist|codeinclude|
+ erleval" >
+<!ENTITY % inline "#PCDATA|c|em|term|cite|br|path|seealso|
+ url|marker" >
+<!-- XXX -->
+<!ELEMENT p (%inline;)* >
+<!ELEMENT pre (#PCDATA|seealso|url|input)* >
+<!ELEMENT input (#PCDATA|seealso|url)* >
+<!ELEMENT code (#PCDATA) >
+<!ATTLIST code type (erl|c|none) "none" >
+<!ELEMENT quote (p)* >
+<!ELEMENT warning (%block;|quote|br|marker)* >
+<!ELEMENT note (%block;|quote|br|marker)* >
+<!ELEMENT c (#PCDATA) >
+<!ELEMENT em (#PCDATA|c)* >
+
+<!-- XXX -->
+<!ELEMENT term (termdef?) >
+<!ATTLIST term id CDATA #REQUIRED >
+<!ELEMENT termdef (#PCDATA) >
+<!ELEMENT cite (citedef?) >
+<!ATTLIST cite id CDATA #REQUIRED >
+<!ELEMENT citedef (ctitle,cauthor,chowpublished) >
+<!ELEMENT ctitle (#PCDATA) >
+<!ELEMENT cauthor (#PCDATA) >
+<!ELEMENT chowpublished (#PCDATA) >
+
+<!-- XXX -->
+<!ELEMENT br EMPTY >
+
+<!-- Path -->
+
+<!ELEMENT path (#PCDATA) >
+<!ATTLIST path unix CDATA ""
+ windows CDATA "" >
+
+<!-- List -->
+
+<!ELEMENT list (item+) >
+<!ATTLIST list type (ordered|bulleted) "bulleted" >
+<!ELEMENT taglist (tag,item)+ >
+<!ELEMENT tag (#PCDATA|c|em|seealso|url|marker)* >
+<!ELEMENT item (%inline;|%block;)* >
+
+<!-- References -->
+
+<!ELEMENT seealso (#PCDATA) >
+<!ATTLIST seealso marker CDATA #REQUIRED >
+<!ELEMENT url (#PCDATA) >
+<!ATTLIST url href CDATA #REQUIRED >
+<!ELEMENT marker EMPTY >
+<!ATTLIST marker id CDATA #REQUIRED >
+
+<!-- CodeInclude -->
+
+<!ELEMENT codeinclude EMPTY >
+<!ATTLIST codeinclude file CDATA #REQUIRED
+ tag CDATA ""
+ type (erl|c|none) "none" >
+
+<!-- ErlEval -->
+
+<!ELEMENT erleval EMPTY >
+<!ATTLIST erleval expr CDATA #REQUIRED >
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/common.entities.dtd b/lib/erl_docgen/priv/docbuilder_dtd/common.entities.dtd
new file mode 100644
index 0000000000..f893ecd070
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/common.entities.dtd
@@ -0,0 +1,24 @@
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+<!ENTITY % ISOlat1 SYSTEM "xhtml-lat1.ent" >
+%ISOlat1;
+
+<!ENTITY amp "&#x0026;" >
+<!ENTITY gt "&#x003E;" >
+<!ENTITY lt "&#x003C;" >
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/common.header.dtd b/lib/erl_docgen/priv/docbuilder_dtd/common.header.dtd
new file mode 100644
index 0000000000..d422a89693
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/common.header.dtd
@@ -0,0 +1,42 @@
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+<!ELEMENT header (copyright?,legalnotice?,title,shorttitle?,
+ prepared,responsible?,docno,approved?,
+ checked?,date,rev,file?) >
+
+<!--
+The titlestyle attribute is only defined to make all the book.xml files
+go through the validation. The attribute is not used for anything
+-->
+<!ATTLIST header titlestyle (special|normal) "normal">
+
+<!ELEMENT title (#PCDATA) >
+<!ELEMENT shorttitle (#PCDATA) >
+<!ELEMENT prepared (#PCDATA) >
+<!ELEMENT responsible (#PCDATA) >
+<!ELEMENT docno (#PCDATA) >
+<!ELEMENT approved (#PCDATA) >
+<!ELEMENT checked (#PCDATA) >
+<!ELEMENT copyright (year+,holder*) >
+<!ELEMENT legalnotice (#PCDATA) >
+<!ELEMENT date (#PCDATA) >
+<!ELEMENT rev (#PCDATA) >
+<!ELEMENT file (#PCDATA) >
+<!ELEMENT year (#PCDATA) >
+<!ELEMENT holder (#PCDATA) >
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/common.image.dtd b/lib/erl_docgen/priv/docbuilder_dtd/common.image.dtd
new file mode 100644
index 0000000000..fc95a669dd
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/common.image.dtd
@@ -0,0 +1,21 @@
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+<!ELEMENT image (icaption) >
+<!ATTLIST image file CDATA #REQUIRED >
+<!ELEMENT icaption (#PCDATA) >
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/common.refs.dtd b/lib/erl_docgen/priv/docbuilder_dtd/common.refs.dtd
new file mode 100644
index 0000000000..7b9974fbda
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/common.refs.dtd
@@ -0,0 +1,40 @@
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+<!-- This file contains common stuff for the *ref.dtd files.
+ Note that `name' is defined in each *ref.dtd. -->
+
+<!ENTITY % common SYSTEM "common.dtd" >
+%common;
+<!ENTITY % common.header SYSTEM "common.header.dtd" >
+%common.header;
+
+<!ELEMENT description (%block;|quote|br|marker|warning|note)* >
+<!ELEMENT funcs (func)+ >
+<!ELEMENT func (name+,fsummary,type?,desc?) >
+<!-- ELEMENT name is defined in each ref dtd -->
+<!ELEMENT fsummary (#PCDATA|c|em)* >
+<!ELEMENT type (v,d?)+ >
+<!ELEMENT v (#PCDATA) >
+<!ELEMENT d (#PCDATA|c|em)* >
+<!ELEMENT desc (%block;|quote|br|marker|warning|note)* >
+<!ELEMENT authors (aname,email)+ >
+<!ELEMENT aname (#PCDATA) >
+<!ELEMENT email (#PCDATA) >
+<!ELEMENT section (marker*,title,(%block;|quote|br|marker|
+ warning|note)*) >
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/common.table.dtd b/lib/erl_docgen/priv/docbuilder_dtd/common.table.dtd
new file mode 100644
index 0000000000..7741da1018
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/common.table.dtd
@@ -0,0 +1,25 @@
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+<!ELEMENT table (row+,tcaption) >
+<!ATTLIST table align (left|center|right) "center" >
+<!ELEMENT row (cell+) >
+<!ELEMENT cell (%inline;)* >
+<!ATTLIST cell align (left|center|right) "left"
+ valign (top|middle|bottom) "middle" >
+<!ELEMENT tcaption (#PCDATA) >
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/comref.dtd b/lib/erl_docgen/priv/docbuilder_dtd/comref.dtd
new file mode 100644
index 0000000000..fcdea625d5
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/comref.dtd
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+
+<!ENTITY % common.refs SYSTEM "common.refs.dtd" >
+%common.refs;
+
+<!ELEMENT comref (header,com,comsummary,description,
+ (section|funcs)*,authors?) >
+<!ELEMENT com (#PCDATA) >
+<!ELEMENT comsummary (#PCDATA) >
+
+<!-- `name' is used in common.refs.dtd and must therefore
+ be defined in each *ref. dtd -->
+<!ELEMENT name (#PCDATA) >
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/cref.dtd b/lib/erl_docgen/priv/docbuilder_dtd/cref.dtd
new file mode 100644
index 0000000000..e43bb2bf51
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/cref.dtd
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+
+<!ENTITY % common.refs SYSTEM "common.refs.dtd" >
+%common.refs;
+
+<!ELEMENT cref (header,lib,libsummary,description,
+ (section|funcs)*,authors?) >
+<!ELEMENT lib (#PCDATA) >
+<!ELEMENT libsummary (#PCDATA) >
+
+<!-- `name' is used in common.refs.dtd and must therefore
+ be defined in each *ref. dtd -->
+<!ELEMENT name (ret,nametext) >
+<!ELEMENT ret (#PCDATA) >
+<!ELEMENT nametext (#PCDATA) >
+
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/erlref.dtd b/lib/erl_docgen/priv/docbuilder_dtd/erlref.dtd
new file mode 100644
index 0000000000..21656a1446
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/erlref.dtd
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+
+<!ENTITY % common.refs SYSTEM "common.refs.dtd" >
+%common.refs;
+
+<!ELEMENT erlref (header,module,modulesummary,description,
+ (section|funcs)*,authors?) >
+<!ELEMENT module (#PCDATA) >
+<!ELEMENT modulesummary (#PCDATA) >
+
+<!-- `name' is used in common.refs.dtd and must therefore
+ be defined in each *ref. dtd -->
+<!ELEMENT name (#PCDATA) >
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/fascicules.dtd b/lib/erl_docgen/priv/docbuilder_dtd/fascicules.dtd
new file mode 100644
index 0000000000..b14276a2c0
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/fascicules.dtd
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+
+<!ENTITY % ISOlat1 SYSTEM "xhtml-lat1.ent" >
+%ISOlat1;
+
+<!ENTITY amp "&#x0026;" >
+<!ENTITY gt "&#x003E;" >
+<!ENTITY lt "&#x003C;" >
+
+<!-- Structure -->
+
+<!ELEMENT fascicules (fascicule)+ >
+<!ELEMENT fascicule (#PCDATA) >
+<!ATTLIST fascicule file CDATA #REQUIRED
+ href CDATA #REQUIRED
+ entry (yes|no) "no" >
+
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/fileref.dtd b/lib/erl_docgen/priv/docbuilder_dtd/fileref.dtd
new file mode 100644
index 0000000000..5a1cc54afe
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/fileref.dtd
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+
+<!ENTITY % common.refs SYSTEM "common.refs.dtd" >
+%common.refs;
+
+<!ELEMENT fileref (header,file,filesummary,description,
+ (section|funcs)*,authors?) >
+<!-- Note: ELEMENT file is already defined -->
+<!ELEMENT filesummary (#PCDATA) >
+
+<!-- `name' is used in common.refs.dtd and must therefore
+ be defined in each *ref. dtd -->
+<!ELEMENT name (#PCDATA) >
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/part.dtd b/lib/erl_docgen/priv/docbuilder_dtd/part.dtd
new file mode 100644
index 0000000000..3f97199042
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/part.dtd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+
+<!ENTITY % common SYSTEM "common.dtd" >
+%common;
+<!ENTITY % common.header SYSTEM "common.header.dtd" >
+%common.header;
+
+<!ELEMENT part (header,description?,include+) >
+<!ELEMENT description (%block;|quote|br|marker|warning|note)* >
+<!ELEMENT include EMPTY >
+<!ATTLIST include file CDATA #REQUIRED>
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/report.dtd b/lib/erl_docgen/priv/docbuilder_dtd/report.dtd
new file mode 100644
index 0000000000..3d07e6e5a7
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/report.dtd
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+
+<!ENTITY % ISOlat1 SYSTEM "xhtml-lat1.ent" >
+%ISOlat1;
+
+<!ENTITY amp "&#x0026;" >
+<!ENTITY gt "&#x003E;" >
+<!ENTITY lt "&#x003C;" >
+
+<!ENTITY % header "title,prepared,responsible,docno,approved,
+ checked,date,rev,file" >
+<!ENTITY % block "p|pre|code|list|taglist|erlinclude|
+ codeinclude|erleval" >
+<!ENTITY % inline "#PCDATA|i|b|c|em|term|cite|br|path|seealso|
+ url|marker" >
+
+<!-- Structure -->
+
+<!ELEMENT report (header,section+) >
+<!ELEMENT header (title,prepared,responsible?,docno,approved?,
+ checked?,date,rev,file?) >
+<!ELEMENT title (#PCDATA) >
+<!ELEMENT prepared (#PCDATA) >
+<!ELEMENT responsible (#PCDATA) >
+<!ELEMENT docno (#PCDATA) >
+<!ELEMENT approved (#PCDATA) >
+<!ELEMENT checked (#PCDATA) >
+<!ELEMENT date (#PCDATA) >
+<!ELEMENT rev (#PCDATA) >
+<!ELEMENT file (#PCDATA) >
+
+<!ELEMENT section (marker*,title,
+ (%block;|quote|warning|note|br|image|marker|
+ table|section)*) >
+<!ELEMENT p (%inline;|index)* >
+<!ELEMENT pre (#PCDATA|seealso|url|input)* >
+<!ELEMENT input (#PCDATA|seealso|url)* >
+<!ELEMENT code (#PCDATA) >
+<!ATTLIST code type (erl|c|none) "none" >
+<!ELEMENT quote (p)* >
+<!ELEMENT warning (%block;|quote|br|image|marker|table)* >
+<!ELEMENT note (%block;|quote|br|image|marker|table)* >
+<!ELEMENT i (#PCDATA|b|c|em)* >
+<!ELEMENT b (#PCDATA|i|c|em)* >
+<!ELEMENT c (#PCDATA) >
+<!ELEMENT em (#PCDATA|i|b|c)* >
+<!ELEMENT term (termdef?) >
+<!ATTLIST term id CDATA #REQUIRED >
+<!ELEMENT termdef (#PCDATA) >
+<!ELEMENT cite (citedef?) >
+<!ATTLIST cite id CDATA #REQUIRED >
+<!ELEMENT citedef (ctitle,cauthor,chowpublished) >
+<!ELEMENT ctitle (#PCDATA) >
+<!ELEMENT cauthor (#PCDATA) >
+<!ELEMENT chowpublished (#PCDATA) >
+<!ELEMENT br EMPTY >
+
+<!-- Path -->
+
+<!ELEMENT path (#PCDATA) >
+<!ATTLIST path unix CDATA ""
+ windows CDATA "" >
+
+<!-- List -->
+
+<!ELEMENT list (item+) >
+<!ATTLIST list type (ordered|bulleted) "bulleted" >
+<!ELEMENT taglist (tag,item)+ >
+<!ELEMENT tag (#PCDATA|i|b|c|em|seealso|url)* >
+<!ELEMENT item (%inline;|%block;)* >
+
+<!-- Image -->
+
+<!ELEMENT image (icaption?) >
+<!ATTLIST image file CDATA #REQUIRED >
+<!ELEMENT icaption (#PCDATA) >
+
+<!-- References -->
+
+<!ELEMENT seealso (#PCDATA) >
+<!ATTLIST seealso marker CDATA #REQUIRED >
+<!ELEMENT url (#PCDATA) >
+<!ATTLIST url href CDATA #REQUIRED >
+<!ELEMENT marker EMPTY >
+<!ATTLIST marker id CDATA #REQUIRED >
+
+<!-- Table -->
+
+<!ELEMENT table (row+,tcaption?) >
+<!ATTLIST table width CDATA "0"
+ colspec CDATA "" >
+<!ELEMENT row (cell+) >
+<!ELEMENT cell (%inline;)* >
+<!ATTLIST cell align (left|center|right) "left"
+ valign (top|middle|bottom) "middle" >
+<!ELEMENT tcaption (#PCDATA) >
+
+<!-- ErlInclude -->
+
+<!ELEMENT erlinclude EMPTY >
+<!ATTLIST erlinclude file CDATA #REQUIRED
+ tag CDATA #REQUIRED >
+
+<!-- CodeInclude -->
+
+<!ELEMENT codeinclude EMPTY >
+<!ATTLIST codeinclude file CDATA #REQUIRED
+ tag CDATA ""
+ type (erl|c|none) "none" >
+
+<!-- ErlEval -->
+
+<!ELEMENT erleval EMPTY >
+<!ATTLIST erleval expr CDATA #REQUIRED >
+
+<!-- Index FOR COMPATIBILITY -->
+
+<!ELEMENT index EMPTY >
+<!ATTLIST index txt CDATA #REQUIRED >
+
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/terms.dtd b/lib/erl_docgen/priv/docbuilder_dtd/terms.dtd
new file mode 100644
index 0000000000..6105ec593e
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/terms.dtd
@@ -0,0 +1,36 @@
+<!--
+ ``The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved via the world wide web at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ Portions created by Ericsson are Copyright 1999-2007, Ericsson AB.
+ All Rights Reserved.''
+
+ $Id$
+-->
+<!ENTITY % ISOlat1 SYSTEM "xhtml-lat1.ent" >
+%ISOlat1;
+
+<!ENTITY amp "&#x0026;" >
+<!ENTITY gt "&#x003E;" >
+<!ENTITY lt "&#x003C;" >
+
+<!-- Structure -->
+
+<!ELEMENT terms (term)* >
+<!ELEMENT term (id, shortdef, def, resp?) >
+<!ELEMENT id (#PCDATA) >
+<!ELEMENT shortdef (#PCDATA) >
+<!ELEMENT def (#PCDATA|c|em)* >
+<!ELEMENT resp (#PCDATA) >
+<!ELEMENT c (#PCDATA) >
+<!ELEMENT em (#PCDATA|c)* >
+
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/xhtml1-frameset.dtd b/lib/erl_docgen/priv/docbuilder_dtd/xhtml1-frameset.dtd
new file mode 100644
index 0000000000..d128f2eb7c
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/xhtml1-frameset.dtd
@@ -0,0 +1,1235 @@
+<!--
+ Extensible HTML version 1.0 Frameset DTD
+
+ This is the same as HTML 4 Frameset 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 Frameset//EN"
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.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 % 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 -->
+
+<!-- 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">
+
+<!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,
+ sub, sup, 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, frameset)>
+<!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 =======================================-->
+
+<!-- only one noframes element permitted per document -->
+
+<!ELEMENT frameset (frameset|frame|noframes)*>
+<!ATTLIST frameset
+ %coreattrs;
+ rows %MultiLengths; #IMPLIED
+ cols %MultiLengths; #IMPLIED
+ onload %Script; #IMPLIED
+ onunload %Script; #IMPLIED
+ >
+
+<!-- reserved frame names start with "_" otherwise starts with letter -->
+
+<!-- tiled window within frameset -->
+
+<!ELEMENT frame EMPTY>
+<!ATTLIST frame
+ %coreattrs;
+ longdesc %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ src %URI; #IMPLIED
+ frameborder (1|0) "1"
+ marginwidth %Pixels; #IMPLIED
+ marginheight %Pixels; #IMPLIED
+ noresize (noresize) #IMPLIED
+ scrolling (yes|no|auto) "auto"
+ >
+
+<!-- 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 (body)>
+<!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
+ >
+
+<!--==================== 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
+ align %ImgAlign; #IMPLIED
+ border %Pixels; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #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 #REQUIRED
+ value CDATA #IMPLIED
+ valuetype (data|ref|object) "data"
+ type %ContentType; #IMPLIED
+ >
+
+<!--=================== Java applet ==================================-->
+<!--
+ One of code or object attributes must be present.
+ Place param elements before other content.
+-->
+<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST applet
+ %coreattrs;
+ codebase %URI; #IMPLIED
+ archive CDATA #IMPLIED
+ code CDATA #IMPLIED
+ object CDATA #IMPLIED
+ alt %Text; #IMPLIED
+ name NMTOKEN #IMPLIED
+ width %Length; #REQUIRED
+ height %Length; #REQUIRED
+ align %ImgAlign; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #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.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+ %attrs;
+ src %URI; #REQUIRED
+ alt %Text; #REQUIRED
+ name NMTOKEN #IMPLIED
+ longdesc %URI; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ ismap (ismap) #IMPLIED
+ align %ImgAlign; #IMPLIED
+ border %Pixels; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #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;
+ %focus;
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ href %URI; #IMPLIED
+ nohref (nohref) #IMPLIED
+ alt %Text; #REQUIRED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+ %attrs;
+ action %URI; #REQUIRED
+ method (get|post) "get"
+ name NMTOKEN #IMPLIED
+ enctype %ContentType; "application/x-www-form-urlencoded"
+ onsubmit %Script; #IMPLIED
+ onreset %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ accept-charset %Charsets; #IMPLIED
+ target %FrameTarget; #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;
+ %focus;
+ 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
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ align %ImgAlign; #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;
+ %focus;
+ name CDATA #IMPLIED
+ rows %Number; #REQUIRED
+ cols %Number; #REQUIRED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #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;
+ >
+
+<!ENTITY % LAlign "(top|bottom|left|right)">
+
+<!ELEMENT legend %Inline;> <!-- fieldset label -->
+<!ATTLIST legend
+ %attrs;
+ accesskey %Character; #IMPLIED
+ align %LAlign; #IMPLIED
+ >
+
+<!--
+ Content is %Flow; excluding a, form, form controls, iframe
+-->
+<!ELEMENT button %button.content;> <!-- push button -->
+<!ATTLIST button
+ %attrs;
+ %focus;
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ type (button|submit|reset) "submit"
+ disabled (disabled) #IMPLIED
+ >
+
+<!-- single-line text input control (DEPRECATED) -->
+<!ELEMENT isindex EMPTY>
+<!ATTLIST isindex
+ %coreattrs;
+ %i18n;
+ prompt %Text; #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
+ align %TAlign; #IMPLIED
+ bgcolor %Color; #IMPLIED
+ >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+ %attrs;
+ align %CAlign; #IMPLIED
+ >
+
+<!--
+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;
+ bgcolor %Color; #IMPLIED
+ >
+
+<!-- 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;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Pixels; #IMPLIED
+ height %Pixels; #IMPLIED
+ >
+
+<!ATTLIST td
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Pixels; #IMPLIED
+ height %Pixels; #IMPLIED
+ >
+
diff --git a/lib/erl_docgen/priv/docbuilder_dtd/xhtml1-strict.dtd b/lib/erl_docgen/priv/docbuilder_dtd/xhtml1-strict.dtd
new file mode 100644
index 0000000000..2927b9ece7
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_dtd/xhtml1-strict.dtd
@@ -0,0 +1,978 @@
+<!--
+ Extensible HTML version 1.0 Strict DTD
+
+ This is the same as HTML 4 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-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 Strict//EN"
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+
+ $Revision: 1.1 $
+ $Date: 2002/08/01 13:56:03 $
+
+-->
+
+<!--================ 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 % 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 -->
+
+<!--=================== 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.pre
+ "br | span | bdo | map">
+
+
+<!ENTITY % special
+ "%special.pre; | object | img ">
+
+<!ENTITY % fontstyle "tt | i | b | big | small ">
+
+<!ENTITY % phrase "em | strong | dfn | code | q |
+ samp | kbd | var | cite | abbr | acronym | sub | sup ">
+
+<!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">
+<!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.inline;)*">
+
+<!-- pre uses %Inline excluding big, small, sup or sup -->
+
+<!ENTITY % pre.content
+ "(#PCDATA | a | %fontstyle; | %phrase; | %special.pre; | %misc.inline;
+ | %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;)*">
+
+<!--================ 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)*">
+
+<!-- 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
+ href %URI; #REQUIRED
+ id ID #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
+ >
+
+<!-- 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
+ src %URI; #IMPLIED
+ defer (defer) #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Block;>
+<!ATTLIST noscript
+ %attrs;
+ >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Block;>
+<!ATTLIST body
+ %attrs;
+ onload %Script; #IMPLIED
+ onunload %Script; #IMPLIED
+ >
+
+<!ELEMENT div %Flow;> <!-- generic language/style container -->
+<!ATTLIST div
+ %attrs;
+ >
+
+<!--=================== 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;
+ %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
+ >
+
+<!--===================== 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;
+ %focus;
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ href %URI; #IMPLIED
+ nohref (nohref) #IMPLIED
+ alt %Text; #REQUIRED
+ >
+
+<!--================ 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;
+ %focus;
+ 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
+ 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;
+ %focus;
+ name CDATA #IMPLIED
+ rows %Number; #REQUIRED
+ cols %Number; #REQUIRED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #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;
+ %focus;
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ type (button|submit|reset) "submit"
+ disabled (disabled) #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 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
+ >
+
+<!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/lib/erl_docgen/priv/docbuilder_dtd/xhtml1-transitional.dtd b/lib/erl_docgen/priv/docbuilder_dtd/xhtml1-transitional.dtd
new file mode 100644
index 0000000000..628f27ac50
--- /dev/null
+++ b/lib/erl_docgen/priv/docbuilder_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
+ >
+
+<!--==================== 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
+ align %ImgAlign; #IMPLIED
+ border %Pixels; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #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 #REQUIRED
+ value CDATA #IMPLIED
+ valuetype (data|ref|object) "data"
+ type %ContentType; #IMPLIED
+ >
+
+<!--=================== Java applet ==================================-->
+<!--
+ One of code or object attributes must be present.
+ Place param elements before other content.
+-->
+<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST applet
+ %coreattrs;
+ codebase %URI; #IMPLIED
+ archive CDATA #IMPLIED
+ code CDATA #IMPLIED
+ object CDATA #IMPLIED
+ alt %Text; #IMPLIED
+ name NMTOKEN #IMPLIED
+ width %Length; #REQUIRED
+ height %Length; #REQUIRED
+ align %ImgAlign; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #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.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+ %attrs;
+ src %URI; #REQUIRED
+ alt %Text; #REQUIRED
+ name NMTOKEN #IMPLIED
+ longdesc %URI; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ ismap (ismap) #IMPLIED
+ align %ImgAlign; #IMPLIED
+ border %Length; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #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 CDATA #IMPLIED
+ >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+ %attrs;
+ %focus;
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ href %URI; #IMPLIED
+ nohref (nohref) #IMPLIED
+ alt %Text; #REQUIRED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+ %attrs;
+ action %URI; #REQUIRED
+ method (get|post) "get"
+ name NMTOKEN #IMPLIED
+ enctype %ContentType; "application/x-www-form-urlencoded"
+ onsubmit %Script; #IMPLIED
+ onreset %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ accept-charset %Charsets; #IMPLIED
+ target %FrameTarget; #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;
+ %focus;
+ 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
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ align %ImgAlign; #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;
+ %focus;
+ name CDATA #IMPLIED
+ rows %Number; #REQUIRED
+ cols %Number; #REQUIRED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #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;
+ >
+
+<!ENTITY % LAlign "(top|bottom|left|right)">
+
+<!ELEMENT legend %Inline;> <!-- fieldset label -->
+<!ATTLIST legend
+ %attrs;
+ accesskey %Character; #IMPLIED
+ align %LAlign; #IMPLIED
+ >
+
+<!--
+ Content is %Flow; excluding a, form, form controls, iframe
+-->
+<!ELEMENT button %button.content;> <!-- push button -->
+<!ATTLIST button
+ %attrs;
+ %focus;
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ type (button|submit|reset) "submit"
+ disabled (disabled) #IMPLIED
+ >
+
+<!-- single-line text input control (DEPRECATED) -->
+<!ELEMENT isindex EMPTY>
+<!ATTLIST isindex
+ %coreattrs;
+ %i18n;
+ prompt %Text; #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
+ align %TAlign; #IMPLIED
+ bgcolor %Color; #IMPLIED
+ >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+ %attrs;
+ align %CAlign; #IMPLIED
+ >
+
+<!--
+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;
+ bgcolor %Color; #IMPLIED
+ >
+
+<!-- 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;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Length; #IMPLIED
+ height %Length; #IMPLIED
+ >
+
+<!ATTLIST td
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Length; #IMPLIED
+ height %Length; #IMPLIED
+ >
+
diff --git a/lib/erl_docgen/priv/dtd_html_entities/Makefile b/lib/erl_docgen/priv/dtd_html_entities/Makefile
new file mode 100644
index 0000000000..d57302bd1b
--- /dev/null
+++ b/lib/erl_docgen/priv/dtd_html_entities/Makefile
@@ -0,0 +1,75 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2009. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Application version
+# ----------------------------------------------------
+include ../../vsn.mk
+VSN=$(ERL_DOCGEN_VSN)
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/lib/erl_docgen-$(VSN)
+
+
+# ----------------------------------------------------
+# Target Specs
+# ----------------------------------------------------
+
+
+ENTITY_FILES = \
+ xhtml-lat1.ent
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+debug opt:
+
+docs:
+
+clean:
+ $(RM) $(TARGET_FILES)
+
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+
+release_spec: opt
+ $(INSTALL_DIR) $(RELSYSDIR)/priv/dtd_html_entities
+ $(INSTALL_DATA) $(ENTITY_FILES) $(RELSYSDIR)/priv/dtd_html_entities
+
+
+release_docs_spec:
+
+
+release_tests_spec:
+
+
diff --git a/lib/erl_docgen/priv/dtd_html_entities/xhtml-lat1.ent b/lib/erl_docgen/priv/dtd_html_entities/xhtml-lat1.ent
new file mode 100644
index 0000000000..aaae738cfc
--- /dev/null
+++ b/lib/erl_docgen/priv/dtd_html_entities/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 = discretionary hyphen,
+ 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 with,
+ U+00FE ISOlat1 -->
+<!ENTITY yuml "&#255;"> <!-- latin small letter y with diaeresis,
+ U+00FF ISOlat1 -->
diff --git a/lib/erl_docgen/priv/dtd_man_entities/Makefile b/lib/erl_docgen/priv/dtd_man_entities/Makefile
new file mode 100644
index 0000000000..5651d8bc29
--- /dev/null
+++ b/lib/erl_docgen/priv/dtd_man_entities/Makefile
@@ -0,0 +1,75 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2009. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Application version
+# ----------------------------------------------------
+include ../../vsn.mk
+VSN=$(ERL_DOCGEN_VSN)
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/lib/erl_docgen-$(VSN)
+
+
+# ----------------------------------------------------
+# Target Specs
+# ----------------------------------------------------
+
+
+ENTITY_FILES = \
+ xhtml-lat1.ent
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+debug opt:
+
+docs:
+
+clean:
+ $(RM) $(TARGET_FILES)
+
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+
+release_spec: opt
+ $(INSTALL_DIR) $(RELSYSDIR)/priv/dtd_man_entities
+ $(INSTALL_DATA) $(ENTITY_FILES) $(RELSYSDIR)/priv/dtd_man_entities
+
+
+release_docs_spec:
+
+
+release_tests_spec:
+
+
diff --git a/lib/erl_docgen/priv/dtd_man_entities/xhtml-lat1.ent b/lib/erl_docgen/priv/dtd_man_entities/xhtml-lat1.ent
new file mode 100644
index 0000000000..3df9970a43
--- /dev/null
+++ b/lib/erl_docgen/priv/dtd_man_entities/xhtml-lat1.ent
@@ -0,0 +1,195 @@
+<!-- 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 " "> <!-- no-break space = space,in man pages -->
+<!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 = discretionary hyphen,
+ 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 with,
+ U+00FE ISOlat1 -->
+<!ENTITY yuml "&#255;"> <!-- latin small letter y with diaeresis,
+ U+00FF ISOlat1 -->
diff --git a/lib/erl_docgen/priv/images/Makefile b/lib/erl_docgen/priv/images/Makefile
new file mode 100644
index 0000000000..8b858fefb3
--- /dev/null
+++ b/lib/erl_docgen/priv/images/Makefile
@@ -0,0 +1,79 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2009. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Application version
+# ----------------------------------------------------
+include ../../vsn.mk
+VSN=$(ERL_DOCGEN_VSN)
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/lib/erl_docgen-$(VSN)
+
+
+# ----------------------------------------------------
+# Target Specs
+# ----------------------------------------------------
+
+
+GIF_FILES = \
+ erlang-logo.gif
+
+PNG_FILES = \
+ erlang-logo.png
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+debug opt:
+
+docs:
+
+clean:
+ $(RM) $(TARGET_FILES)
+
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+
+release_spec: opt
+ $(INSTALL_DIR) $(RELSYSDIR)/priv/images
+ $(INSTALL_DATA) $(GIF_FILES) $(PNG_FILES) $(RELSYSDIR)/priv/images
+
+
+release_docs_spec:
+ $(INSTALL_DIR) $(RELEASE_PATH)/doc
+ $(INSTALL_DATA) $(PNG_FILES) $(RELEASE_PATH)/doc
+
+release_tests_spec:
+
+
diff --git a/lib/erl_docgen/priv/images/erlang-logo.gif b/lib/erl_docgen/priv/images/erlang-logo.gif
new file mode 100644
index 0000000000..abf5f225d7
--- /dev/null
+++ b/lib/erl_docgen/priv/images/erlang-logo.gif
Binary files differ
diff --git a/lib/erl_docgen/priv/images/erlang-logo.png b/lib/erl_docgen/priv/images/erlang-logo.png
new file mode 100644
index 0000000000..56291aac15
--- /dev/null
+++ b/lib/erl_docgen/priv/images/erlang-logo.png
Binary files differ
diff --git a/lib/erl_docgen/priv/images/erlang-old.gif b/lib/erl_docgen/priv/images/erlang-old.gif
new file mode 100644
index 0000000000..ed2796223a
--- /dev/null
+++ b/lib/erl_docgen/priv/images/erlang-old.gif
Binary files differ
diff --git a/lib/erl_docgen/priv/js/flipmenu/Makefile b/lib/erl_docgen/priv/js/flipmenu/Makefile
new file mode 100644
index 0000000000..65c5c91f35
--- /dev/null
+++ b/lib/erl_docgen/priv/js/flipmenu/Makefile
@@ -0,0 +1,81 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2009. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Application version
+# ----------------------------------------------------
+include ../../../vsn.mk
+VSN=$(ERL_DOCGEN_VSN)
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/lib/erl_docgen-$(VSN)
+
+
+# ----------------------------------------------------
+# Target Specs
+# ----------------------------------------------------
+
+
+GIF_FILES = \
+ flip_closed.gif \
+ flip_open.gif \
+ flip_static.gif
+
+JS_FILES = \
+ flipmenu.js
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+debug opt:
+
+docs:
+
+clean:
+ $(RM) $(TARGET_FILES)
+
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+
+release_spec: opt
+ $(INSTALL_DIR) $(RELSYSDIR)/priv/js/flipmenu
+ $(INSTALL_DATA) $(JS_FILES) $(GIF_FILES) $(RELSYSDIR)/priv/js/flipmenu
+
+
+release_docs_spec:
+ $(INSTALL_DIR) $(RELEASE_PATH)/doc/js/flipmenu
+ $(INSTALL_DATA) $(JS_FILES) $(GIF_FILES) $(RELEASE_PATH)/doc/js/flipmenu
+
+release_tests_spec:
+
+
diff --git a/lib/erl_docgen/priv/js/flipmenu/flip_closed.gif b/lib/erl_docgen/priv/js/flipmenu/flip_closed.gif
new file mode 100644
index 0000000000..9a27c7c25d
--- /dev/null
+++ b/lib/erl_docgen/priv/js/flipmenu/flip_closed.gif
Binary files differ
diff --git a/lib/erl_docgen/priv/js/flipmenu/flip_open.gif b/lib/erl_docgen/priv/js/flipmenu/flip_open.gif
new file mode 100644
index 0000000000..9dda60e73a
--- /dev/null
+++ b/lib/erl_docgen/priv/js/flipmenu/flip_open.gif
Binary files differ
diff --git a/lib/erl_docgen/priv/js/flipmenu/flip_static.gif b/lib/erl_docgen/priv/js/flipmenu/flip_static.gif
new file mode 100644
index 0000000000..2b3ddb5382
--- /dev/null
+++ b/lib/erl_docgen/priv/js/flipmenu/flip_static.gif
Binary files differ
diff --git a/lib/erl_docgen/priv/js/flipmenu/flipmenu.js b/lib/erl_docgen/priv/js/flipmenu/flipmenu.js
new file mode 100644
index 0000000000..1f70f2509b
--- /dev/null
+++ b/lib/erl_docgen/priv/js/flipmenu/flipmenu.js
@@ -0,0 +1,352 @@
+// ######################################################################
+
+// ## flipMenu 5.0.0 (c) J. Reijers
+// ## Last modifications: 23 March 2007
+
+// ######################################################################
+
+// ## Degree of indentation from the left.
+ flipIndentation = "5px";
+
+// ## Padding inbetween menu items.
+ flipVerticalPadding = "4px";
+
+// ## Margin between the left of the browser and the menu.
+ flipLeftMargin = "16px";
+
+// ## Margin between the top of the browser and the menu.
+ flipTopMargin = "10px";
+
+// ## Allow multiple menus to fold out without closing all the other open ones.
+ flipOpenMultipleMenus = false;
+
+// ## Preserve the current state of the menu (requires cookies).
+ flipSaveMenuState = false;
+
+// ## Open entries where the attribute expanded is true
+ flipMarked = true;
+
+// ## Use custom images for bullets
+ flipImages = true;
+
+// ## Images to use (specify full path)
+ flipImg_open = "flip_open.gif";
+ flipImg_closed = "flip_closed.gif";
+ flipImg_static = "flip_static.gif";
+
+// ## Initialise all flipMenus onload
+ flipInitOnLoad = true;
+
+// ## Message to display in status bar while loading
+ flipLoadingMessage = "Loading...";
+
+// ######################################################################
+
+function alterSize(someSize, alterAmount) {
+ someSize = String(someSize);
+ var tmpNr = parseFloat(someSize.replace(/\D/g, ""));
+ var tmpChar = someSize.replace(/\d/g, "");
+ return isNaN(tmpNr) ? someSize : ((tmpNr + alterAmount) + tmpChar);
+}
+
+isIE = (String(navigator.appVersion).indexOf("MSIE") > -1);
+if (!isIE) flipIndentation = alterSize(flipIndentation, -16);
+if (!isIE) flipLeftMargin = alterSize(flipLeftMargin, -16);
+
+document.write(
+ "<style type=\"text/css\">" +
+
+ "ul.flipMenu { margin-top: " + flipTopMargin + "; margin-left: " + flipLeftMargin + "; " + (flipImages ? "" : "list-style-type: none;") + " }" +
+ "ul.flipMenu ul, ul.flipMenu li { padding-top: " + flipVerticalPadding + "; margin-left: " + flipIndentation + "; margin-right: 0px; " + (flipImages ? "" : "list-style-type: none;") + " }" +
+
+ "li.flipFolderOpen { cursor: pointer; " + (flipImages ? "list-style-image: url(" + document.getElementById("js").getAttribute("src").match( /.*\// ) + flipImg_open + ");" : "") + " }" +
+ "li.flipFolderClosed { cursor: pointer; " + (flipImages ? "list-style-image: url(" + document.getElementById("js").getAttribute("src").match( /.*\// ) + flipImg_closed + ");" : "") + " }" +
+
+ "</style>"
+);
+
+
+
+if (flipImages) {
+ aFlipPreloads = [];
+ aFlipPreloads[0] = new Image;
+ aFlipPreloads[0].src = document.getElementById("js").getAttribute("src").match( /.*\// ) + flipImg_open;
+ aFlipPreloads[1] = new Image;
+ aFlipPreloads[1].src = document.getElementById("js").getAttribute("src").match( /.*\// ) + flipImg_closed;
+ aFlipPreloads[2] = new Image;
+ aFlipPreloads[2].src = document.getElementById("js").getAttribute("src").match( /.*\// ) + flipImg_static;
+}
+
+function addEvent(someObj, someEvent, someFunction) {
+ if (someObj.addEventListener) { someObj.addEventListener(someEvent, someFunction, true); return true; } else if (someObj.attachEvent) return someObj.attachEvent("on" + someEvent, someFunction); else return false;
+}
+
+function openCloseFlip(theItem, newSetting, openParents) {
+ if (theItem.flipID) {
+ if (openParents) {
+ var tmpItem = theItem;
+ while (tmpItem.parentElement || tmpItem.parentNode) {
+ tmpItem = (tmpItem.parentElement) ? tmpItem.parentElement : tmpItem.parentNode;
+ openCloseFlip(tmpItem, newSetting);
+ }
+ }
+ if ((theItem.className == "flipFolderOpen" && newSetting == "closed") || (theItem.className == "flipFolderClosed" && newSetting == "open")) {
+ if (!theItem.childrenInitialised) {
+ for (var j = 0; j < theItem.childNodes.length; j++) if (theItem.childNodes[j].nodeName == "UL" && !theItem.childNodes[j].initialised) initFlip(theItem.childNodes[j]);
+ theItem.childrenInitialised = true;
+ }
+ theItem.getElementsByTagName("UL")[0].style.display = (newSetting == "open") ? "" : "none";
+ theItem.className = newSetting == "open" ? "flipFolderOpen" : "flipFolderClosed";
+ }
+ }
+}
+
+function openFlip(theItem, openParents) {
+ openCloseFlip(theItem, "open", openParents);
+}
+
+function closeFlip(theItem, closeParents) {
+ openCloseFlip(theItem, "closed", closeParents);
+}
+
+function toggleFlip(theElement) {
+ if (theElement.flipID) {
+ var theItem = theElement;
+ var isContained = true;
+ } else {
+ if (theElement && theElement.button > 0) return false;
+ var theItem = (isIE) ? event.srcElement : theElement.target;
+
+ var isContained = false;
+ if (theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed") isContained = true; else while (theItem.parentElement || theItem.parentNode) {
+ if (theItem.className == "flipStatic" || theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed") {
+ isContained = (theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed");
+ break;
+ }
+ theItem = (theItem.parentElement) ? theItem.parentElement : theItem.parentNode;
+ }
+ }
+
+ var toOpenFlip = (isContained && theItem.className == "flipFolderClosed");
+
+ if (!flipOpenMultipleMenus && (toOpenFlip || theItem.className == "flipStatic")) {
+ if (theItem.parentElement || theItem.parentNode) {
+ var parentUL = (theItem.parentElement) ? theItem.parentElement : theItem.parentNode;
+ for (var i = 0; i < parentUL.childNodes.length; i++) closeFlip(parentUL.childNodes[i]);
+ }
+ }
+
+ if (isContained) {
+ if (toOpenFlip) openFlip(theItem); else closeFlip(theItem);
+ }
+}
+
+function setAllFlips(startElement, newSetting) {
+ if (typeof startElement == "undefined") var startElement = document;
+ if (typeof newSetting == "undefined") var newSetting = "closed";
+
+ var aUL = startElement.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var parentFlip = aUL[i].parentElement ? aUL[i].parentElement : aUL[i].parentNode;
+ openCloseFlip(parentFlip, newSetting);
+ }
+}
+
+function openAllFlips(startElement) {
+ setAllFlips(startElement, "open");
+}
+
+function closeAllFlips(startElement) {
+ setAllFlips(startElement, "closed");
+}
+
+function initFlip(startElement) {
+ if (!document.createElement) return false;
+
+ if (!startElement || !startElement.nodeName) {
+ var aUL = document.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ if (flipLoadingMessage != "") window.status = flipLoadingMessage + " " + parseInt((i / (aUL.length - 1)) * 100, 10) + "%";
+ var curUL = aUL[i];
+ if (curUL.className == "flipMenu") {
+ initFlip(curUL);
+
+ // ## Fix text selecting problem in Mozilla
+ curUL.onselectstart = new Function("return false");
+ curUL.onmousedown = new Function("return false");
+ curUL.onclick = new Function("return true");
+ }
+ }
+
+ if (flipSaveMenuState) loadMenuState();
+
+ if (flipLoadingMessage != "") window.status = "";
+ return true;
+ }
+
+ if (startElement.className == "flipMenu") startElement.style.display = "";
+
+ if (!startElement.childNodes || startElement.childNodes.length == 0) return false;
+
+ if (typeof flipIDCur == "undefined") flipIDCur = 0;
+ if (!startElement.initialised) {
+ var aUL = startElement.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) aUL[i].style.display = "none";
+ }
+
+ for (var i = 0; i < startElement.childNodes.length; i++) {
+ var curNode = startElement.childNodes[i];
+ if (curNode.nodeName == "LI") {
+ flipIDCur++;
+ curNode.flipID = flipIDCur;
+
+ var nodeHasChildren = curNode.getElementsByTagName("UL").length > 0;
+ if (nodeHasChildren) {
+ if (flipImages && curNode.flipClosed) curNode.style.listStyleImage = "url(" + curNode.flipClosed + ")";
+
+ if (curNode.className == null || curNode.className == "") curNode.className = "flipFolderClosed";
+ } else {
+ curNode.className = "flipStatic";
+ if (flipImages && !curNode.style.listStyleImage) {
+ if (!curNode.flipStatic) curNode.flipStatic = document.getElementById("js").getAttribute("src").match( /.*\// ) + flipImg_static;
+ curNode.style.listStyleImage = "url(" + curNode.flipStatic + ")";
+ }
+ }
+
+
+ if (!curNode.flipOpen) curNode.flipOpen = document.getElementById("js").getAttribute("src").match( /.*\// ) + flipImg_open;
+ if (!curNode.flipClosed) curNode.flipClosed = document.getElementById("js").getAttribute("src").match( /.*\// ) + flipImg_closed;
+
+ if (flipMarked) {
+ if (curNode.getAttribute("expanded") == "true") curNode.flipIsOpen=1;
+ }
+
+ if (curNode.flipIsOpen) openFlip(curNode);
+ }
+ }
+
+ startElement.initialised = true;
+}
+
+function rootOfFlip(flipID, startElement) {
+
+ function containsFlip(startElement, flipID) {
+ var flipFound = false;
+ var i = 0;
+ while (i < startElement.childNodes.length && !flipFound) {
+ var curNode = startElement.childNodes[i];
+ flipFound = (curNode.flipID == flipID) ? true : containsFlip(curNode, flipID);
+ i++;
+ }
+ return flipFound;
+ }
+
+ var rootFlip = null;
+
+ if (!startElement || !startElement.nodeName) {
+ var aUL = document.getElementsByTagName("UL");
+ var i = 0;
+ while (rootFlip == null && i < aUL.length) {
+ var curUL = aUL[i];
+ if (curUL.nodeName == "UL" && curUL.className == "flipMenu") rootFlip = rootOfFlip(flipID, curUL);
+ i++;
+ }
+ return rootFlip;
+ }
+
+ if (startElement.childNodes) for (var i = 0; i < startElement.childNodes.length; i++) {
+ var curNode = startElement.childNodes[i];
+ if (curNode.flipID == flipID || containsFlip(curNode, flipID)) rootFlip = curNode;
+ }
+
+ return rootFlip;
+}
+
+function getCookie(cookieName) {
+ var allCookies = document.cookie;
+ var indexStr = allCookies.indexOf(cookieName + "=");
+ if (indexStr == -1) return "";
+ indexStr = allCookies.indexOf("=", indexStr) + 1;
+ var endStr = allCookies.indexOf(";", indexStr);
+ if (endStr == -1) endStr = allCookies.length;
+ return unescape(allCookies.substring(indexStr, endStr));
+}
+
+function inArray(someID, someArray) {
+ for (var i = 0; i < someArray.length; i++) if (someArray[i] == someID) return true;
+ return false;
+}
+
+function getMenuState(startElement) {
+ if (!startElement.childNodes || startElement.childNodes.length == 0) return "";
+
+ var openItems = "";
+ var aUL = startElement.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curNode = aUL[i];
+ var parentFlip = (curNode.parentElement) ? curNode.parentElement : curNode.parentNode;
+ if (curNode.style.display == "" && parentFlip.flipID) openItems += " " + parentFlip.flipID;
+ }
+ return openItems;
+}
+
+function putMenuState(startElement) {
+ if (!startElement.childNodes || startElement.childNodes.length == 0) return false;
+
+ var aUL = startElement.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curNode = aUL[i];
+ var parentFlip = (curNode.parentElement) ? curNode.parentElement : curNode.parentNode;
+ if (inArray(parentFlip.flipID, aOpenItems)) {
+ openFlip(parentFlip);
+ if (typeof prevFlipRoot == "undefined") {
+ var testRoot = rootOfFlip(parentFlip.flipID);
+ if (testRoot.flipID == parentFlip.flipID) prevFlipRoot = testRoot;
+ }
+ }
+ }
+}
+
+function saveMenuState() {
+ if (flipSaveMenuState) {
+ var aUL = document.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curUL = aUL[i];
+ var curID = curUL.id ? curUL.id : i;
+ if (curUL.className == "flipMenu") document.cookie = cookiePrefix + curID + "=" + getMenuState(curUL) + ";";
+ }
+ }
+}
+
+function loadMenuState() {
+ var aUL = document.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curUL = aUL[i];
+ var curID = curUL.id ? curUL.id : i;
+ if (curUL.className == "flipMenu") {
+ var savedState = String(getCookie(cookiePrefix + curID));
+ if (savedState != "") {
+ aOpenItems = savedState.split(" ");
+ putMenuState(curUL);
+ }
+ }
+ }
+
+ addEvent(window, "unload", saveMenuState);
+}
+
+function clearMenuState(flipMenuID) {
+ if (typeof flipMenuID == "undefined") {
+ var aUL = document.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curUL = aUL[i];
+ var curID = curUL.id ? curUL.id : i;
+ if (curUL.className == "flipMenu") document.cookie = cookiePrefix + curID + "=;";
+ }
+ } else document.cookie = cookiePrefix + flipMenuID + "=;";
+}
+
+cookiePrefix = document.location.pathname + "_";
+
+addEvent(document, "click", toggleFlip);
+if (flipInitOnLoad) addEvent(window, "load", initFlip);
diff --git a/lib/erl_docgen/priv/js/flipmenu/fm.js b/lib/erl_docgen/priv/js/flipmenu/fm.js
new file mode 100644
index 0000000000..f07177051b
--- /dev/null
+++ b/lib/erl_docgen/priv/js/flipmenu/fm.js
@@ -0,0 +1,376 @@
+// ######################################################################
+
+// ## flipMenu 5.0.0 (c) J. Reijers
+// ## Last modifications: 23 March 2007
+
+// ######################################################################
+
+// ## Degree of indentation from the left.
+ flipIndentation = "5px";
+
+// ## Padding inbetween menu items.
+ flipVerticalPadding = "4px";
+
+// ## Margin between the left of the browser and the menu.
+ flipLeftMargin = "16px";
+
+// ## Margin between the top of the browser and the menu.
+ flipTopMargin = "10px";
+
+// ## Allow multiple menus to fold out without closing all the other open ones.
+ flipOpenMultipleMenus = false;
+
+// ## Preserve the current state of the menu (requires cookies).
+ flipSaveMenuState = false;
+
+// ## Preserve the current state of the menu (requires cookies).
+ constantState = true;
+
+// ## Use custom images for bullets
+ flipImages = true;
+
+// ## Images to use (specify full path)
+ flipImg_open = "js/flipmenu/flip_open.gif";
+ flipImg_closed = "js/flipmenu/flip_closed.gif";
+ flipImg_static = "js/flipmenu/flip_static.gif";
+
+// ## Initialise all flipMenus onload
+ flipInitOnLoad = true;
+
+// ## Message to display in status bar while loading
+ flipLoadingMessage = "Loading...";
+
+// ######################################################################
+
+function alterSize(someSize, alterAmount) {
+ someSize = String(someSize);
+ var tmpNr = parseFloat(someSize.replace(/\D/g, ""));
+ var tmpChar = someSize.replace(/\d/g, "");
+ return isNaN(tmpNr) ? someSize : ((tmpNr + alterAmount) + tmpChar);
+}
+
+isIE = (String(navigator.appVersion).indexOf("MSIE") > -1);
+if (!isIE) flipIndentation = alterSize(flipIndentation, -16);
+if (!isIE) flipLeftMargin = alterSize(flipLeftMargin, -16);
+
+document.write(
+ "<style type=\"text/css\">" +
+
+ "ul.flipMenu { margin-top: " + flipTopMargin + "; margin-left: " + flipLeftMargin + "; " + (flipImages ? "" : "list-style-type: none;") + " }" +
+ "ul.flipMenu ul, ul.flipMenu li { padding-top: " + flipVerticalPadding + "; margin-left: " + flipIndentation + "; margin-right: 0px; " + (flipImages ? "" : "list-style-type: none;") + " }" +
+
+ "li.flipFolderOpen { cursor: pointer; " + (flipImages ? "list-style-image: url(" + flipImg_open + ");" : "") + " }" +
+ "li.flipFolderClosed { cursor: pointer; " + (flipImages ? "list-style-image: url(" + flipImg_closed + ");" : "") + " }" +
+
+ "</style>"
+);
+
+if (flipImages) {
+ aFlipPreloads = [];
+ aFlipPreloads[0] = new Image;
+ aFlipPreloads[0].src = flipImg_open;
+ aFlipPreloads[1] = new Image;
+ aFlipPreloads[1].src = flipImg_closed;
+ aFlipPreloads[2] = new Image;
+ aFlipPreloads[2].src = flipImg_static;
+}
+
+function addEvent(someObj, someEvent, someFunction) {
+ if (someObj.addEventListener) { someObj.addEventListener(someEvent, someFunction, true); return true; } else if (someObj.attachEvent) return someObj.attachEvent("on" + someEvent, someFunction); else return false;
+}
+
+function openCloseFlip(theItem, newSetting, openParents) {
+ if (theItem.flipID) {
+ if (openParents) {
+ var tmpItem = theItem;
+ while (tmpItem.parentElement || tmpItem.parentNode) {
+ tmpItem = (tmpItem.parentElement) ? tmpItem.parentElement : tmpItem.parentNode;
+ openCloseFlip(tmpItem, newSetting);
+ }
+ }
+ if ((theItem.className == "flipFolderOpen" && newSetting == "closed") || (theItem.className == "flipFolderClosed" && newSetting == "open")) {
+ if (!theItem.childrenInitialised) {
+ for (var j = 0; j < theItem.childNodes.length; j++) if (theItem.childNodes[j].nodeName == "UL" && !theItem.childNodes[j].initialised) initFlip(theItem.childNodes[j]);
+ theItem.childrenInitialised = true;
+ }
+ theItem.getElementsByTagName("UL")[0].style.display = (newSetting == "open") ? "" : "none";
+ theItem.className = newSetting == "open" ? "flipFolderOpen" : "flipFolderClosed";
+ }
+ }
+}
+
+function openFlip(theItem, openParents) {
+ openCloseFlip(theItem, "open", openParents);
+}
+
+function closeFlip(theItem, closeParents) {
+
+ openCloseFlip(theItem, "closed", closeParents);
+}
+
+function toggleFlip(theElement) {
+ if (theElement.flipID) {
+ var theItem = theElement;
+ var isContained = true;
+ } else {
+ if (theElement && theElement.button > 0) return false;
+ var theItem = (isIE) ? event.srcElement : theElement.target;
+
+ var isContained = false;
+ if (theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed") isContained = true; else while (theItem.parentElement || theItem.parentNode) {
+ if (theItem.className == "flipStatic" || theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed") {
+ isContained = (theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed");
+ break;
+ }
+ theItem = (theItem.parentElement) ? theItem.parentElement : theItem.parentNode;
+ }
+ }
+
+ var toOpenFlip = (isContained && theItem.className == "flipFolderClosed");
+
+ if (!flipOpenMultipleMenus && (toOpenFlip || theItem.className == "flipStatic")) {
+ if (theItem.parentElement || theItem.parentNode) {
+ var parentUL = (theItem.parentElement) ? theItem.parentElement : theItem.parentNode;
+ for (var i = 0; i < parentUL.childNodes.length; i++) closeFlip(parentUL.childNodes[i]);
+ }
+ }
+
+ if (isContained) {
+ if (toOpenFlip) openFlip(theItem); else closeFlip(theItem);
+ }
+}
+
+function setAllFlips(startElement, newSetting) {
+ if (typeof startElement == "undefined") var startElement = document;
+ if (typeof newSetting == "undefined") var newSetting = "closed";
+
+ var aUL = startElement.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var parentFlip = aUL[i].parentElement ? aUL[i].parentElement : aUL[i].parentNode;
+ openCloseFlip(parentFlip, newSetting);
+ }
+}
+
+function openAllFlips(startElement) {
+ setAllFlips(startElement, "open");
+}
+
+function closeAllFlips(startElement) {
+ setAllFlips(startElement, "closed");
+}
+
+function initFlip(startElement) {
+ if (!document.createElement) return false;
+
+ if (!startElement || !startElement.nodeName) {
+ var aUL = document.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ if (flipLoadingMessage != "") window.status = flipLoadingMessage + " " + parseInt((i / (aUL.length - 1)) * 100, 10) + "%";
+ var curUL = aUL[i];
+ if (curUL.className == "flipMenu") {
+ initFlip(curUL);
+
+ // ## Fix text selecting problem in Mozilla
+ curUL.onselectstart = new Function("return false");
+ curUL.onmousedown = new Function("return false");
+ curUL.onclick = new Function("return true");
+ }
+ }
+
+ if (flipSaveMenuState) loadMenuState();
+
+ if (flipLoadingMessage != "") window.status = "";
+ return true;
+ }
+
+ if (startElement.className == "flipMenu") startElement.style.display = "";
+
+ if (!startElement.childNodes || startElement.childNodes.length == 0) return false;
+
+ if (typeof flipIDCur == "undefined") flipIDCur = 0;
+ if (!startElement.initialised) {
+ var aUL = startElement.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) aUL[i].style.display = "none";
+ }
+
+ for (var i = 0; i < startElement.childNodes.length; i++) {
+ var curNode = startElement.childNodes[i];
+ if (curNode.nodeName == "LI") {
+ flipIDCur++;
+ curNode.flipID = flipIDCur;
+
+ var nodeHasChildren = curNode.getElementsByTagName("UL").length > 0;
+ if (nodeHasChildren) {
+ if (flipImages && curNode.flipClosed) curNode.style.listStyleImage = "url(" + curNode.flipClosed + ")";
+
+ if (curNode.className == null || curNode.className == "") curNode.className = "flipFolderClosed";
+ } else {
+ curNode.className = "flipStatic";
+ if (flipImages && !curNode.style.listStyleImage) {
+ if (!curNode.flipStatic) curNode.flipStatic = flipImg_static;
+ curNode.style.listStyleImage = "url(" + curNode.flipStatic + ")";
+ }
+ }
+
+ if (!curNode.flipOpen) curNode.flipOpen = flipImg_open;
+ if (!curNode.flipClosed) curNode.flipClosed = flipImg_closed;
+
+ if (curNode.flipIsOpen) openFlip(curNode);
+ }
+ }
+
+ startElement.initialised = true;
+}
+
+function rootOfFlip(flipID, startElement) {
+
+ function containsFlip(startElement, flipID) {
+ var flipFound = false;
+ var i = 0;
+ while (i < startElement.childNodes.length && !flipFound) {
+ var curNode = startElement.childNodes[i];
+ flipFound = (curNode.flipID == flipID) ? true : containsFlip(curNode, flipID);
+ i++;
+ }
+ return flipFound;
+ }
+
+ var rootFlip = null;
+
+ if (!startElement || !startElement.nodeName) {
+ var aUL = document.getElementsByTagName("UL");
+ var i = 0;
+ while (rootFlip == null && i < aUL.length) {
+ var curUL = aUL[i];
+ if (curUL.nodeName == "UL" && curUL.className == "flipMenu") rootFlip = rootOfFlip(flipID, curUL);
+ i++;
+ }
+ return rootFlip;
+ }
+
+ if (startElement.childNodes) for (var i = 0; i < startElement.childNodes.length; i++) {
+ var curNode = startElement.childNodes[i];
+ if (curNode.flipID == flipID || containsFlip(curNode, flipID)) rootFlip = curNode;
+ }
+
+ return rootFlip;
+}
+
+function getCookie(cookieName) {
+ var allCookies = document.cookie;
+ var indexStr = allCookies.indexOf(cookieName + "=");
+ if (indexStr == -1) return "";
+ indexStr = allCookies.indexOf("=", indexStr) + 1;
+ var endStr = allCookies.indexOf(";", indexStr);
+ if (endStr == -1) endStr = allCookies.length;
+ return unescape(allCookies.substring(indexStr, endStr));
+}
+
+function inArray(someID, someArray) {
+ for (var i = 0; i < someArray.length; i++) if (someArray[i] == someID) return true;
+ return false;
+}
+
+function getMenuState(startElement) {
+ if (!startElement.childNodes || startElement.childNodes.length == 0) return "";
+
+ var openItems = "";
+ var aUL = startElement.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curNode = aUL[i];
+ var parentFlip = (curNode.parentElement) ? curNode.parentElement : curNode.parentNode;
+ if (curNode.style.display == "" && parentFlip.flipID) openItems += " " + parentFlip.flipID;
+ }
+ return openItems;
+}
+
+function putMenuState(startElement) {
+ if (!startElement.childNodes || startElement.childNodes.length == 0) return false;
+
+ var aUL = startElement.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curNode = aUL[i];
+ var parentFlip = (curNode.parentElement) ? curNode.parentElement : curNode.parentNode;
+ if (inArray(parentFlip.flipID, aOpenItems)) {
+ openFlip(parentFlip);
+ if (typeof prevFlipRoot == "undefined") {
+ var testRoot = rootOfFlip(parentFlip.flipID);
+ if (testRoot.flipID == parentFlip.flipID) prevFlipRoot = testRoot;
+ }
+ }
+ }
+}
+function setMenuState(startElement) {
+ if (!startElement.childNodes || startElement.childNodes.length == 0) return false;
+
+ var aTitle = document.title;
+ aTitleParts = aTitle.split(" ");
+
+ var aUL = startElement.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curNode = aUL[i];
+ var parentFlip = (curNode.parentElement) ? curNode.parentElement : curNode.parentNode;
+ if (aTitleParts[3] == curNode.content) {
+ openFlip(parentFlip);
+ if (typeof prevFlipRoot == "undefined") {
+ var testRoot = rootOfFlip(parentFlip.flipID);
+ if (testRoot.flipID == parentFlip.flipID) prevFlipRoot = testRoot;
+ }
+ }
+ }
+}
+function saveMenuState() {
+ if (flipSaveMenuState) {
+ var aUL = document.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curUL = aUL[i];
+ var curID = curUL.id ? curUL.id : i;
+ if (curUL.className == "flipMenu") document.cookie = cookiePrefix + curID + "=" + getMenuState(curUL) + ";";
+ }
+ }
+}
+
+function loadMenuState() {
+ if(constantState) {
+ var aUL = document.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curUL = aUL[i];
+ var curID = curUL.id ? curUL.id : i;
+ if (curUL.className == "flipMenu") {
+ setMenuState(curUL);
+ }
+ }
+ } else {
+ var aUL = document.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curUL = aUL[i];
+ var curID = curUL.id ? curUL.id : i;
+ if (curUL.className == "flipMenu") {
+ var savedState = String(getCookie(cookiePrefix + curID));
+ if (savedState != "") {
+ aOpenItems = savedState.split(" ");
+ putMenuState(curUL);
+ }
+ }
+ }
+
+ addEvent(window, "unload", saveMenuState);
+ }
+}
+
+
+function clearMenuState(flipMenuID) {
+ if (typeof flipMenuID == "undefined") {
+ var aUL = document.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curUL = aUL[i];
+ var curID = curUL.id ? curUL.id : i;
+ if (curUL.className == "flipMenu") document.cookie = cookiePrefix + curID + "=;";
+ }
+ } else document.cookie = cookiePrefix + flipMenuID + "=;";
+}
+
+cookiePrefix = document.location.pathname + "_";
+
+addEvent(document, "click", toggleFlip);
+if (flipInitOnLoad) addEvent(window, "load", initFlip);
diff --git a/lib/erl_docgen/priv/nyi.html b/lib/erl_docgen/priv/nyi.html
new file mode 100644
index 0000000000..b948034174
--- /dev/null
+++ b/lib/erl_docgen/priv/nyi.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <title>Not Yet Implemented</title>
+ </head>
+
+ <body>
+ <h1>Not Yet Implemented</h1>
+
+ <p>This page is not yet generated.</p>
+
+
+ <hr>
+
+ </body>
+</html>
diff --git a/lib/erl_docgen/priv/xsl/Makefile b/lib/erl_docgen/priv/xsl/Makefile
new file mode 100644
index 0000000000..92a53b8c0b
--- /dev/null
+++ b/lib/erl_docgen/priv/xsl/Makefile
@@ -0,0 +1,80 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2009. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Application version
+# ----------------------------------------------------
+include ../../vsn.mk
+VSN=$(ERL_DOCGEN_VSN)
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/lib/erl_docgen-$(VSN)
+
+
+# ----------------------------------------------------
+# Target Specs
+# ----------------------------------------------------
+
+
+XSL_FILES = \
+ db_pdf.xsl \
+ db_pdf_params.xsl \
+ db_html.xsl \
+ db_html_params.xsl \
+ db_man.xsl
+
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+debug opt:
+
+docs:
+
+clean:
+ $(RM) $(TARGET_FILES)
+
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+
+release_spec: opt
+ $(INSTALL_DIR) $(RELSYSDIR)/priv/xsl
+ $(INSTALL_DATA) $(XSL_FILES) $(RELSYSDIR)/priv/xsl
+
+
+release_docs_spec:
+
+
+release_tests_spec:
+
+
diff --git a/lib/erl_docgen/priv/xsl/db_html.xsl b/lib/erl_docgen/priv/xsl/db_html.xsl
new file mode 100644
index 0000000000..3e6f762870
--- /dev/null
+++ b/lib/erl_docgen/priv/xsl/db_html.xsl
@@ -0,0 +1,1486 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ #
+ # %CopyrightBegin%
+ #
+ # Copyright Ericsson AB 2009. All Rights Reserved.
+ #
+ # The contents of this file are subject to the Erlang Public License,
+ # Version 1.1, (the "License"); you may not use this file except in
+ # compliance with the License. You should have received a copy of the
+ # Erlang Public License along with this software. If not, it can be
+ # retrieved online at http://www.erlang.org/.
+ #
+ # Software distributed under the License is distributed on an "AS IS"
+ # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ # the License for the specific language governing rights and limitations
+ # under the License.
+ #
+ # %CopyrightEnd%
+
+ -->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fn="http://www.w3.org/2005/02/xpath-functions">
+
+ <xsl:include href="db_html_params.xsl"/>
+
+ <!-- Page layout -->
+ <xsl:template name="pagelayout">
+ <xsl:param name="chapnum"/>
+ <xsl:param name="curModule"/>
+ <html>
+ <head>
+ <link rel="stylesheet" href="{$topdocdir}/otp_doc.css" type="text/css"/>
+ <title>Erlang -- <xsl:value-of select="header/title"/></title>
+ </head>
+ <body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff" alink="#ff0000">
+
+ <div id="container">
+ <script id="js" type="text/javascript" language="JavaScript" src="{$topdocdir}/js/flipmenu/flipmenu.js"/>
+ <script id="js2" type="text/javascript" src="{$topdocdir}/js/erlresolvelinks.js"></script>
+ <!-- Generate menu -->
+ <xsl:call-template name="menu">
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ <xsl:with-param name="curModule" select="$curModule"/>
+ </xsl:call-template>
+
+ <div id="content">
+ <div class="innertube">
+
+ <!-- Insert the node-specific content -->
+ <xsl:call-template name="content">
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:call-template>
+ </div>
+
+ <div class="footer">
+ <hr/>
+ <p>
+ <xsl:value-of select="$copyright"/>
+ <xsl:value-of select="/book/header/copyright/year[1]"/>
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select="substring-after(substring-after($gendate, ' '), ' ')"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="/book/header/copyright/holder"/>
+ </p>
+ </div>
+
+ </div>
+ </div>
+
+ </body>
+ </html>
+ </xsl:template>
+
+
+ <!-- Content -->
+ <xsl:template name="content">
+ <xsl:param name="chapnum"/>
+
+ <xsl:variable name="lname"><xsl:value-of select="local-name()"/></xsl:variable>
+
+ <xsl:if test="$lname = 'releasenotes'">
+ <!-- .../part -->
+ <xsl:call-template name="releasenotes.content" />
+ </xsl:if>
+ <xsl:if test="$lname = 'part'">
+ <!-- .../part -->
+ <xsl:call-template name="part.content" />
+ </xsl:if>
+ <xsl:if test="$lname = 'chapter'">
+ <!-- .../part/chapter -->
+ <xsl:call-template name="chapter.content">
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$lname = 'application'">
+ <!-- .../application -->
+ <xsl:call-template name="app.content" />
+ </xsl:if>
+ <xsl:if test="$lname = 'erlref' or $lname = 'cref' or $lname= 'comref' or $lname= 'fileref' or $lname= 'appref'">
+ <!-- .../application/*ref -->
+ <xsl:comment> refpage </xsl:comment>
+ <xsl:call-template name="ref.content" />
+ </xsl:if>
+ </xsl:template>
+
+
+ <!-- Menu -->
+ <xsl:template name="menu">
+ <xsl:param name="chapnum"/>
+ <xsl:param name="curModule"/>
+ <xsl:if test="(local-name() = 'part') or ((local-name() = 'chapter') and ancestor::part)">
+ <!-- .../part or.../part/chapter -->
+ <xsl:call-template name="menu.ug">
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="(local-name() = 'application') or (local-name() = 'erlref')or (local-name() = 'comref')or (local-name() = 'cref')or (local-name() = 'fileref')or (local-name() = 'appref')">
+ <!-- .../application,.../application/erlref, .../application/comref or .../application/cref or .../application/fileref or .../application/appref -->
+ <xsl:call-template name="menu.ref">
+ <xsl:with-param name="curModule" select="$curModule"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="(local-name() = 'releasenotes') or ((local-name() = 'chapter') and ancestor::releasenotes)">
+ <!-- releasenotes -->
+ <xsl:call-template name="menu.rn">
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+
+ <xsl:template name="menu_top">
+ <img alt="Erlang logo" src="{$topdocdir}/erlang-logo.png"/>
+ <br/>
+ <small>
+ <xsl:if test="boolean(/book/parts/part)">
+ <a href="users_guide.html">User's Guide</a><br/>
+ </xsl:if>
+ <xsl:if test="boolean(/book/applications)">
+ <a href="index.html">Reference Manual</a><br/>
+ </xsl:if>
+ <xsl:if test="boolean(/book/releasenotes)">
+ <a href="release_notes.html">Release Notes</a><br/>
+ </xsl:if>
+ <a href="{$pdfdir}/{$appname}-{$appver}.pdf">PDF</a><br/>
+ <a href="{$topdocdir}/index.html">Top</a>
+ </small>
+ </xsl:template>
+
+ <xsl:template name="menu_middle">
+ <!-- small>
+ <xsl:choose>
+ <xsl:when test="ancestor::parts">
+ <a href="users_guide_bibliography.html">Bibliography</a><br/>
+ <a href="users_guide_glossary.html">Glossary</a><br/>
+ </xsl:when>
+ <xsl:when test="ancestor::applications">
+ <a href="ref_man_bibliography.html">Bibliography</a><br/>
+ <a href="ref_man_glossary.html">Glossary</a><br/>
+ </xsl:when>
+ </xsl:choose>
+ </small -->
+ <br/>
+
+ <a href="javascript:openAllFlips()">Expand All</a><br/>
+ <a href="javascript:closeAllFlips()">Contract All</a>
+ </xsl:template>
+
+
+ <!-- Book -->
+ <xsl:template match="/book">
+
+ <xsl:apply-templates name="parts"/>
+ <xsl:apply-templates name="applications"/>
+
+ </xsl:template>
+
+ <!-- Parts -->
+ <xsl:template match="parts">
+ <xsl:apply-templates name="part"/>
+ </xsl:template>
+
+ <!-- Applications -->
+ <xsl:template match="applications">
+ <xsl:apply-templates name="application"/>
+ </xsl:template>
+
+
+ <!-- Header -->
+ <xsl:template match="header">
+ </xsl:template>
+
+ <!-- Section/Title -->
+ <xsl:template match="section/title">
+ </xsl:template>
+
+ <xsl:template match="pagetext">
+ </xsl:template>
+
+
+ <!-- Chapter/Section -->
+ <xsl:template match="chapter/section">
+ <xsl:param name="chapnum"/>
+ <h3>
+ <a name="{generate-id(title)}">
+ <xsl:value-of select="$chapnum"/>.<xsl:number/>&#160;
+ <xsl:value-of select="title"/>
+ </a>
+ </h3>
+ <xsl:apply-templates>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ <xsl:with-param name="sectnum"><xsl:number/></xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <!-- Chapter/Subsection -->
+ <xsl:template match="chapter/section/section">
+ <xsl:param name="chapnum"/>
+ <xsl:param name="sectnum"/>
+ <h4>
+ <!-- xsl:value-of select="$partnum"/>.<xsl:value-of select="$chapnum"/>.<xsl:value-of select="$sectnum"/>.<xsl:number/ -->
+ <xsl:value-of select="title"/>
+ </h4>
+ <xsl:apply-templates>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+
+
+ <!-- *ref/Section -->
+ <xsl:template match="erlref/section|cref/section|comref/section|fileref/section|appref/section">
+ <xsl:param name="chapnum"/>
+ <h3>
+ <a name="{generate-id(title)}">
+ <xsl:value-of select="title"/>
+ </a>
+ </h3>
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+ <!-- *ref/Subsection -->
+ <xsl:template match="erlref/section/section|cref/section/section|comref/section/section|fileref/section/section|appref/section/section">
+ <xsl:param name="chapnum"/>
+ <xsl:param name="sectnum"/>
+ <h4>
+ <xsl:value-of select="title"/>
+ </h4>
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+
+ <!-- Lists -->
+
+ <xsl:template match="list">
+ <xsl:param name="chapnum"/>
+ <ul>
+ <xsl:apply-templates>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:apply-templates>
+ </ul>
+ </xsl:template>
+
+ <xsl:template match="list/item">
+ <xsl:param name="chapnum"/>
+ <li>
+ <xsl:apply-templates>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:apply-templates>
+ </li>
+ </xsl:template>
+
+
+ <xsl:template match="taglist">
+ <xsl:param name="chapnum"/>
+ <dl>
+ <xsl:apply-templates>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:apply-templates>
+ </dl>
+ </xsl:template>
+
+ <xsl:template match="taglist/tag">
+ <xsl:param name="chapnum"/>
+ <dt>
+ <strong>
+ <xsl:apply-templates/>
+ </strong>
+ </dt>
+ </xsl:template>
+
+
+ <xsl:template match="taglist/item">
+ <xsl:param name="chapnum"/>
+ <dd>
+ <xsl:apply-templates>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:apply-templates>
+ </dd>
+ </xsl:template>
+
+ <!-- Note -->
+ <xsl:template match="note">
+ <xsl:param name="chapnum"/>
+ <div class="note">
+ <div class="label">Note</div>
+ <div class="content">
+ <p>
+ <xsl:apply-templates>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:apply-templates>
+ </p>
+ </div>
+ </div>
+ </xsl:template>
+
+ <!-- Warning -->
+ <xsl:template match="warning">
+ <xsl:param name="chapnum"/>
+ <div class="warning">
+ <div class="label">Warning</div>
+ <div class="content">
+ <p>
+ <xsl:apply-templates>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:apply-templates>
+ </p>
+ </div>
+ </div>
+ </xsl:template>
+
+ <!-- Paragraph -->
+ <xsl:template match="p">
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:template>
+
+
+ <!-- Inline elements -->
+ <xsl:template match="b">
+ <strong><xsl:apply-templates/></strong>
+ </xsl:template>
+
+ <xsl:template match="br">
+ <br/>
+ </xsl:template>
+
+ <xsl:template match="c">
+ <span class="code"><xsl:apply-templates/></span>
+ </xsl:template>
+
+ <xsl:template match="em">
+ <strong><xsl:apply-templates/></strong>
+ </xsl:template>
+
+ <!-- Code -->
+ <xsl:template match="code">
+ <xsl:param name="chapnum"/>
+ <xsl:variable name="codenum">
+ <xsl:number level="any" from="chapter" count="code"/>
+ </xsl:variable>
+ <div class="example"><pre><xsl:apply-templates/></pre></div>
+ </xsl:template>
+
+ <!-- Pre -->
+ <xsl:template match="pre">
+ <xsl:param name="chapnum"/>
+ <xsl:variable name="codenum">
+ <xsl:number level="any" from="chapter" count="code"/>
+ </xsl:variable>
+ <div class="example"><pre><xsl:apply-templates/></pre></div>
+ </xsl:template>
+
+
+ <!-- Table -->
+ <xsl:template match="table">
+ <xsl:param name="chapnum"/>
+ <xsl:variable name="tabnum">
+ <xsl:number level="any" from="chapter" count="table"/>
+ </xsl:variable>
+ <table border="1" cellpadding="2" cellspacing="0">
+ <!-- tbody-->
+ <xsl:apply-templates select="row">
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ <xsl:with-param name="tabnum" select="$tabnum"/>
+ </xsl:apply-templates>
+ <!-- /tbody-->
+ </table>
+ <xsl:apply-templates select="tcaption">
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ <xsl:with-param name="tabnum" select="$tabnum"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <xsl:template match="row">
+ <tr>
+ <xsl:apply-templates/>
+ </tr>
+ </xsl:template>
+
+ <xsl:template match="cell">
+ <td align="left" valign="middle">
+ <xsl:apply-templates/>
+ </td>
+ </xsl:template>
+
+
+ <xsl:template match="tcaption">
+ <xsl:param name="chapnum"/>
+ <xsl:param name="tabnum"/>
+
+ <em>Table
+ <xsl:value-of select="$chapnum"/>.<xsl:value-of select="$tabnum"/>:
+ &#160;
+ <xsl:apply-templates/>
+ </em>
+
+ </xsl:template>
+
+ <!-- Image -->
+ <xsl:template match="image">
+ <xsl:param name="chapnum"/>
+ <xsl:variable name="fignum">
+ <xsl:number level="any" from="chapter" count="image"/>
+ </xsl:variable>
+
+ <img alt="IMAGE MISSING" src="{@file}"/><br/>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ <xsl:with-param name="fignum" select="$fignum"/>
+ </xsl:apply-templates>
+
+
+ </xsl:template>
+
+
+ <xsl:template match="icaption">
+ <xsl:param name="chapnum"/>
+ <xsl:param name="fignum"/>
+
+ <em>Figure
+ <xsl:value-of select="$chapnum"/>.<xsl:value-of select="$fignum"/>:
+ &#160;
+ <xsl:apply-templates/>
+ </em>
+
+ </xsl:template>
+
+
+
+
+ <!--Users Guide -->
+
+ <!-- Part -->
+ <xsl:template match="part">
+ <!-- Generate Glossary for Users Guide -->
+ <!--xsl:call-template name="glossary">
+ <xsl:with-param name="type">users_guide</xsl:with-param>
+ </xsl:call-template-->
+
+ <!-- Generate Bibliography for Users Guide -->
+ <!--xsl:call-template name="bibliography">
+ <xsl:with-param name="type">users_guide</xsl:with-param>
+ </xsl:call-template-->
+
+ <xsl:document href="{$outdir}/users_guide.html" method="html" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN">
+ <xsl:call-template name="pagelayout"/>
+ </xsl:document>
+ </xsl:template>
+
+
+ <!-- Part content-->
+ <xsl:template name="part.content">
+ <div class="frontpage"/>
+
+ <center><h1><xsl:value-of select="/book/header/title"/> User's Guide</h1></center>
+
+ <center><h4>Version <xsl:value-of select="$appver"/></h4></center>
+ <center><h4><xsl:value-of select="$gendate"/></h4></center>
+
+ <xsl:apply-templates select="chapter"/>
+
+ </xsl:template>
+
+ <!-- Menu.ug -->
+ <xsl:template name="menu.ug">
+ <xsl:param name="chapnum"/>
+
+ <div id="leftnav">
+ <div class="innertube">
+
+ <xsl:call-template name="menu_top"/>
+
+ <p>
+ <strong><xsl:value-of select="/book/header/title"/></strong><br/>
+ <strong>User's Guide</strong><br/>
+ <small>Version <xsl:value-of select="$appver"/></small>
+ </p>
+
+ <xsl:call-template name="menu_middle"/>
+
+ <p>
+ <small>
+ <strong>Chapters</strong>
+ </small>
+ </p>
+
+ <ul class="flipMenu" imagepath="{$topdocdir}/js/flipmenu">
+ <xsl:call-template name="menu.chapter">
+ <xsl:with-param name="entries" select="/book/parts/part/chapter[header/title]"/>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:call-template>
+ </ul>
+ </div>
+ </div>
+ </xsl:template>
+
+
+ <xsl:template name="menu.chapter">
+ <xsl:param name="entries"/>
+ <xsl:param name="chapnum"/>
+ <xsl:for-each select="$entries">
+ <xsl:variable name="chapter_file">
+ <xsl:value-of select='substring-before(header/file, ".xml")'/>
+ </xsl:variable>
+ <xsl:variable name="curchapnum"><xsl:number/></xsl:variable>
+ <xsl:variable name="expanded">
+ <xsl:choose>
+ <xsl:when test="$chapnum = $curchapnum">true</xsl:when>
+ <xsl:otherwise>false</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <li title="{header/title}" expanded="{$expanded}">
+ <xsl:value-of select="header/title"/>
+ <ul>
+ <li>
+ <a href="{$chapter_file}.html">
+ Top of chapter
+ </a>
+ </li>
+ <xsl:call-template name="menu.section">
+ <xsl:with-param name="entries"
+ select="section[title]"/>
+ <xsl:with-param name="chapter_file"><xsl:value-of select="$chapter_file"/></xsl:with-param>
+ </xsl:call-template>
+ </ul>
+ </li>
+ </xsl:for-each>
+ </xsl:template>
+
+
+ <xsl:template name="menu.section">
+ <xsl:param name="entries"/>
+ <xsl:param name="chapter_file"/>
+ <xsl:for-each select="$entries">
+ <li title="{title}">
+ <a href="{$chapter_file}.html#{generate-id(title)}">
+ <xsl:value-of select="title"/>
+ </a>
+ </li>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- Chapter (if top tag)-->
+ <xsl:template match="/chapter">
+
+ <xsl:document href="{substring-before(header/file, '.xml')}.html" method="html" encoding="UTF-8" indent="yes"
+ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN">
+
+ <xsl:call-template name="pagelayout">
+ <xsl:with-param name="chapnum"><xsl:number/></xsl:with-param>
+ </xsl:call-template>
+ </xsl:document>
+ </xsl:template>
+
+ <!-- Chapter -->
+ <xsl:template match="chapter">
+
+ <xsl:document href="{substring-before(header/file, '.xml')}.html" method="html" encoding="UTF-8" indent="yes"
+ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN">
+
+ <xsl:call-template name="pagelayout">
+ <xsl:with-param name="chapnum"><xsl:number/></xsl:with-param>
+ </xsl:call-template>
+ </xsl:document>
+ </xsl:template>
+
+
+ <!-- Chapter content-->
+ <xsl:template name="chapter.content">
+ <xsl:param name="chapnum"/>
+
+ <!-- center-->
+ <h1>
+ <xsl:value-of select="$chapnum"/>&#160;<xsl:value-of select="header/title"/>
+ </h1>
+ <!-- /center-->
+
+ <xsl:apply-templates>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+
+
+
+ <!-- Reference Manual -->
+
+ <!-- Application -->
+ <xsl:template match="application">
+
+ <!-- Generate Glossary for Ref. Manual -->
+ <!--xsl:call-template name="glossary">
+ <xsl:with-param name="type">ref_man</xsl:with-param>
+ </xsl:call-template-->
+
+ <!-- Generate Bibliography for Ref. Manual -->
+ <!--xsl:call-template name="bibliography">
+ <xsl:with-param name="type">ref_man</xsl:with-param>
+ </xsl:call-template-->
+
+
+ <xsl:document href="{$outdir}/index.html" method="html" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN">
+
+ <xsl:call-template name="pagelayout"/>
+ </xsl:document>
+ </xsl:template>
+
+
+ <!-- Application content-->
+ <xsl:template name="app.content">
+ <div class="frontpage"/>
+
+ <center><h1><xsl:value-of select="/book/header/title"/> Reference Manual</h1></center>
+
+ <center><h4>Version <xsl:value-of select="$appver"/></h4></center>
+ <center><h4><xsl:value-of select="$gendate"/></h4></center>
+
+ <xsl:apply-templates select="erlref|cref|comref|fileref|appref"/>
+
+ </xsl:template>
+
+ <!-- Menu.ref -->
+ <xsl:template name="menu.ref">
+ <xsl:param name="$curModule"/>
+ <div id="leftnav">
+ <div class="innertube">
+
+ <xsl:call-template name="menu_top"/>
+
+ <p>
+ <strong><xsl:value-of select="/book/header/title"/></strong><br/>
+ <strong>Reference Manual</strong><br/>
+ <small>Version <xsl:value-of select="$appver"/></small>
+ </p>
+
+ <xsl:call-template name="menu_middle"/>
+
+ <p>
+ <small>
+ <strong>Table of Contents</strong>
+ </small>
+ </p>
+
+ <ul class="flipMenu">
+ <xsl:call-template name="menu.ref2">
+ <xsl:with-param name="entries" select="/book/applications/application/erlref[module]|/book/applications/application/cref[lib]|/book/applications/application/comref[com]|/book/applications/application/fileref[file]|/book/applications/application/appref[app]"/>
+ <!--xsl:with-param name="genFuncMenu" select="true"/-->
+ <xsl:with-param name="curModule" select="$curModule"/>
+ </xsl:call-template>
+ </ul>
+ </div>
+ </div>
+ </xsl:template>
+
+
+ <xsl:template name="menu.ref2">
+ <xsl:param name="entries"/>
+ <!--xsl:param name="genFuncMenu"/-->
+ <xsl:param name="curModule"/>
+ <xsl:for-each select="$entries">
+
+ <xsl:variable name="cval">
+ <xsl:choose>
+ <xsl:when test="local-name() = 'erlref'">
+ <xsl:value-of select="module"/>
+ </xsl:when>
+ <xsl:when test="local-name() = 'cref'">
+ <xsl:value-of select="lib"/>
+ </xsl:when>
+ <xsl:when test="local-name() = 'comref'">
+ <xsl:value-of select="com"/>
+ </xsl:when>
+ <xsl:when test="local-name() = 'fileref'">
+ <xsl:value-of select="file"/>
+ </xsl:when>
+ <xsl:when test="local-name() = 'appref'">
+ <xsl:value-of select="app"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="genFuncMenu">
+ <xsl:choose>
+ <xsl:when test="local-name() = 'comref'">false</xsl:when>
+ <xsl:when test="local-name() = 'appref'">false</xsl:when>
+ <xsl:when test="local-name() = 'fileref'">false</xsl:when>
+ <xsl:when test="descendant::funcs">true</xsl:when>
+ <xsl:otherwise>false</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="expanded">
+ <xsl:choose>
+ <xsl:when test="$curModule = $cval">true</xsl:when>
+ <xsl:otherwise>false</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="link_cval"><xsl:value-of select="translate($cval, '&#173;', '')"/></xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$genFuncMenu = 'true'">
+
+ <li title="{$cval} " expanded="{$expanded}">
+ <xsl:value-of select="$cval"/>
+ <ul>
+ <li>
+ <a href="{$link_cval}.html">
+ Top of manual page
+ </a>
+ </li>
+ <xsl:call-template name="menu.funcs">
+ <xsl:with-param name="entries"
+ select="funcs/func/name"/>
+ <xsl:with-param name="basename"><xsl:value-of select="$link_cval"/></xsl:with-param>
+ </xsl:call-template>
+ </ul>
+ </li>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="local-name() = 'appref'">
+ <li title="{$cval} (App)">
+ <a href="{$link_cval}_app.html">
+ <xsl:value-of select="$cval"/> (App)
+ </a>
+ </li>
+ </xsl:when>
+ <xsl:otherwise>
+ <li title="{$cval}">
+ <a href="{$link_cval}.html">
+ <xsl:value-of select="$cval"/>
+ </a>
+ </li>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:template>
+
+
+ <xsl:template name="menu.funcs">
+ <xsl:param name="entries"/>
+ <xsl:param name="basename"/>
+
+ <xsl:for-each select="$entries">
+
+ <xsl:choose>
+ <xsl:when test="ancestor::cref">
+ <xsl:variable name="fname"><xsl:value-of select="substring-before(nametext, '(')"/></xsl:variable>
+ <xsl:choose>
+ <xsl:when test="string-length($fname) > 0">
+ <li title="{$fname}">
+ <a href="{$basename}.html#{$fname}">
+ <xsl:value-of select="$fname"/>()
+ </a>
+ </li>
+ </xsl:when>
+ <xsl:otherwise>
+ <li title="{name/nametext}">
+ <a href="{$basename}.html#{name/nametext}">
+ <xsl:value-of select="nametext"/>()
+ </a>
+ </li>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="ancestor::erlref">
+
+ <xsl:variable name="tmpstring">
+ <xsl:value-of select="substring-before(substring-after(., '('), '->')"/>
+ </xsl:variable>
+
+ <xsl:variable name="ustring">
+ <xsl:choose>
+ <xsl:when test="string-length($tmpstring) > 0">
+ <xsl:call-template name="remove-paren">
+ <xsl:with-param name="string" select="$tmpstring"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="remove-paren">
+ <xsl:with-param name="string" select="substring-after(., '(')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="arity">
+ <xsl:call-template name="calc-arity">
+ <xsl:with-param name="string" select="substring-before($ustring, ')')"/>
+ <xsl:with-param name="no-of-pars" select="0"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="fname">
+ <xsl:value-of select="substring-before(., '(')"/>
+ </xsl:variable>
+ <li title="{$fname}-{$arity}">
+ <a href="{$basename}.html#{$fname}-{$arity}">
+ <xsl:value-of select="$fname"/>/<xsl:value-of select="$arity"/>
+ </a>
+ </li>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:for-each>
+ </xsl:template>
+
+
+ <!-- Erlref -->
+ <xsl:template match="erlref">
+
+ <xsl:variable name="filename"><xsl:value-of select="translate(module, '&#173;', '')"/></xsl:variable>
+
+ <xsl:document href="{$filename}.html" method="html" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN">
+
+ <xsl:call-template name="pagelayout">
+ <xsl:with-param name="curModule" select="module"/>
+ </xsl:call-template>
+ </xsl:document>
+ </xsl:template>
+
+ <!-- Cref -->
+ <xsl:template match="cref">
+
+ <xsl:document href="{lib}.html" method="html" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN">
+
+ <xsl:call-template name="pagelayout">
+ <xsl:with-param name="curModule" select="lib"/>
+ </xsl:call-template>
+ </xsl:document>
+ </xsl:template>
+
+ <!-- Comref -->
+ <xsl:template match="comref">
+
+ <xsl:document href="{com}.html" method="html" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN">
+
+ <xsl:call-template name="pagelayout">
+ <xsl:with-param name="curModule" select="com"/>
+ </xsl:call-template>
+ </xsl:document>
+ </xsl:template>
+
+ <!-- Fileref -->
+ <xsl:template match="fileref">
+
+ <xsl:document href="{file}.html" method="html" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN">
+
+ <xsl:call-template name="pagelayout">
+ <xsl:with-param name="curModule" select="file"/>
+ </xsl:call-template>
+ </xsl:document>
+ </xsl:template>
+
+ <!-- Appref -->
+ <xsl:template match="appref">
+
+ <xsl:document href="{app}_app.html" method="html" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN">
+
+ <xsl:call-template name="pagelayout">
+ <xsl:with-param name="curModule" select="app"/>
+ </xsl:call-template>
+ </xsl:document>
+ </xsl:template>
+
+ <!-- *ref content-->
+ <xsl:template name="ref.content">
+ <xsl:param name="partnum"/>
+
+ <center>
+ <h1>
+ <xsl:choose>
+ <xsl:when test="local-name() = 'erlref'">
+ <xsl:value-of select="module"/>
+ </xsl:when>
+ <xsl:when test="local-name() = 'cref'">
+ <xsl:value-of select="lib"/>
+ </xsl:when>
+ <xsl:when test="local-name() = 'comref'">
+ <xsl:value-of select="com"/>
+ </xsl:when>
+ <xsl:when test="local-name() = 'fileref'">
+ <xsl:value-of select="file"/>
+ </xsl:when>
+ <xsl:when test="local-name() = 'appref'">
+ <xsl:value-of select="app"/>
+ </xsl:when>
+ </xsl:choose>
+ </h1>
+ </center>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+
+ <!-- Module -->
+ <xsl:template match="module">
+ <xsl:param name="partnum"/>
+ <h3>MODULE</h3>
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+
+ <!-- Modulesummary -->
+ <xsl:template match="modulesummary">
+ <xsl:param name="partnum"/>
+ <h3>MODULE SUMMARY</h3>
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+ <!-- Lib -->
+ <xsl:template match="lib">
+ <xsl:param name="partnum"/>
+ <h3>C LIBRARY</h3>
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+
+ <!-- Libsummary -->
+ <xsl:template match="libsummary">
+ <xsl:param name="partnum"/>
+ <h3>LIBRARY SUMMARY</h3>
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+ <!-- Com -->
+ <xsl:template match="com">
+ <xsl:param name="partnum"/>
+ <h3>COMMAND</h3>
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+
+ <!-- Comsummary -->
+ <xsl:template match="comsummary">
+ <xsl:param name="partnum"/>
+ <h3>COMMAND SUMMARY</h3>
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+ <!-- File -->
+ <xsl:template match="file">
+ <xsl:param name="partnum"/>
+ <h3>FILE</h3>
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+
+ <!-- Filesummary -->
+ <xsl:template match="filesummary">
+ <xsl:param name="partnum"/>
+ <h3>FILE SUMMARY</h3>
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+
+ <!-- App -->
+ <xsl:template match="app">
+ <xsl:param name="partnum"/>
+ <h3>APPLICATION</h3>
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+
+ <!-- Appsummary -->
+ <xsl:template match="appsummary">
+ <xsl:param name="partnum"/>
+ <h3>APPLICATION SUMMARY</h3>
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+ <!-- Description -->
+ <xsl:template match="description">
+ <xsl:param name="partnum"/>
+ <h3>DESCRIPTION</h3>
+ <div class="REFBODY">
+ <p>
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </p>
+ </div>
+ </xsl:template>
+
+ <!-- Funcs -->
+ <xsl:template match="funcs">
+
+ <h3>
+ <xsl:text>EXPORTS</xsl:text>
+ </h3>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+ <!-- Func -->
+ <xsl:template match="func">
+ <xsl:param name="partnum"/>
+
+ <p><xsl:apply-templates select="name"/></p>
+
+ <xsl:apply-templates select="fsummary|type|desc">
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+ <xsl:template match="name">
+
+ <xsl:variable name="tmpstring">
+ <xsl:value-of select="substring-before(substring-after(., '('), '->')"/>
+ </xsl:variable>
+
+ <xsl:variable name="ustring">
+ <xsl:choose>
+ <xsl:when test="string-length($tmpstring) > 0">
+ <xsl:call-template name="remove-paren">
+ <xsl:with-param name="string" select="$tmpstring"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="remove-paren">
+ <xsl:with-param name="string" select="substring-after(., '(')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="arity">
+ <xsl:call-template name="calc-arity">
+ <xsl:with-param name="string" select="substring-before($ustring, ')')"/>
+ <xsl:with-param name="no-of-pars" select="0"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="ancestor::cref">
+ <a name="{substring-before(nametext, '(')}"><span class="bold_code"><xsl:value-of select="ret"/><xsl:text> </xsl:text><xsl:value-of select="nametext"/></span></a><br/>
+ </xsl:when>
+ <xsl:when test="ancestor::erlref">
+ <a name="{substring-before(., '(')}-{$arity}"><span class="bold_code"><xsl:value-of select="."/></span></a><br/>
+ </xsl:when>
+ </xsl:choose>
+
+
+ </xsl:template>
+
+
+ <!-- Type -->
+ <xsl:template match="type">
+ <xsl:param name="partnum"/>
+
+ <div class="REFBODY"><p>Types:</p>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </div>
+
+ </xsl:template>
+
+
+ <!-- V -->
+ <xsl:template match="v">
+ <xsl:param name="partnum"/>
+ <div class="REFTYPES">
+ <span class="bold_code">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </span><br/>
+ </div>
+ </xsl:template>
+
+ <!-- D -->
+ <xsl:template match="d">
+ <xsl:param name="partnum"/>
+ <div class="REFBODY">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </div>
+ </xsl:template>
+
+ <!-- Desc -->
+ <xsl:template match="desc">
+ <div class="REFBODY">
+ <p>
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </p>
+ </div>
+ </xsl:template>
+
+
+ <!-- Fsummary -->
+ <xsl:template match="fsummary">
+ <!-- This tag is skipped for now. -->
+ </xsl:template>
+
+
+ <xsl:template match="input">
+ <span class="bold_code"><xsl:apply-templates/></span>
+ </xsl:template>
+
+ <xsl:template match="seealso">
+
+ <xsl:variable name="filepart"><xsl:value-of select="substring-before(@marker, '#')"/></xsl:variable>
+ <xsl:variable name="linkpart"><xsl:value-of select="translate(substring-after(@marker, '#'), '/', '-')"/></xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($filepart) > 0">
+ <xsl:variable name="modulepart"><xsl:value-of select="substring-before($filepart, ':')"/></xsl:variable>
+ <xsl:choose>
+ <xsl:when test="string-length($modulepart) > 0">
+ <xsl:variable name="filepart1"><xsl:value-of select="substring-after($filepart, ':')"/></xsl:variable>
+ <span class="bold_code"><a href="javascript:erlhref('{$topdocdir}/../','{$modulepart}','{$filepart1}.html#{$linkpart}');"><xsl:apply-templates/></a></span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="string-length($linkpart) > 0">
+ <span class="bold_code"><a href="{$filepart}.html#{$linkpart}"><xsl:apply-templates/></a></span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="bold_code"><a href="{$filepart}.html"><xsl:apply-templates/></a></span>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="string-length($linkpart) > 0">
+ <span class="bold_code"><a href="#{$linkpart}"><xsl:apply-templates/></a></span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="modulepart"><xsl:value-of select="substring-before(@marker, ':')"/></xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($modulepart) > 0">
+ <xsl:variable name="filepart1"><xsl:value-of select="substring-after(@marker, ':')"/></xsl:variable>
+ <span class="bold_code"><a href="javascript:erlhref('{$topdocdir}/../','{$modulepart}','{$filepart1}.html');"><xsl:apply-templates/></a></span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="bold_code"><a href="{@marker}.html"><xsl:apply-templates/></a></span>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+
+ <xsl:template match="url">
+ <span class="bold_code"><a href="{@href}"><xsl:apply-templates/></a></span>
+ </xsl:template>
+
+
+ <xsl:template match="marker">
+ <a name="{@id}"><xsl:apply-templates/></a>
+ </xsl:template>
+
+ <xsl:template match="term">
+ <xsl:value-of select="@id"/>
+ <!-- xsl:choose>
+ <xsl:when test="boolean(termdef)">
+ <xsl:choose>
+ <xsl:when test="ancestor::parts">
+ <a href="users_guide_glossary.html#{@id}"><xsl:value-of select="@id"/></a>
+ </xsl:when>
+ <xsl:when test="ancestor::applications">
+ <a href="ref_man_glossary.html#{@id}"><xsl:value-of select="@id"/></a>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{$topdocdir}/glossary.html#{@id}"><xsl:value-of select="@id"/></a>
+ </xsl:otherwise>
+ </xsl:choose -->
+ </xsl:template>
+
+ <xsl:template match="cite">
+ <xsl:value-of select="@id"/>
+ </xsl:template>
+
+
+ <!-- Release Notes -->
+ <xsl:template match="releasenotes">
+
+ <xsl:document href="{$outdir}/release_notes.html" method="html" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN">
+ <xsl:call-template name="pagelayout"/>
+ </xsl:document>
+ </xsl:template>
+
+ <!-- Rel notes content-->
+ <xsl:template name="releasenotes.content">
+ <div class="frontpage"/>
+
+ <center><h1><xsl:value-of select="/book/header/title"/> Release Notes</h1></center>
+
+ <center><h4>Version <xsl:value-of select="$appver"/></h4></center>
+ <center><h4><xsl:value-of select="$gendate"/></h4></center>
+
+ <xsl:apply-templates select="chapter"/>
+
+ </xsl:template>
+
+ <!-- Menu.rn -->
+ <xsl:template name="menu.rn">
+ <xsl:param name="chapnum"/>
+
+ <div id="leftnav">
+ <div class="innertube">
+
+ <xsl:call-template name="menu_top"/>
+
+ <p>
+ <strong><xsl:value-of select="/book/header/title"/></strong><br/>
+ <strong>Release Notes</strong><br/>
+ <small>Version <xsl:value-of select="$appver"/></small>
+ </p>
+
+ <xsl:call-template name="menu_middle"/>
+
+ <p>
+ <small>
+ <strong>Chapters</strong>
+ </small>
+ </p>
+
+ <ul class="flipMenu" imagepath="{$topdocdir}/js/flipmenu">
+ <xsl:call-template name="menu.chapter">
+ <xsl:with-param name="entries" select="/book/releasenotes/chapter[header/title]"/>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:call-template>
+ </ul>
+ </div>
+ </div>
+ </xsl:template>
+
+ <!-- Glossary -->
+ <xsl:template name="glossary">
+ <xsl:param name="type"/>
+ <xsl:document href="{$outdir}/{$type}_glossary.html" method="html" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+ <head>
+ <link rel="stylesheet" href="{$topdocdir}/otp_doc.css" type="text/css"/>
+ <title>Erlang Documentation -- <xsl:value-of select="header/title"/></title>
+ </head>
+ <body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff" alink="#ff0000">
+
+ <div id="container">
+ <script id="js" type="text/javascript" language="JavaScript" src="{$topdocdir}/js/flipmenu/flipmenu.js"/>
+ <script id="js2" type="text/javascript" src="{$topdocdir}/js/erlresolvelinks.js"></script>
+
+ <!-- Generate menu -->
+ <xsl:call-template name="menu"/>
+
+ <div id="content">
+ <div class="innertube">
+ <h1>Glossary</h1>
+ </div>
+
+ <dl>
+ <xsl:for-each select="descendant::term">
+ <xsl:sort select="@id"/>
+ <xsl:if test="boolean(termdef)">
+ <dt><a name="{@id}"><strong><xsl:value-of select="@id"/></strong></a></dt>
+ <dd><xsl:value-of select="termdef"/></dd>
+ </xsl:if>
+ </xsl:for-each>
+ </dl>
+
+ <div class="footer">
+ <hr/>
+ <p>
+ <xsl:value-of select="$copyright"/>
+ <xsl:value-of select="header/copyright/year[1]"/>
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select="header/copyright/year[2]"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="header/copyright/holder"/>
+ </p>
+ </div>
+
+ </div>
+ </div>
+
+ </body>
+ </html>
+
+ </xsl:document>
+ </xsl:template>
+
+ <!-- Bibliography -->
+ <xsl:template name="bibliography">
+
+ <xsl:param name="type"/>
+ <xsl:document href="{$outdir}/{$type}_bibliography.html" method="html" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+ <head>
+ <link rel="stylesheet" href="{$topdocdir}/otp_doc.css" type="text/css"/>
+ <title>Erlang Documentation -- <xsl:value-of select="header/title"/></title>
+ </head>
+ <body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff" alink="#ff0000">
+
+ <div id="container">
+ <script id="js" type="text/javascript" language="JavaScript" src="{$topdocdir}/js/flipmenu/flipmenu.js"/>
+ <script id="js2" type="text/javascript" src="{$topdocdir}/js/erlresolvelinks.js"></script>
+
+ <!-- Generate menu -->
+ <xsl:call-template name="menu"/>
+
+ <div id="content">
+ <div class="innertube">
+ <h1>Bibliography</h1>
+ </div>
+
+ <table>
+ <xsl:for-each select="descendant::cite">
+ <xsl:sort select="@id"/>
+ <xsl:if test="boolean(citedef)">
+ <tr>
+ <td><xsl:value-of select="@id"/></td>
+ <td><xsl:value-of select="citedef"/></td>
+ </tr>
+ </xsl:if>
+ </xsl:for-each>
+ </table>
+
+ <div class="footer">
+ <hr/>
+ <p>
+ <xsl:value-of select="$copyright"/>
+ <xsl:value-of select="header/copyright/year[1]"/>
+ <xsl:text>-</xsl:text>
+ <xsl:value-of select="header/copyright/year[2]"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="header/copyright/holder"/>
+ </p>
+ </div>
+
+ </div>
+ </div>
+
+ </body>
+ </html>
+
+ </xsl:document>
+ </xsl:template>
+
+
+ <!-- Special templates to calculate the arity of functions -->
+ <xsl:template name="calc-arity">
+ <xsl:param name="string"/>
+ <xsl:param name="no-of-pars"/>
+
+ <xsl:variable name="length">
+ <xsl:value-of select="string-length($string)"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$length > 0">
+ <xsl:call-template name="calc-arity">
+ <xsl:with-param name="string" select="substring-after($string, ',')"/>
+ <xsl:with-param name="no-of-pars" select="$no-of-pars+1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$no-of-pars"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="remove-paren">
+ <xsl:param name="string"/>
+
+ <xsl:variable name="bstring">
+ <xsl:value-of select="substring-before($string, '(')"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($bstring) > 0">
+ <xsl:variable name="astring">
+ <xsl:value-of select="substring-after($string, ')')"/>
+ </xsl:variable>
+ <xsl:variable name="retstring">
+ <xsl:call-template name="remove-paren">
+ <xsl:with-param name="string" select="$astring"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="concat($bstring, $retstring)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/lib/erl_docgen/priv/xsl/db_html_params.xsl b/lib/erl_docgen/priv/xsl/db_html_params.xsl
new file mode 100644
index 0000000000..2373200702
--- /dev/null
+++ b/lib/erl_docgen/priv/xsl/db_html_params.xsl
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ #
+ # %CopyrightBegin%
+ #
+ # Copyright Ericsson AB 2009. All Rights Reserved.
+ #
+ # The contents of this file are subject to the Erlang Public License,
+ # Version 1.1, (the "License"); you may not use this file except in
+ # compliance with the License. You should have received a copy of the
+ # Erlang Public License along with this software. If not, it can be
+ # retrieved online at http://www.erlang.org/.
+ #
+ # Software distributed under the License is distributed on an "AS IS"
+ # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ # the License for the specific language governing rights and limitations
+ # under the License.
+ #
+ # %CopyrightEnd%
+
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <!-- When using <code>, whitespaces should be preserved -->
+ <xsl:preserve-space elements="code"/>
+
+
+ <!-- Fixed strings -->
+ <xsl:variable name="companyname"><xsl:value-of select="header/copyright/holder"/></xsl:variable>
+ <xsl:variable name="copyright">Copyright &#169; </xsl:variable>
+
+
+
+</xsl:stylesheet>
diff --git a/lib/erl_docgen/priv/xsl/db_man.xsl b/lib/erl_docgen/priv/xsl/db_man.xsl
new file mode 100644
index 0000000000..c759a77496
--- /dev/null
+++ b/lib/erl_docgen/priv/xsl/db_man.xsl
@@ -0,0 +1,308 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ #
+ # %CopyrightBegin%
+ #
+ # Copyright Ericsson AB 2009. All Rights Reserved.
+ #
+ # The contents of this file are subject to the Erlang Public License,
+ # Version 1.1, (the "License"); you may not use this file except in
+ # compliance with the License. You should have received a copy of the
+ # Erlang Public License along with this software. If not, it can be
+ # retrieved online at http://www.erlang.org/.
+ #
+ # Software distributed under the License is distributed on an "AS IS"
+ # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ # the License for the specific language governing rights and limitations
+ # under the License.
+ #
+ # %CopyrightEnd%
+
+ -->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <xsl:preserve-space elements="code pre"/>
+ <xsl:strip-space elements="*"/>
+ <xsl:output method="text" encoding="UTF-8" indent="no"/>
+
+ <!-- Header -->
+ <xsl:template match="header">
+ </xsl:template>
+
+ <!-- Section/Title -->
+ <xsl:template match="section/title">
+ </xsl:template>
+
+ <!-- *ref/Section -->
+ <xsl:template match="erlref/section|comref/section|cref/section|fileref/section|appref/section">
+ <xsl:text>&#10;.RE&#10;</xsl:text>
+ <xsl:text>&#10;.SH "</xsl:text><xsl:value-of select="translate(title, 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/><xsl:text>"&#10;</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- *ref/Subsection -->
+ <xsl:template match="erlref/section/section|comref/section/section|cref/section/section|fileref/section/section|appref/section/section">
+ <xsl:text>&#10;.RE&#10;</xsl:text>
+ <xsl:text>&#10;.SS "</xsl:text><xsl:value-of select="title"/><xsl:text>"&#10;</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+
+ <!-- Lists -->
+
+ <xsl:template match="list">
+ <xsl:text>&#10;.RS 2&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;.RE&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="list/item">
+ <xsl:text>&#10;.TP 2&#10;</xsl:text>
+ <xsl:text>*&#10;</xsl:text>
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($content)"/>
+ <xsl:text>&#10;.br&#10;</xsl:text>
+ <xsl:text>&#10;.br&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="taglist">
+ <xsl:text>&#10;.RS 2&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;.RE&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="taglist/tag">
+ <xsl:text>&#10;.TP 4&#10;</xsl:text>
+ <xsl:text>.B&#10;</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="item/p">
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($content)"/>
+ <xsl:text>&#10;.br&#10;</xsl:text>
+ <xsl:text>&#10;.br&#10;</xsl:text>
+ </xsl:template>
+
+
+ <xsl:template match="taglist/item">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- Note -->
+ <xsl:template match="note">
+ <xsl:text>&#10;.TP 4&#10;.B&#10;Note:&#10;</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- Warning -->
+ <xsl:template match="warning">
+ <xsl:text>&#10;.TP 4&#10;.B&#10;Warning:&#10;</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="warning/p|note/p">
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($content)"/>
+ <xsl:text>&#10;.LP&#10;</xsl:text>
+ </xsl:template>
+
+
+ <!-- Paragraph -->
+ <xsl:template match="p">
+ <xsl:text>&#10;.LP&#10;</xsl:text>
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($content)"/>
+ </xsl:template>
+
+ <!-- Inline elements -->
+ <xsl:template match="b">
+ <xsl:text> \fB</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>\fR\&amp;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="br">
+ <xsl:text>&#10;.br&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="c">
+ <xsl:text> \fI</xsl:text><xsl:value-of select="text()"/><xsl:text>\fR\&amp;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="em">
+ <xsl:text> \fI</xsl:text><xsl:value-of select="text()"/><xsl:text>\fR\&amp;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="seealso">
+ <xsl:text> \fB</xsl:text><xsl:apply-templates/><xsl:text>\fR\&amp;</xsl:text>
+ </xsl:template>
+
+ <!-- Code -->
+ <xsl:template match="code">
+ <xsl:text>&#10;.nf&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;.fi&#10;</xsl:text>
+ </xsl:template>
+
+ <!-- Pre -->
+ <xsl:template match="pre">
+ <xsl:text>&#10;.nf&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;.fi&#10;</xsl:text>
+ </xsl:template>
+
+
+ <!-- Table -->
+ <xsl:template match="table">
+ </xsl:template>
+
+ <!--xsl:template match="row">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="cell">
+ <xsl:apply-templates/>
+ </xsl:template -->
+
+
+ <!-- Image -->
+ <xsl:template match="image">
+ </xsl:template>
+
+
+ <!-- Reference Manual -->
+
+ <!-- Application -->
+ <xsl:template match="application">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- Erlref -->
+ <xsl:template match="/erlref">
+ <xsl:text>.TH </xsl:text><xsl:value-of select="module"/><xsl:text> 3 "</xsl:text><xsl:value-of select="$appname"/><xsl:text> </xsl:text><xsl:value-of select="$appver"/><xsl:text>" "Ericsson AB" "Erlang Module Definition"&#10;</xsl:text>
+ <xsl:text>.SH MODULE&#10;</xsl:text>
+ <xsl:value-of select="module"/><xsl:text> \- </xsl:text><xsl:value-of select="modulesummary"/><xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- Comref -->
+ <xsl:template match="/comref">
+ <xsl:text>.TH </xsl:text><xsl:value-of select="com"/><xsl:text> 1 "</xsl:text><xsl:value-of select="$appname"/><xsl:text> </xsl:text><xsl:value-of select="$appver"/><xsl:text>" "Ericsson AB" "User Commands"&#10;</xsl:text>
+ <xsl:text>.SH NAME&#10;</xsl:text>
+ <xsl:value-of select="com"/><xsl:text> \- </xsl:text><xsl:value-of select="comsummary"/><xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- Cref -->
+ <xsl:template match="/cref">
+ <xsl:text>.TH </xsl:text><xsl:value-of select="lib"/><xsl:text> 3 "</xsl:text><xsl:value-of select="$appname"/><xsl:text> </xsl:text><xsl:value-of select="$appver"/><xsl:text>" "Ericsson AB" "C Library Functions"&#10;</xsl:text>
+ <xsl:text>.SH NAME&#10;</xsl:text>
+ <xsl:value-of select="lib"/><xsl:text> \- </xsl:text><xsl:value-of select="libsummary"/><xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- Fileref -->
+ <xsl:template match="/fileref">
+ <xsl:text>.TH </xsl:text><xsl:value-of select="file"/><xsl:text> 4 "</xsl:text><xsl:value-of select="$appname"/><xsl:text> </xsl:text><xsl:value-of select="$appver"/><xsl:text>" "Ericsson AB" "Files"&#10;</xsl:text>
+ <xsl:text>.SH NAME&#10;</xsl:text>
+ <xsl:value-of select="file"/><xsl:text> \- </xsl:text><xsl:value-of select="filesummary"/><xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- Appref -->
+ <xsl:template match="/appref">
+ <xsl:text>.TH </xsl:text><xsl:value-of select="app"/><xsl:text> 6 "</xsl:text><xsl:value-of select="$appname"/><xsl:text> </xsl:text><xsl:value-of select="$appver"/><xsl:text>" "Ericsson AB" "Erlang Application Definition"&#10;</xsl:text>
+ <xsl:text>.SH NAME&#10;</xsl:text>
+ <xsl:value-of select="file"/><xsl:text> \- </xsl:text><xsl:value-of select="filesummary"/><xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- Module|Com|Lib|File|App-->
+ <xsl:template match="module|com|lib|file|app">
+ </xsl:template>
+
+ <!-- Modulesummary|Comsummary|Libsummary|Filesummary|Appsummary -->
+ <xsl:template match="modulesummary|comsummary|libsummary|filesummary|appsummary">
+ </xsl:template>
+
+ <!-- Description -->
+ <xsl:template match="description">
+ <xsl:text>.SH DESCRIPTION</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- Funcs -->
+ <xsl:template match="funcs">
+ <xsl:text>&#10;.SH EXPORTS</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!-- Func -->
+ <xsl:template match="func">
+ <xsl:text>&#10;.LP</xsl:text>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="name">
+ <xsl:text>&#10;.B&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;.br</xsl:text>
+ </xsl:template>
+
+
+ <!-- Type -->
+ <xsl:template match="type">
+ <xsl:text>&#10;.RS</xsl:text>
+ <xsl:text>&#10;.TP</xsl:text>
+ <xsl:text>&#10;Types</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;.RE</xsl:text>
+ </xsl:template>
+
+
+ <!-- V -->
+ <xsl:template match="v">
+ <xsl:text>&#10;</xsl:text><xsl:value-of select="normalize-space(text())"/>
+ <xsl:text>&#10;.br</xsl:text>
+ </xsl:template>
+
+ <!-- D -->
+ <xsl:template match="d">
+ <xsl:text>&#10;</xsl:text><xsl:apply-templates/>
+ <xsl:text>&#10;.br</xsl:text>
+ </xsl:template>
+
+ <!-- Desc -->
+ <xsl:template match="desc">
+ <xsl:text>&#10;.RS</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;.RE</xsl:text>
+ </xsl:template>
+
+
+ <!-- Fsummary -->
+ <xsl:template match="fsummary">
+ <!-- This tag is skipped for now. -->
+ </xsl:template>
+
+ <!-- xsl:template match="p/text()">
+ <xsl:value-of select="normalize-space()"/>
+ </xsl:template-->
+
+ <xsl:template match="d/text()">
+ <xsl:value-of select="normalize-space()"/>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/lib/erl_docgen/priv/xsl/db_pdf.xsl b/lib/erl_docgen/priv/xsl/db_pdf.xsl
new file mode 100644
index 0000000000..bef86277ea
--- /dev/null
+++ b/lib/erl_docgen/priv/xsl/db_pdf.xsl
@@ -0,0 +1,1129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ #
+ # %CopyrightBegin%
+ #
+ # Copyright Ericsson AB 2009. All Rights Reserved.
+ #
+ # The contents of this file are subject to the Erlang Public License,
+ # Version 1.1, (the "License"); you may not use this file except in
+ # compliance with the License. You should have received a copy of the
+ # Erlang Public License along with this software. If not, it can be
+ # retrieved online at http://www.erlang.org/.
+ #
+ # Software distributed under the License is distributed on an "AS IS"
+ # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ # the License for the specific language governing rights and limitations
+ # under the License.
+ #
+ # %CopyrightEnd%
+
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format">
+
+ <xsl:output method="xml" indent="yes"/>
+
+ <xsl:include href="db_pdf_params.xsl"/>
+
+
+ <xsl:template match="/">
+ <xsl:apply-templates select="book"/>
+ </xsl:template>
+
+
+ <xsl:template match="book">
+ <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+
+ <!-- Master pages -->
+ <fo:layout-master-set>
+ <fo:simple-page-master
+ master-name="cover"
+ margin="25mm">
+ <xsl:attribute name="page-height">
+ <xsl:value-of select="$page-height"/>
+ </xsl:attribute>
+ <xsl:attribute name="page-width">
+ <xsl:value-of select="$page-width"/>
+ </xsl:attribute>
+ <fo:region-body
+ margin="0mm"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master
+ master-name="left-page"
+ margin-top="25mm"
+ margin-bottom="15mm"
+ margin-left="20mm"
+ margin-right="25mm">
+ <xsl:attribute name="page-height">
+ <xsl:value-of select="$page-height"/>
+ </xsl:attribute>
+ <xsl:attribute name="page-width">
+ <xsl:value-of select="$page-width"/>
+ </xsl:attribute>
+ <fo:region-body
+ margin-top="15mm"
+ margin-bottom="20mm"/>
+ <fo:region-before
+ region-name="left-header"
+ extent="10mm"/>
+ <fo:region-after
+ region-name="left-footer"
+ extent="10mm"/>
+ </fo:simple-page-master>
+
+ <fo:simple-page-master
+ master-name="right-page"
+ margin-top="25mm"
+ margin-bottom="15mm"
+ margin-left="25mm"
+ margin-right="20mm">
+ <xsl:attribute name="page-height">
+ <xsl:value-of select="$page-height"/>
+ </xsl:attribute>
+ <xsl:attribute name="page-width">
+ <xsl:value-of select="$page-width"/>
+ </xsl:attribute>
+ <fo:region-body
+ margin-top="15mm"
+ margin-bottom="20mm"/>
+ <fo:region-before
+ region-name="right-header"
+ extent="10mm"/>
+ <fo:region-after
+ region-name="right-footer"
+ extent="10mm"/>
+ </fo:simple-page-master>
+
+
+ <fo:page-sequence-master master-name="document">
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference
+ master-reference="left-page"
+ odd-or-even="even"/>
+ <fo:conditional-page-master-reference
+ master-reference="right-page"
+ odd-or-even="odd"/>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </fo:layout-master-set>
+
+
+ <!-- Process bookmarks -->
+ <xsl:call-template name="bookmarks.tree"/>
+
+ <!-- Process cover page -->
+ <xsl:apply-templates select="header"/>
+
+ <!-- Process toc -->
+ <!-- xsl:call-template name="toc"/ -->
+
+ <fo:page-sequence
+ font-family="serif"
+ master-reference="document"
+ initial-page-number="1">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$base-font-size"/>
+ </xsl:attribute>
+
+ <fo:static-content flow-name="left-header">
+ <fo:block xsl:use-attribute-sets="page-header" text-align="start">
+ <fo:retrieve-marker
+ retrieve-boundary="page-sequence"
+ retrieve-class-name="chapter-title"
+ retrieve-position="first-including-carryover"/>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:static-content flow-name="right-header">
+ <fo:block xsl:use-attribute-sets="page-header" text-align="end">
+ <fo:retrieve-marker
+ retrieve-boundary="page-sequence"
+ retrieve-class-name="chapter-title"
+ retrieve-position="first-including-carryover"/>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:static-content flow-name="left-footer">
+ <fo:block xsl:use-attribute-sets="page-footer" text-align="start">
+ <fo:page-number/>
+ <xsl:text> | </xsl:text>
+ <xsl:value-of select="$companyname"/>:
+ <xsl:value-of select="/book/header/title"/>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:static-content flow-name="right-footer">
+ <fo:block xsl:use-attribute-sets="page-footer" text-align="end">
+ <xsl:value-of select="$companyname"/>:
+ <xsl:value-of select="/book/header/title"/>
+ <xsl:text> | </xsl:text>
+ <fo:page-number/>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>
+
+ </fo:block>
+ <xsl:apply-templates select="parts"/>
+
+ <xsl:apply-templates select="applications"/>
+
+ </fo:flow>
+
+ </fo:page-sequence>
+
+ </fo:root>
+
+ </xsl:template>
+
+
+ <!-- Header -->
+ <xsl:template match="book/header">
+ <xsl:apply-templates select="title"/>
+ </xsl:template>
+
+
+ <!-- Cover page -->
+ <xsl:template match="header/title">
+ <fo:page-sequence
+ font-family="sans-serif"
+ force-page-count="even"
+ master-reference="cover">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$base-font-size"/>
+ </xsl:attribute>
+
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block xsl:use-attribute-sets="cover.logo">
+ <fo:external-graphic src="{$docgen}/priv/images/erlang-logo.gif"/>
+ </fo:block>
+ <fo:block xsl:use-attribute-sets="cover.title" id="cover-page">
+ <xsl:apply-templates/>
+ </fo:block>
+ <fo:block xsl:use-attribute-sets="cover.copyright">
+ <xsl:value-of select="$copyright"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$companyname"/>
+ </fo:block>
+ <xsl:if test="/book/header/title">
+ <fo:block xsl:use-attribute-sets="cover.version">
+ <xsl:value-of select="/book/header/title"/>
+ <xsl:text> </xsl:text>
+ <!-- xsl:value-of select="/book/header/rev"/ -->
+ <xsl:value-of select="$appver"/>
+ </fo:block>
+ </xsl:if>
+ <fo:block xsl:use-attribute-sets="cover.version">
+ <xsl:value-of select="$gendate"/>
+ </fo:block>
+
+ <!-- Inner cover (copyright notice) -->
+ <fo:block break-before="page"
+ xsl:use-attribute-sets="cover.inner.copyright">
+ <xsl:value-of select="$copyright"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$companyname"/>
+ </fo:block>
+ <fo:block xsl:use-attribute-sets="cover.inner.copyrightnotice">
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is
+ <xsl:value-of select="$companyname"/>.
+ </fo:block>
+ <fo:block xsl:use-attribute-sets="cover.inner.date">
+ <xsl:value-of select="$gendate"/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+ </xsl:template>
+
+
+ <!-- Bookmarks -->
+ <xsl:template name="bookmarks.tree">
+ <fo:bookmark-tree>
+ <fo:bookmark internal-destination="cover-page"
+ starting-state="show">
+ <fo:bookmark-title>
+ <xsl:value-of select="/book/header/title"/>
+ </fo:bookmark-title>
+
+ <xsl:call-template name="bookmarks1">
+ <xsl:with-param name="entries" select="parts/part[header/title]"/>
+ </xsl:call-template>
+ <xsl:call-template name="bookmarks4">
+ <xsl:with-param name="entries" select="applications/application[header/title]"/>
+ </xsl:call-template>
+
+ </fo:bookmark>
+ </fo:bookmark-tree>
+ </xsl:template>
+
+
+ <!-- Users Guide Bookmarks -->
+
+ <xsl:template name="bookmarks1">
+ <xsl:param name="entries"/>
+ <xsl:if test="$entries != ''">
+
+ <fo:bookmark internal-destination="{generate-id(/book/parts/part)}"
+ starting-state="hide">
+ <fo:bookmark-title>User's Guide</fo:bookmark-title>
+
+ <xsl:for-each select="$entries">
+ <xsl:call-template name="bookmarks2">
+ <xsl:with-param name="entries"
+ select="chapter[header/title]"/>
+ </xsl:call-template>
+ </xsl:for-each>
+
+ </fo:bookmark>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="bookmarks2">
+ <xsl:param name="entries"/>
+ <xsl:for-each select="$entries">
+ <fo:bookmark internal-destination="{generate-id(header/title)}"
+ starting-state="hide">
+ <fo:bookmark-title>
+ <xsl:value-of select="header/title"/>
+ </fo:bookmark-title>
+
+ <xsl:call-template name="bookmarks3">
+ <xsl:with-param name="entries"
+ select="section[title]"/>
+ </xsl:call-template>
+
+ </fo:bookmark>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="bookmarks3">
+ <xsl:param name="entries"/>
+ <xsl:for-each select="$entries">
+ <fo:bookmark internal-destination="{generate-id(title)}"
+ starting-state="hide">
+ <fo:bookmark-title>
+ <xsl:value-of select="title"/>
+ </fo:bookmark-title>
+ <xsl:call-template name="bookmarks3">
+ <xsl:with-param name="entries"
+ select="section[title]"/>
+ </xsl:call-template>
+ </fo:bookmark>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- Ref. Manual Bookmarks -->
+
+ <xsl:template name="bookmarks4">
+ <xsl:param name="entries"/>
+
+ <xsl:if test="$entries != ''">
+ <fo:bookmark internal-destination="{generate-id(/book/applications/application)}"
+ starting-state="hide">
+ <fo:bookmark-title>Reference Manual</fo:bookmark-title>
+ <xsl:for-each select="$entries">
+
+ <xsl:call-template name="bookmarks5">
+ <xsl:with-param name="entries"
+ select="erlref[module]|comref[com]|cref[lib]|fileref[file]|appref[app]"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </fo:bookmark>
+ </xsl:if>
+ </xsl:template>
+
+
+ <xsl:template name="bookmarks5">
+ <xsl:param name="entries"/>
+ <xsl:for-each select="$entries">
+ <fo:bookmark internal-destination="{generate-id(module)}{generate-id(lib)}{generate-id(com)}{generate-id(file)}{generate-id(app)}"
+ starting-state="hide">
+ <fo:bookmark-title><xsl:value-of select="module"/><xsl:value-of select="lib"/><xsl:value-of select="com"/><xsl:value-of select="file"/><xsl:value-of select="app"/></fo:bookmark-title>
+ <!-- xsl:choose>
+ <xsl:when test="ancestor::erlref">
+ <xsl:value-of select="module"/>
+ </xsl:when>
+ <xsl:when test="ancestor::cref">
+ <xsl:value-of select="lib"/>
+ </xsl:when>
+ <xsl:when test="ancestor::comref">
+ <xsl:value-of select="com"/>
+ </xsl:when>
+ </xsl:choose>
+ </fo:bookmark-title -->
+ <xsl:call-template name="bookmarks6">
+ <xsl:with-param name="entries"
+ select="funcs/func/name"/>
+ </xsl:call-template>
+ </fo:bookmark>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="bookmarks6">
+ <xsl:param name="entries"/>
+ <xsl:for-each select="$entries">
+
+ <xsl:choose>
+ <xsl:when test="ancestor::cref">
+ <fo:bookmark internal-destination="{generate-id(nametext)}" starting-state="hide">
+ <xsl:variable name="fname"><xsl:value-of select="substring-before(nametext, '(')"/></xsl:variable>
+ <fo:bookmark-title>
+ <xsl:choose>
+ <xsl:when test="string-length($fname) > 0">
+ <xsl:value-of select="$fname"/>()
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="nametext"/>()
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:bookmark-title>
+ </fo:bookmark>
+ </xsl:when>
+ <xsl:when test="ancestor::erlref">
+ <fo:bookmark internal-destination="{generate-id(.)}" starting-state="hide">
+ <xsl:variable name="tmpstring">
+ <xsl:value-of select="substring-before(substring-after(., '('), '->')"/>
+ </xsl:variable>
+
+ <xsl:variable name="ustring">
+ <xsl:choose>
+ <xsl:when test="string-length($tmpstring) > 0">
+ <xsl:call-template name="remove-paren">
+ <xsl:with-param name="string" select="$tmpstring"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="remove-paren">
+ <xsl:with-param name="string" select="substring-after(., '(')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="arity">
+ <xsl:call-template name="calc-arity">
+ <xsl:with-param name="string" select="substring-before($ustring, ')')"/>
+ <xsl:with-param name="no-of-pars" select="0"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <fo:bookmark-title>
+ <xsl:value-of select="substring-before(., '(')"/>/<xsl:value-of select="$arity"/>
+ </fo:bookmark-title>
+ </fo:bookmark>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:for-each>
+ </xsl:template>
+
+
+ <!-- UG part -->
+
+ <!-- Parts -->
+ <xsl:template match="parts">
+ <xsl:apply-templates select="part"/>
+ </xsl:template>
+
+ <!-- Part -->
+ <xsl:template match="part">
+ <xsl:variable name="partnum"><xsl:number level="any" from="book" count="part|application"/></xsl:variable>
+
+ <fo:block xsl:use-attribute-sets="h1" id="{generate-id()}">
+ <xsl:value-of select="$partnum"/>&#160;&#160;&#160;
+ <xsl:text>User's Guide</xsl:text>
+ </fo:block>
+
+ <xsl:apply-templates select="description">
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="chapter">
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+
+ <!-- Chapter -->
+ <xsl:template match="chapter">
+ <xsl:param name="partnum"/>
+
+ <fo:block xsl:use-attribute-sets="h2" id="{generate-id(header/title)}">
+ <fo:marker marker-class-name="chapter-title">
+ <xsl:value-of select="$partnum"/>.<xsl:number/>&#160;&#160;<xsl:value-of select="header/title"/>
+ </fo:marker>
+ <xsl:value-of select="$partnum"/>.<xsl:number/>&#160;&#160;<xsl:value-of select="header/title"/>
+
+ </fo:block>
+
+ <xsl:apply-templates select="section|quote|warning|note|br|image|marker|table|p|pre|code|list|taglist|codeinclude|erleval">
+ <xsl:with-param name="partnum" select="$partnum"/>
+ <xsl:with-param name="chapnum"><xsl:number/></xsl:with-param>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+ <!-- Chapter/Section -->
+ <xsl:template match="chapter/section">
+ <xsl:param name="partnum"/>
+ <xsl:param name="chapnum"/>
+ <fo:block xsl:use-attribute-sets="h3" id="{generate-id(title)}">
+ <xsl:value-of select="$partnum"/>.<xsl:value-of select="$chapnum"/>.<xsl:number/>&#160;
+ <xsl:value-of select="title"/>
+ </fo:block>
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ <xsl:with-param name="sectnum"><xsl:number/></xsl:with-param>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+ <!-- Chapter/Subsection -->
+ <xsl:template match="chapter/section/section">
+ <xsl:param name="partnum"/>
+ <xsl:param name="chapnum"/>
+ <xsl:param name="sectnum"/>
+ <fo:block xsl:use-attribute-sets="h4" id="{generate-id(title)}">
+ <!-- xsl:value-of select="$partnum"/>.<xsl:value-of select="$chapnum"/>.<xsl:value-of select="$sectnum"/>.<xsl:number/ -->
+ <xsl:value-of select="title"/>
+ </fo:block>
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ <xsl:with-param name="sectnum" select="$sectnum"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+
+
+ <!-- *ref/Section -->
+ <xsl:template match="erlref/section|comref/section|cref/section|fileref/section|appref/section">
+ <xsl:param name="partnum"/>
+ <xsl:param name="chapnum"/>
+ <fo:block xsl:use-attribute-sets="h3" id="{generate-id(title)}">
+ <xsl:value-of select="title"/>
+ </fo:block>
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+ <!-- *ref/Subsection -->
+ <xsl:template match="erlref/section/section|comref/section/section|cref/section/section|fileref/section/section|appref/section/section">
+ <xsl:param name="partnum"/>
+ <xsl:param name="chapnum"/>
+ <xsl:param name="sectnum"/>
+ <fo:block xsl:use-attribute-sets="h4" id="{generate-id(title)}">
+ <xsl:value-of select="title"/>
+ </fo:block>
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <!-- Section/title -->
+ <xsl:template match="section/title">
+ </xsl:template>
+
+ <!-- Lists -->
+
+ <xsl:template match="list">
+ <xsl:param name="partnum"/>
+ <fo:list-block xsl:use-attribute-sets="listblock">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ <!-- xsl:apply-templates -->
+ <!-- xsl:with-param name="chapnum" select="$chapnum"/ -->
+ <!-- /xsl:apply-templates -->
+ </fo:list-block>
+ </xsl:template>
+
+ <xsl:template match="list/item">
+ <xsl:param name="partnum"/>
+ <fo:list-item xsl:use-attribute-sets="listitem">
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block>
+ &#x2022;
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()" format="justify">
+ <fo:block>
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ </xsl:template>
+
+
+ <xsl:template match="taglist">
+ <xsl:param name="partnum"/>
+ <fo:block xsl:use-attribute-sets="taglistblock">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:template>
+
+ <xsl:template match="taglist/tag">
+ <xsl:param name="partnum"/>
+ <fo:block xsl:use-attribute-sets="tag">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+
+ <xsl:template match="taglist/item">
+ <xsl:param name="partnum"/>
+ <fo:block xsl:use-attribute-sets="tagitem">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:template>
+
+
+ <!-- Note -->
+ <xsl:template match="note">
+ <xsl:param name="partnum"/>
+ <fo:block xsl:use-attribute-sets="note">
+ <fo:block xsl:use-attribute-sets="note-warning-title">
+ <xsl:text>Note:</xsl:text>
+ </fo:block>
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Warning -->
+ <xsl:template match="warning">
+ <xsl:param name="partnum"/>
+ <fo:block xsl:use-attribute-sets="warning">
+ <fo:block xsl:use-attribute-sets="note-warning-title">
+ <xsl:text>Warning:</xsl:text>
+ </fo:block>
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </xsl:template>
+
+
+ <!-- Paragraph -->
+ <xsl:template match="p">
+ <fo:block xsl:use-attribute-sets="p">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+
+ <!-- Inline elements -->
+ <xsl:template match="b">
+ <fo:inline font-weight="bold">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <xsl:template match="br">
+ <fo:block/>
+ </xsl:template>
+
+ <xsl:template match="c">
+ <fo:inline font-family="monospace">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <xsl:template match="em">
+ <fo:inline font-style="italic">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <!-- Code -->
+ <xsl:template match="code">
+ <xsl:param name="partnum"/>
+ <xsl:variable name="codenum">
+ <xsl:number level="any" from="part" count="code"/>
+ </xsl:variable>
+
+ <fo:block xsl:use-attribute-sets="code" margin-left="1.5em">
+ <xsl:apply-templates select="text()"/>
+ </fo:block>
+
+ <xsl:if test="@caption">
+ <fo:block xsl:use-attribute-sets="caption" margin-left="1.5em">
+ Code listing <xsl:value-of select="$partnum"/>.<xsl:value-of select="$codenum"/>:&#160;
+ <xsl:value-of select="@caption"/>
+ </fo:block>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Pre -->
+ <xsl:template match="pre">
+ <xsl:param name="partnum"/>
+ <xsl:variable name="codenum">
+ <xsl:number level="any" from="part" count="code"/>
+ </xsl:variable>
+
+ <fo:block xsl:use-attribute-sets="code" margin-left="1.5em">
+ <xsl:apply-templates/>
+ </fo:block>
+
+ <xsl:if test="@caption">
+ <fo:block xsl:use-attribute-sets="caption" margin-left="1.5em">
+ Code listing <xsl:value-of select="$partnum"/>.<xsl:value-of select="$codenum"/>:&#160;
+ <xsl:value-of select="@caption"/>
+ </fo:block>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Ref. manual part -->
+
+ <!-- Applications -->
+ <xsl:template match="applications">
+ <xsl:apply-templates select="application"/>
+ </xsl:template>
+
+ <!-- Application -->
+ <xsl:template match="application">
+ <xsl:variable name="partnum">
+ <xsl:number level="any" from="book" count="part|application"/>
+ </xsl:variable>
+
+ <fo:block xsl:use-attribute-sets="h1" id="{generate-id()}">
+ <xsl:if test="/book/header/title">
+ <xsl:value-of select="$partnum"/>&#160;&#160;&#160;
+ <xsl:text>Reference Manual</xsl:text>
+ </xsl:if>
+ </fo:block>
+
+
+ <xsl:apply-templates select="description">
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="erlref|comref|cref|fileref|appref">
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+ <!-- Erlref -->
+ <xsl:template match="erlref">
+ <xsl:param name="partnum"/>
+
+ <fo:block page-break-before="always" xsl:use-attribute-sets="module-header" id="{generate-id(module)}">
+ <fo:block xsl:use-attribute-sets="module-name">
+ <!-- Mark title for header printout -->
+ <fo:marker marker-class-name="chapter-title">
+ <xsl:value-of select="module"/>
+ </fo:marker>
+ <xsl:value-of select="module"/>
+ </fo:block>
+ <xsl:text>Erlang module</xsl:text>
+ </fo:block>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+ <!-- Comref -->
+ <xsl:template match="comref">
+ <xsl:param name="partnum"/>
+
+ <fo:block page-break-before="always" xsl:use-attribute-sets="module-header" id="{generate-id(com)}">
+ <fo:block xsl:use-attribute-sets="module-name">
+ <!-- Mark title for header printout -->
+ <fo:marker marker-class-name="chapter-title">
+ <xsl:value-of select="com"/>
+ </fo:marker>
+ <xsl:value-of select="com"/>
+ </fo:block>
+ <xsl:text>Command</xsl:text>
+ </fo:block>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+ <!-- Cref -->
+ <xsl:template match="cref">
+ <xsl:param name="partnum"/>
+
+ <fo:block page-break-before="always" xsl:use-attribute-sets="module-header" id="{generate-id(lib)}">
+ <fo:block xsl:use-attribute-sets="module-name">
+ <!-- Mark title for header printout -->
+ <fo:marker marker-class-name="chapter-title">
+ <xsl:value-of select="lib"/>
+ </fo:marker>
+ <xsl:value-of select="lib"/>
+ </fo:block>
+ <xsl:text>C Library</xsl:text>
+ </fo:block>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+ <!-- Fileref -->
+ <xsl:template match="fileref">
+ <xsl:param name="partnum"/>
+
+ <fo:block page-break-before="always" xsl:use-attribute-sets="module-header" id="{generate-id(file)}">
+ <fo:block xsl:use-attribute-sets="module-name">
+ <!-- Mark title for header printout -->
+ <fo:marker marker-class-name="chapter-title">
+ <xsl:value-of select="file"/>
+ </fo:marker>
+ <xsl:value-of select="file"/>
+ </fo:block>
+ <xsl:text>Name</xsl:text>
+ </fo:block>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+ <!-- Appref -->
+ <xsl:template match="appref">
+ <xsl:param name="partnum"/>
+
+ <fo:block page-break-before="always" xsl:use-attribute-sets="module-header" id="{generate-id(app)}">
+ <fo:block xsl:use-attribute-sets="module-name">
+ <!-- Mark title for header printout -->
+ <fo:marker marker-class-name="chapter-title">
+ <xsl:value-of select="app"/>
+ </fo:marker>
+ <xsl:value-of select="app"/>
+ </fo:block>
+ <xsl:text>Application</xsl:text>
+ </fo:block>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+ <!-- *ref Header -->
+ <xsl:template match="erlref/header|comref/header|cref/header|fileref/header|appref/header">
+ <fo:block>
+ <xsl:text></xsl:text>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Modulesummary -->
+ <xsl:template match="modulesummary">
+ <xsl:param name="partnum"/>
+ <fo:block>
+ <xsl:text></xsl:text>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Description -->
+ <xsl:template match="description">
+ <xsl:param name="partnum"/>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+ <!-- Funcs -->
+ <xsl:template match="funcs">
+
+ <fo:block xsl:use-attribute-sets="h3">
+ <xsl:text>Exports</xsl:text>
+ </fo:block>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+ <!-- Func -->
+ <xsl:template match="func">
+ <xsl:param name="partnum"/>
+
+ <fo:block xsl:use-attribute-sets="function-name">
+ <xsl:apply-templates select="name"/>
+ </fo:block>
+
+ <xsl:apply-templates select="fsummary|type|desc">
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+
+ <xsl:template match="name">
+ <xsl:param name="partnum"/>
+ <xsl:choose>
+ <xsl:when test="ancestor::cref">
+ <fo:block id="{generate-id(nametext)}">
+ <xsl:value-of select="ret"/><xsl:text> </xsl:text><xsl:value-of select="nametext"/>
+ </fo:block>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:block id="{generate-id(.)}">
+ <xsl:value-of select="."/>
+ </fo:block>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <!-- Type -->
+ <xsl:template match="type">
+ <xsl:param name="partnum"/>
+
+ <fo:block>
+ <xsl:text>Types:</xsl:text>
+ </fo:block>
+
+ <fo:list-block xsl:use-attribute-sets="type-listblock">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </fo:list-block>
+
+ </xsl:template>
+
+
+ <!-- V -->
+ <xsl:template match="v">
+ <xsl:param name="partnum"/>
+ <fo:list-item xsl:use-attribute-sets="type-listitem">
+ <fo:list-item-label end-indent="label-end()">
+ <fo:block>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()" format="justify">
+ <fo:block font-weight="bold">
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ </xsl:template>
+
+ <!-- D -->
+ <xsl:template match="d">
+ <xsl:param name="partnum"/>
+ <fo:list-item xsl:use-attribute-sets="type-listitem">
+ <fo:list-item-label end-indent="label-end()"><fo:block></fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent="body-start()" format="justify">
+ <fo:block>
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+ </fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ </xsl:template>
+
+ <!-- Desc -->
+ <xsl:template match="desc">
+
+ <xsl:apply-templates>
+ <xsl:with-param name="partnum" select="$partnum"/>
+ </xsl:apply-templates>
+
+ </xsl:template>
+
+
+ <!-- Fsummary -->
+ <xsl:template match="fsummary">
+ <!-- This tag is skipped for now. -->
+ </xsl:template>
+
+
+ <!-- Table -->
+ <xsl:template match="table">
+ <xsl:param name="chapnum"/>
+ <xsl:variable name="tabnum">
+ <xsl:number level="any" from="chapter" count="table"/>
+ </xsl:variable>
+ <fo:table xsl:use-attribute-sets="table">
+ <fo:table-body>
+ <xsl:apply-templates select="row">
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ <xsl:with-param name="tabnum" select="$tabnum"/>
+ </xsl:apply-templates>
+ </fo:table-body>
+ </fo:table>
+ <xsl:apply-templates select="tcaption">
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ <xsl:with-param name="tabnum" select="$tabnum"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+
+ <xsl:template match="row">
+ <fo:table-row>
+ <xsl:apply-templates/>
+ </fo:table-row>
+ </xsl:template>
+
+ <xsl:template match="cell">
+ <fo:table-cell xsl:use-attribute-sets="table-cell">
+ <xsl:call-template name="cell-valign"/>
+ <fo:block>
+ <xsl:call-template name="cell-align"/>
+ <xsl:apply-templates/>
+ </fo:block>
+ </fo:table-cell>
+ </xsl:template>
+
+ <xsl:template match="tcaption">
+ <xsl:param name="chapnum"/>
+ <xsl:param name="tabnum"/>
+
+ <fo:block xsl:use-attribute-sets="caption">
+ Table
+ <xsl:value-of select="$chapnum"/>.<xsl:value-of select="$tabnum"/>:
+ &#160;
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
+
+ <!-- Image -->
+ <xsl:template match="image">
+ <xsl:param name="chapnum"/>
+ <xsl:variable name="fignum">
+ <xsl:number level="any" from="chapter" count="image"/>
+ </xsl:variable>
+
+ <fo:block xsl:use-attribute-sets="image">
+ <fo:external-graphic content-width="60%" src="{@file}"/>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="chapnum" select="$chapnum"/>
+ <xsl:with-param name="fignum" select="$fignum"/>
+ </xsl:apply-templates>
+
+ </fo:block>
+
+ </xsl:template>
+
+
+ <xsl:template match="icaption">
+ <xsl:param name="chapnum"/>
+ <xsl:param name="fignum"/>
+
+ <fo:block xsl:use-attribute-sets="caption">
+ Figure
+ <xsl:value-of select="$chapnum"/>.<xsl:value-of select="$fignum"/>:
+ &#160;
+ <xsl:apply-templates/>
+ </fo:block>
+
+ </xsl:template>
+
+
+ <xsl:template match="input">
+ <fo:inline font-weight="bold">
+ <xsl:apply-templates select="text()"/>
+ </fo:inline>
+ </xsl:template>
+
+
+ <xsl:template match="seealso">
+ <fo:inline font-style="italic">
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <xsl:template match="url">
+ <fo:inline font-weight="bold">
+ <fo:basic-link external-destination="href">
+ <xsl:apply-templates/>
+ </fo:basic-link>
+ </fo:inline>
+ </xsl:template>
+
+
+
+ <!-- Special templates to calculate the arity of functions -->
+ <xsl:template name="calc-arity">
+ <xsl:param name="string"/>
+ <xsl:param name="no-of-pars"/>
+
+ <xsl:variable name="length">
+ <xsl:value-of select="string-length($string)"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$length > 0">
+ <xsl:call-template name="calc-arity">
+ <xsl:with-param name="string" select="substring-after($string, ',')"/>
+ <xsl:with-param name="no-of-pars" select="$no-of-pars+1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$no-of-pars"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="remove-paren">
+ <xsl:param name="string"/>
+
+ <xsl:variable name="bstring">
+ <xsl:value-of select="substring-before($string, '(')"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($bstring) > 0">
+ <xsl:variable name="astring">
+ <xsl:value-of select="substring-after($string, ')')"/>
+ </xsl:variable>
+ <xsl:variable name="retstring">
+ <xsl:call-template name="remove-paren">
+ <xsl:with-param name="string" select="$astring"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="concat($bstring, $retstring)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/lib/erl_docgen/priv/xsl/db_pdf_params.xsl b/lib/erl_docgen/priv/xsl/db_pdf_params.xsl
new file mode 100644
index 0000000000..e2e264b90a
--- /dev/null
+++ b/lib/erl_docgen/priv/xsl/db_pdf_params.xsl
@@ -0,0 +1,406 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ #
+ # %CopyrightBegin%
+ #
+ # Copyright Ericsson AB 2009. All Rights Reserved.
+ #
+ # The contents of this file are subject to the Erlang Public License,
+ # Version 1.1, (the "License"); you may not use this file except in
+ # compliance with the License. You should have received a copy of the
+ # Erlang Public License along with this software. If not, it can be
+ # retrieved online at http://www.erlang.org/.
+ #
+ # Software distributed under the License is distributed on an "AS IS"
+ # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ # the License for the specific language governing rights and limitations
+ # under the License.
+ #
+ # %CopyrightEnd%
+
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format">
+
+ <!-- When using <code>, whitespaces should be preserved -->
+ <xsl:preserve-space elements="code"/>
+
+
+ <!-- Fixed strings -->
+ <xsl:variable name="companyname"><xsl:value-of select="/book/header/copyright/holder"/></xsl:variable>
+ <xsl:variable name="copyright">Copyright &#169; <xsl:value-of select="/book/header/copyright/year[1]"/><xsl:text>-</xsl:text><xsl:value-of select="substring-after(substring-after($gendate, ' '), ' ')"/></xsl:variable>
+
+ <!-- FIXME: remove when appendix creation has been fixed -->
+ <!-- xsl:variable name="appendix_title"-->
+ <!-- xsl:text>Appendix: Unix man pages for ConfD</xsl:text-->
+ <!-- /xsl:variable-->
+
+ <!-- Font size (all other font sizes should be proportional to this -->
+ <xsl:param name="base-font-size">10pt</xsl:param>
+
+ <!-- Paper size: A4 (297x210 mm) -->
+ <xsl:param name="page-height">297mm</xsl:param>
+ <xsl:param name="page-width">210mm</xsl:param>
+
+ <!-- Paper size: US Letter (279x216 mm) -->
+ <!--
+ <xsl:param name="page-height">11in</xsl:param>
+ <xsl:param name="page-width">8.5in</xsl:param>
+ -->
+
+
+ <!-- XSL-FO properties -->
+ <xsl:attribute-set name="caption">
+ <xsl:attribute name="font-family">sans-serif</xsl:attribute>
+ <xsl:attribute name="font-size">0.8em</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-previous.within-page">always</xsl:attribute>
+ <xsl:attribute name="space-after">2.5em</xsl:attribute>
+ <xsl:attribute name="space-before">0em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="pre">
+ <xsl:attribute name="font-family">monospace</xsl:attribute>
+ <xsl:attribute name="font-size">0.8em</xsl:attribute>
+ <xsl:attribute name="keep-together.within-page">auto</xsl:attribute>
+ <xsl:attribute name="linefeed-treatment">preserve</xsl:attribute>
+ <xsl:attribute name="padding-after">0em</xsl:attribute>
+ <!-- Compensate for empty line that always seems to appear here now... -->
+ <xsl:attribute name="padding-before">-1em</xsl:attribute>
+ <xsl:attribute name="white-space-collapse">false</xsl:attribute>
+ <xsl:attribute name="white-space-treatment">preserve</xsl:attribute>
+ <xsl:attribute name="wrap-option">no-wrap</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="cover.copyright">
+ <xsl:attribute name="font-size">0.9em</xsl:attribute>
+ <xsl:attribute name="text-align">end</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="cover.logo">
+ <xsl:attribute name="space-before">130mm</xsl:attribute>
+ <xsl:attribute name="space-before.conditionality">retain</xsl:attribute>
+ <xsl:attribute name="text-align">end</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="cover.title">
+ <xsl:attribute name="border-before-style">solid</xsl:attribute>
+ <xsl:attribute name="border-before-width">10pt</xsl:attribute>
+ <xsl:attribute name="border-color">#960003</xsl:attribute>
+ <xsl:attribute name="font-size">2.3em</xsl:attribute>
+ <xsl:attribute name="padding-before">0.5em</xsl:attribute>
+ <xsl:attribute name="text-align">end</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="cover.version">
+ <xsl:attribute name="font-size">0.9em</xsl:attribute>
+ <xsl:attribute name="text-align">end</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="cover.inner.copyright">
+ <xsl:attribute name="border-before-style">solid</xsl:attribute>
+ <xsl:attribute name="border-before-width">1pt</xsl:attribute>
+ <xsl:attribute name="border-color">#960003</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="padding-before">0.5em</xsl:attribute>
+ <xsl:attribute name="space-before">200mm</xsl:attribute>
+ <xsl:attribute name="space-before.conditionality">retain</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="cover.inner.copyrightnotice">
+ <xsl:attribute name="font-size">0.9em</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="cover.inner.date">
+ <xsl:attribute name="font-size">0.9em</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="space-before">2em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="dd">
+ <xsl:attribute name="start-indent">2em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="dt">
+ <xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="image">
+ <xsl:attribute name="space-after">0.5em</xsl:attribute>
+ <xsl:attribute name="space-before">0.5em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="listblock">
+ <xsl:attribute name="provisional-distance-between-starts">1.8em</xsl:attribute>
+ <xsl:attribute name="provisional-label-separation">1em</xsl:attribute>
+ <xsl:attribute name="space-after">0.25em</xsl:attribute>
+ <xsl:attribute name="space-before">0.25em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="listitem">
+ <xsl:attribute name="space-after">0.25em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="taglistblock">
+ <xsl:attribute name="space-after">0.25em</xsl:attribute>
+ <xsl:attribute name="space-before">0.25em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="tag">
+ <xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="tagitem">
+ <xsl:attribute name="start-indent">2em</xsl:attribute>
+ </xsl:attribute-set>
+
+
+ <xsl:attribute-set name="h1">
+ <xsl:attribute name="border-after-style">solid</xsl:attribute>
+ <xsl:attribute name="border-after-width">1pt</xsl:attribute>
+ <xsl:attribute name="border-color">#960003</xsl:attribute>
+ <xsl:attribute name="break-before">page</xsl:attribute>
+ <xsl:attribute name="font-family">sans-serif</xsl:attribute>
+ <xsl:attribute name="font-size">1.83em</xsl:attribute>
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="space-before">2em</xsl:attribute>
+ <xsl:attribute name="space-before.conditionality">retain</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="h2">
+ <xsl:attribute name="font-family">sans-serif</xsl:attribute>
+ <xsl:attribute name="font-size">1.5em</xsl:attribute>
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
+ <xsl:attribute name="space-after">0.3em</xsl:attribute>
+ <xsl:attribute name="space-before">1em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="h3">
+ <xsl:attribute name="font-family">sans-serif</xsl:attribute>
+ <xsl:attribute name="font-size">1.33em</xsl:attribute>
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
+ <xsl:attribute name="space-after">0.3em</xsl:attribute>
+ <xsl:attribute name="space-before">0.8em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="h4">
+ <xsl:attribute name="font-family">sans-serif</xsl:attribute>
+ <xsl:attribute name="font-size">1.17em</xsl:attribute>
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
+ <xsl:attribute name="space-after">0.3em</xsl:attribute>
+ <xsl:attribute name="space-before">0.6em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="h5">
+ <xsl:attribute name="font-family">sans-serif</xsl:attribute>
+ <xsl:attribute name="font-size">1em</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
+ <xsl:attribute name="space-after">0.2em</xsl:attribute>
+ <xsl:attribute name="space-before">0.4em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="h6">
+ <xsl:attribute name="font-family">sans-serif</xsl:attribute>
+ <xsl:attribute name="font-size">0.83em</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
+ <xsl:attribute name="space-after">0em</xsl:attribute>
+ <xsl:attribute name="space-before">0.4em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="p">
+ <xsl:attribute name="font-size">1em</xsl:attribute>
+ <!-- <xsl:attribute name="keep-together.within-page">always</xsl:attribute>-->
+ <xsl:attribute name="space-after">0.5em</xsl:attribute>
+ <xsl:attribute name="space-before">0.5em</xsl:attribute>
+ <xsl:attribute name="text-align">justify</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="page-header">
+ <xsl:attribute name="border-after-style">solid</xsl:attribute>
+ <xsl:attribute name="border-after-width">2pt</xsl:attribute>
+ <xsl:attribute name="border-color">#960003</xsl:attribute>
+ <xsl:attribute name="font-family">sans-serif</xsl:attribute>
+ <xsl:attribute name="font-size">0.9em</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="page-footer">
+ <xsl:attribute name="font-family">sans-serif</xsl:attribute>
+ <xsl:attribute name="font-size">0.9em</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="code">
+ <xsl:attribute name="background-color">#e0e0ff</xsl:attribute>
+ <xsl:attribute name="font-family">monospace</xsl:attribute>
+ <xsl:attribute name="font-size">0.8em</xsl:attribute>
+ <xsl:attribute name="keep-together.within-page">auto</xsl:attribute>
+ <xsl:attribute name="linefeed-treatment">preserve</xsl:attribute>
+ <xsl:attribute name="padding-before">0em</xsl:attribute>
+ <xsl:attribute name="padding-after">1em</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="space-before">2em</xsl:attribute>
+ <xsl:attribute name="white-space-collapse">false</xsl:attribute>
+ <xsl:attribute name="white-space-treatment">preserve</xsl:attribute>
+ <xsl:attribute name="wrap-option">no-wrap</xsl:attribute>
+ </xsl:attribute-set>
+
+
+
+ <xsl:attribute-set name="toc.level1">
+ <xsl:attribute name="space-before">1em</xsl:attribute>
+ </xsl:attribute-set>
+
+<xsl:attribute-set name="note">
+ <xsl:attribute name="background-color">#d0fed0</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="space-before">2em</xsl:attribute>
+ <xsl:attribute name="text-align">justify</xsl:attribute>
+ <xsl:attribute name="padding-before">1em</xsl:attribute>
+ <xsl:attribute name="padding-after">0.3em</xsl:attribute>
+ <xsl:attribute name="padding-left">1em</xsl:attribute>
+ <xsl:attribute name="padding-right">1em</xsl:attribute>
+ <xsl:attribute name="keep-together.within-page">always</xsl:attribute>
+ </xsl:attribute-set>
+
+<xsl:attribute-set name="warning">
+ <xsl:attribute name="background-color">#ffd6d6</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="space-before">2em</xsl:attribute>
+ <xsl:attribute name="text-align">justify</xsl:attribute>
+ <xsl:attribute name="padding-before">1em</xsl:attribute>
+ <xsl:attribute name="padding-after">0.3em</xsl:attribute>
+ <xsl:attribute name="padding-left">1em</xsl:attribute>
+ <xsl:attribute name="padding-right">1em</xsl:attribute>
+ <xsl:attribute name="keep-together.within-page">always</xsl:attribute>
+ </xsl:attribute-set>
+
+
+ <xsl:attribute-set name="note-warning-title">
+ <xsl:attribute name="font-size">1.33em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="module-header">
+ <xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
+ <xsl:attribute name="space-after">2em</xsl:attribute>
+ <xsl:attribute name="space-before">1em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="module-name">
+ <xsl:attribute name="border-after-style">solid</xsl:attribute>
+ <xsl:attribute name="border-after-width">1pt</xsl:attribute>
+ <xsl:attribute name="font-family">sans-serif</xsl:attribute>
+ <xsl:attribute name="font-size">1.5em</xsl:attribute>
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
+ <xsl:attribute name="space-after">0.3em</xsl:attribute>
+ <xsl:attribute name="space-before">1em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="function-name">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="font-family">monospace</xsl:attribute>
+ <!-- xsl:attribute name="font-size">0.8em</xsl:attribute -->
+ <xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
+ <xsl:attribute name="space-after">0.3em</xsl:attribute>
+ <xsl:attribute name="space-before">1.5em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="type-listblock">
+ <xsl:attribute name="provisional-distance-between-starts">1.8em</xsl:attribute>
+ <xsl:attribute name="provisional-label-separation">1em</xsl:attribute>
+ <xsl:attribute name="space-after">0.25em</xsl:attribute>
+ <xsl:attribute name="space-before">0.25em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="type-listitem">
+ <xsl:attribute name="space-after">0.25em</xsl:attribute>
+ </xsl:attribute-set>
+
+
+ <xsl:attribute-set name="table">
+ <!-- Only border-collapse="separate" is supported in current FOP
+ (if this is not set, border on spanned cells will not work) -->
+ <xsl:attribute name="border-collapse">separate</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="space-before">1em</xsl:attribute>
+ <xsl:attribute name="table-layout">fixed</xsl:attribute>
+ <!-- Just to get rid of some info reports, should be removed when fop supports table-layout auto -->
+ <xsl:attribute name="inline-progression-dimension">100%</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="table-cell">
+ <xsl:attribute name="border-style">solid</xsl:attribute>
+ <xsl:attribute name="border-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="display-align">before</xsl:attribute>
+ <xsl:attribute name="padding-after">0.5em</xsl:attribute>
+ <xsl:attribute name="padding-before">0.5em</xsl:attribute>
+ <xsl:attribute name="padding-end">0.3em</xsl:attribute>
+ <xsl:attribute name="padding-start">0.3em</xsl:attribute>
+ <xsl:attribute name="text-align">start</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="table-header">
+ <xsl:attribute name="border-style">solid</xsl:attribute>
+ <xsl:attribute name="border-width">1pt</xsl:attribute>
+ <xsl:attribute name="display-align">before</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="padding-after">0.5em</xsl:attribute>
+ <xsl:attribute name="padding-before">0.5em</xsl:attribute>
+ <xsl:attribute name="padding-end">0.3em</xsl:attribute>
+ <xsl:attribute name="padding-start">0.3em</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ </xsl:attribute-set>
+
+
+ <xsl:template name="cell-valign">
+ <xsl:choose>
+ <xsl:when test="@valign='top'">
+ <xsl:attribute name="display-align">before</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@valign='middle'">
+ <xsl:attribute name="display-align">center</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@valign='bottom'">
+ <xsl:attribute name="display-align">after</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="cell-align">
+ <xsl:choose>
+ <xsl:when test="@align='left'">
+ <xsl:attribute name="text-align">start</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@align='center'">
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@align='right'">
+ <xsl:attribute name="text-align">end</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:attribute-set name="image">
+ <xsl:attribute name="space-after">0.5em</xsl:attribute>
+ <xsl:attribute name="space-before">0.5em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="caption">
+ <xsl:attribute name="font-family">sans-serif</xsl:attribute>
+ <xsl:attribute name="font-size">0.8em</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-previous.within-page">always</xsl:attribute>
+ <xsl:attribute name="space-after">2.5em</xsl:attribute>
+ <xsl:attribute name="space-before">0em</xsl:attribute>
+ </xsl:attribute-set>
+
+</xsl:stylesheet>