template outputXHTMLs() {
  struct outputXHTMLs {
    string _xhtml_anchor_tags(const(string[]) anchor_tags) {
      string tags="";
      if (anchor_tags.length > 0) {
        foreach (tag; anchor_tags) {
          if (!(tag.empty)) {
            tags ~= "<a name=\"" ~ tag ~ "\"></a>";
          }
        }
      }
      return tags;
    }
    auto scroll_head(Me)(
      Me dochead_meta,
    ) {
      debug(asserts){
        static assert(is(typeof(dochead_meta) == string[string][string]));
      }
      string o;
      o = format(q"¶<!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>
        %s%s
      </title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
      <meta name="dc.title" content="Title" />
      <meta name="dc.author" content="Author" />
      <meta name="dc.publisher" content="SiSU http://www.jus.uio.no/sisu (this copy)" />
      <meta name="dc.date" content="year" />
      <meta name="dc.date.created" content="year" />
      <meta name="dc.date.issued" content="year" />
      <meta name="dc.date.available" content="year" />
      <meta name="dc.date.valid" content="year" />
      <meta name="dc.date.modified" content="year" />
      <meta name="dc.language" content="US" />
      <meta name="dc.rights" content="Copyright: Copyright (C) year holder />
      <meta name="generator" content="sdp [SiSU 7.1.8 of 2016w08/5 (2016-02-26)] (n*x and D)" />
        <link rel="generator" href="http://www.sisudoc.org/" />
      <link rel="shortcut icon" href="../_sisu/image/rb7.ico" />
      <link href="../../_sisu/css/html.css" rel="stylesheet">
      <link href="../../../_sisu/css/html.css" rel="stylesheet">
    </head>
    <body lang="en">
    <a name="top" id="top"></a>¶",
    dochead_meta["title"]["full"],
    (dochead_meta["creator"]["author"].empty) ? "" : ", " ~ dochead_meta["creator"]["author"],
    );
      return o;
    }
    auto seg_head(Me)(
      Me dochead_meta,
    ) {
      debug(asserts){
        static assert(is(typeof(dochead_meta) == string[string][string]));
      }
      string o;
      o = format(q"¶<!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>
        %s%s
      </title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
      <meta name="dc.title" content="Title" />
      <meta name="dc.author" content="Author" />
      <meta name="dc.publisher" content="SiSU http://www.jus.uio.no/sisu (this copy)" />
      <meta name="dc.date" content="year" />
      <meta name="dc.date.created" content="year" />
      <meta name="dc.date.issued" content="year" />
      <meta name="dc.date.available" content="year" />
      <meta name="dc.date.valid" content="year" />
      <meta name="dc.date.modified" content="year" />
      <meta name="dc.language" content="US" />
      <meta name="dc.rights" content="Copyright: Copyright (C) year holder />
      <meta name="generator" content="sdp [SiSU 7.1.8 of 2016w08/5 (2016-02-26)] (n*x and D)" />
        <link rel="generator" href="http://www.sisudoc.org/" />
      <link rel="shortcut icon" href="../_sisu/image/rb7.ico" />
      <link href="../../_sisu/css/html.css" rel="stylesheet">
      <link href="../../../_sisu/css/html.css" rel="stylesheet">
    </head>
    <body lang="en">
    <a name="top" id="top"></a>¶",
    dochead_meta["title"]["full"],
    (dochead_meta["creator"]["author"].empty) ? "" : ", " ~ dochead_meta["creator"]["author"],
    );
      return o;
    }
    auto tail() {
      string o;
      o = format(q"¶  <a name="bottom" id="bottom"></a>
      <a name="end" id="end"></a>
    </div>
    </body>
    </html>¶");
      return o;
    }
    auto toc(O)(
      auto return ref const O    obj,
    ) {
      string o;
      o = format(q"¶  <div class="substance">
      <p class="%s" indent="h%si%s">
        %s
      </p>
    </div>¶",
      obj.is_a,
      obj.indent_hang,
      obj.indent_base,
      obj.text
      );
      return o;
    }
    auto heading(O)(
      auto return ref const O    obj,
    ) {
      auto tags = _xhtml_anchor_tags(obj.anchor_tags);
      string o;
      if (obj.obj_cite_number.empty) {
        o = format(q"¶<br><hr /><br>
      <div class="substance">
        <h%s class="%s">%s
          %s
        </h%s>
      </div>¶",
          obj.heading_lev_markup,
          obj.is_a,
          tags,
          obj.text,
          obj.heading_lev_markup,
        );
      } else {
        o = format(q"¶<br><hr /><br>
      <div class="substance">
        <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>
        <h%s class="%s" id="%s"><a name="%s"></a>%s
          %s
        </h%s>
      </div>¶",
        obj.obj_cite_number,
        obj.obj_cite_number,
        obj.heading_lev_markup,
        obj.is_a,
        obj.obj_cite_number,
        obj.obj_cite_number,
        tags,
        obj.text,
        obj.heading_lev_markup,
        );
      }
      return o;
    }
    auto para(O)(
      auto return ref const O    obj,
    ) {
      auto tags = _xhtml_anchor_tags(obj.anchor_tags);
      string o;
      if (obj.obj_cite_number.empty) {
        o = format(q"¶  <div class="substance">
      <p class="%s" indent="h%si%s">%s
        %s
      </p>
    </div>¶",
          obj.is_a,
          obj.indent_hang,
          obj.indent_base,
          tags,
          obj.text
        );
      } else {
        o = format(q"¶  <div class="substance">
      <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>
      <p class="%s" indent="h%si%s" id="%s">%s
        %s
      </p>
    </div>¶",
          obj.obj_cite_number,
          obj.obj_cite_number,
          obj.is_a,
          obj.indent_hang,
          obj.indent_base,
          obj.obj_cite_number,
          tags,
          obj.text
        );
      }
      return o;
    }
    auto nugget(O)(
      auto return ref const O    obj,
    ) {
      string o;
      if (obj.obj_cite_number.empty) {
        o = format(q"¶  <div class="substance">
      <p class="%s">
        %s
      </p>
    </div>¶",
          obj.is_a,
          obj.text
        );
      } else {
        o = format(q"¶  <div class="substance">
      <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>
      <p class="%s" id="%s">
        %s
      </p>
    </div>¶",
          obj.obj_cite_number,
          obj.obj_cite_number,
          obj.is_a,
          obj.obj_cite_number,
          obj.text
        );
      }
      return o;
    }
    auto endnote(O)(
      auto return ref const O    obj,
    ) {
      string o;
      o = format(q"¶    <p class="%s" indent="h%si%s">
      %s
    </p>¶",
        obj.is_a,
        obj.indent_hang,
        obj.indent_base,
        obj.text
      );
      return o;
    }
    auto code(O)(
      auto return ref const O  obj,
    ) {
      string o;
      if (obj.obj_cite_number.empty) {
          o = format(q"¶  <div class="substance">
        <p class="%s">
%s
      </p>
    </div>¶",
          obj.is_a,
          obj.text
        );
      } else {
        o = format(q"¶  <div class="substance">
      <label class="ocn"><a href="#%s" class="lnkocn">%s</a></label>
      <p class="%s" id="%s">
%s
      </p>
    </div>¶",
          obj.obj_cite_number,
          obj.obj_cite_number,
          obj.is_a,
          obj.obj_cite_number,
          obj.text
        );
      }
      return o;
    }
  }
}