7

Possible Duplicate:
C++ HTML template framework, templatizing library, HTML generator library

I have a program, that contains many tables, so I want to track them in log files when I debug the program. I want colored, formatted output so I thought I wrote it in HTML format. So what is the best way to create HTML files in C++?

The trivial way is so disgusting and error prone:

std::stringstream ret;
ret << "<TABLE BORDER=\"1\" CELLBORDER=\"0\">\n";
ret << "    <TR>\n";
...

So I thought I wrote a HTML wrapper but I think there are so many for this reason.

I want a statically typed HTML wrapper in C++ with this syntax or similar:

CHtmlHtml Html;
Html <<
    Body() % Id("1")
        << H1("My First Heading") <<
        << P("My first paragraph.");

or in this case

CHtmlTable table;
table % Border(1) % CellBorder(0) <<
    Tr() <<
        Td("Text") % Colspan(4);

Is there any similar project?

SuperStormer
  • 4,997
  • 5
  • 25
  • 35
  • 2
    @tzaman: I want a statically typed HTML wrapper, not a template based one – Industrial-antidepressant Jan 02 '12 at 00:59
  • I am unclear on your requirements that rule out templates, but the answer tzaman gave lists a whole bunch of useful solutions for C++, some not templates at all. – casualcoder Jan 02 '12 at 03:11
  • 1
    I checked the offered link and could not see anything even close to what Industrial-antidepressant is talking about. They pretty much all come from HTML/XML templates. – Alexis Wilke Jan 02 '12 at 04:57
  • @AlexisWilke My apologies - I thought he meant C++ templates. Oops. – casualcoder Jan 02 '12 at 16:40
  • 1
    Please reopen, I dont want HTML framework, templatizing library or HTML generator library. I want a domain specific language for HTML. So I want compile time errors when something is wrong. – Industrial-antidepressant Jan 03 '12 at 00:51
  • Who closed this question using my name as one of the person who said it should be closed?! I said the OPPOSITE. This is NOT the same and the other answer does NOT APPLY. – Alexis Wilke Jan 03 '12 at 05:12

1 Answers1

4

HTML and XML both use the same syntax, so you could just use a C++ XML library (such as TinyXML) to dynamically create all the nodes you need.

This page shows how to use TinyXML to build XML (or in your case, HTML) documents.

You may need to do some fiddling (such as removing the XML declaration at the top of the generated file), but I think you could create a wrapper for it somewhat easily.

berserkguard
  • 335
  • 2
  • 9