VoVのHTMLレンダラリファクタリング中

これは本当に自分の書いたコードだろうか。なにかの陰謀に思えてきた。
…という戯れ言はさておき、テンプレートをファイルから読み込んで埋めこんだ記号列を置換というのはどうにも文字列処理に弱いAdaのコードとしては無駄なHTML全体の文字列のコピーが大量発生しているような気がします。気だけですが。それでどういうのがスマートかなあと弄り回した結果…

   procedure Message_Page(
      Object : in Renderer;
      Output : not null access Ada.Streams.Root_Stream_Type'Class;
      Message : String;
      User_ID : String;
      User_Password : String)
   is
      html_t : Block(html(Output, UTF8));
   begin
      declare
         head_t : Block(head_tag(Output));
      begin
         meta_tag(Output, UTF8);
         link_tag(Output, Object.Configuration.Style_Sheet_File_Name.all);
         title_tag(Output, Title);
      end;
      declare
         body_t : Block(body_tag(Output));
      begin
         h1_tag(Output, Title);
         declare
            div_t : Block(div_tag(Output, class => "center"));
         begin
            p_tag(Output, Message);
            Write(Output,
               "<form class=""button"" method=""POST"" >" & Line_Break &
               "<input type=""submit"" value=""戻る"" />" & Line_Break &
               "</form>" & Line_Break);
         end;
      end;
   end Message_Page;

RAIIでタグをクローズ…どこのRubyだこれは…orz…いやRubyのはブロック渡しなのは承知してますが、見た目が。
AdaでRAIIでクリティカルセクションとか見ませんしね…これは果てしなくAda的では無さそうです。Ada的にはどういうのが正しいんだ?
…まだVCLのTPageProducerみたいにするのがマシか?