создать html из срр, какие способы?
От: gok Россия  
Дата: 27.02.18 15:46
Оценка:
(Не уверен, что это правильный форум, перенесите, пожалуйста если так)
Надо создать репорт ввиде html файла.
Какие есть красивые способы создать оный из срр?
Спасибо!
gok
Re: создать html из срр, какие способы?
От: Stanislav V. Zudin Россия  
Дата: 27.02.18 16:20
Оценка: 4 (1)
Здравствуйте, gok, Вы писали:

gok>Надо создать репорт ввиде html файла.

gok>Какие есть красивые способы создать оный из срр?

Один из вариантов — сгенерить xml с данными и натравить на него xslt.
_____________________
С уважением,
Stanislav V. Zudin
Re: создать html из срр, какие способы?
От: tehKosh  
Дата: 27.02.18 20:00
Оценка:
шаблонизатор?
Re[2]: похоже то что надо
От: gok Россия  
Дата: 27.02.18 20:22
Оценка:
Здравствуйте, tehKosh, Вы писали:

K>шаблонизатор?

Создаю хмл с данными и шаблон к нему.
gok
Re: создать html из срр, какие способы?
От: evpo https://evpo.net
Дата: 28.02.18 03:01
Оценка:
Здравствуйте, gok, Вы писали:

Doxygen может генерировать вебсайты на основе кода. Пример:
здесь

gok>Надо создать репорт ввиде html файла.

gok>Какие есть красивые способы создать оный из срр?
gok>Спасибо!
Re[2]: создать html из срр, какие способы?
От: evpo https://evpo.net
Дата: 28.02.18 03:02
Оценка:
похоже я не правильно понял вопрос.
Re: создать html из срр, какие способы?
От: Maniacal Россия  
Дата: 28.02.18 06:50
Оценка:
Здравствуйте, gok, Вы писали:

gok>Какие есть красивые способы создать оный из срр?

gok>Спасибо!

Создаётся шаблон, потом на него натравливается DOM-parser. Например COM-парсер IID_IHTMLDocument2 под виндой или какой-нибудь libgdome
Re: создать html из срр, какие способы?
От: kov_serg Россия  
Дата: 28.02.18 07:30
Оценка: +2 -1 :)
Здравствуйте, gok, Вы писали:

gok>Какие есть красивые способы создать оный из срр?

  fprintf(f,"<html>...");
Re: создать html из срр, какие способы?
От: reversecode google
Дата: 28.02.18 10:44
Оценка:
вбейте в гугл
c++ html generator library
покажет много ссылок на либы
выбирайте любую
Re[2]: xml + xslt -> html
От: gok Россия  
Дата: 28.02.18 16:41
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Здравствуйте, gok, Вы писали:


gok>>Надо создать репорт ввиде html файла.

gok>>Какие есть красивые способы создать оный из срр?

SVZ>Один из вариантов — сгенерить xml с данными и натравить на него xslt.


Т.е. это два файла надо послать юзеру. А как бы данные (ХМЛ) и шаблон (ХСЛТ) слить один (HTML)?
gok
Re[2]: создать html из срр, какие способы?
От: gok Россия  
Дата: 28.02.18 16:43
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Здравствуйте, gok, Вы писали:


gok>>Какие есть красивые способы создать оный из срр?

_>
_>  fprintf(f,"<html>...");
_>


это уже было на одном отчете. потребовался другой отчет, а если еще потрубуется. скучно забивать теги вручную
gok
Re[3]: xml + xslt -> html
От: Stanislav V. Zudin Россия  
Дата: 28.02.18 19:24
Оценка: 4 (1)
Здравствуйте, gok, Вы писали:

SVZ>>Один из вариантов — сгенерить xml с данными и натравить на него xslt.


gok>Т.е. это два файла надо послать юзеру.


Посылать лучше готовый результат.

gok>А как бы данные (ХМЛ) и шаблон (ХСЛТ) слить один (HTML)?


Как-то так (код древний, как работает помню смутно):
Сохранял, в зависимости от выбранного xslt, в csv, txt и html.

// ==========================================================================
namespace xml
{
    typedef MSXML2::IXMLDOMDocument            Document;
    typedef MSXML2::IXMLDOMNode                Node;
    typedef MSXML2::IXMLDOMElement            Element;

    typedef MSXML2::IXMLDOMParseErrorPtr    DOMParseErrorPtr;
    typedef MSXML2::IXMLDOMElementPtr        ElementPtr;
    typedef MSXML2::IXMLDOMAttributePtr        AttributePtr;
    typedef MSXML2::IXMLDOMDocument2Ptr        DocumentPtr;

    // ======================================================================
    DocumentPtr CreateDocument()
    {
        REFGUID clsid = __uuidof(MSXML2::DOMDocument60);//MSXML2::DOMDocument);
        DocumentPtr document(clsid);
        return document;
    }

    // ======================================================================
    DOMParseErrorPtr LoadDocument(Document* document, LPCTSTR source)
    {
        document->async = VARIANT_TRUE;// loading resources async. only! VARIANT_FALSE;
        document->resolveExternals = VARIANT_FALSE;
        document->validateOnParse = VARIANT_FALSE;
        document->load(source);
        DOMParseErrorPtr domParseError = document->parseError;
        return domParseError;
    }
}


Собственно создание документа:
    xml::DocumentPtr m_xmldoc;
    CString m_targetFname,
            m_xslPath;
...
...
    try
    {
        // LOAD XSLT STYLE DOCUMENT
        xml::DocumentPtr xsldoc = xml::CreateDocument();
        if (!xsldoc)
        {
            ASSERT(0); // Ку-ку, Гриня
            return false;
        }

        xml::DOMParseErrorPtr parseError = xml::LoadDocument(xsldoc, m_xslPath);
        if(parseError->errorCode)
        {
            CString reason(LPCWSTR(parseError->reason));
            m_pimpl->m_errString.Format(_T("Failed to load document.\n%s"), reason.GetString());
            return false;
        }

        // SAVE XML FILE NEXT TO TARGET FILE
        CString xmlfname;
        xmlfname.Format(_T("%s.xml"), m_targetFname.GetString());
        m_xmldoc->save( _variant_t(xmlfname) );

        // RUN XSLT TRANSFORMATION
        HRESULT hr = m_xmldoc->setProperty(_bstr_t(_T("AllowXsltScript")), _variant_t(true));
        hr = xsldoc->setProperty(_bstr_t(_T("AllowXsltScript")), _variant_t(true));
        _bstr_t retv = m_xmldoc->transformNode(xsldoc);
        if (retv.length() > 0)
        {
            CFile file(m_targetFname, CFile::modeCreate | CFile::modeWrite);
            file.Write(static_cast<const char*>(retv), retv.length());
            file.Close();

            // SHOW RESULT
            ::ShellExecute(AfxGetMainWnd()->GetSafeHwnd(), _T("open"), 
                           m_targetFname, NULL, NULL, SW_SHOW);
        }

        retval = true;  // DONE!
    }
    catch (_com_error& ce) 
    {

    }
_____________________
С уважением,
Stanislav V. Zudin
Re[4]: xml + xslt -> html
От: bnk СССР http://unmanagedvisio.com/
Дата: 28.02.18 19:47
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

gok>>А как бы данные (ХМЛ) и шаблон (ХСЛТ) слить один (HTML)?


SVZ>Как-то так (код древний, как работает помню смутно):

SVZ>Сохранял, в зависимости от выбранного xslt, в csv, txt и html.

Я подобное лет 15 назад писал.. :(
Все же шаблонизатор IMHO сильно лучше. Нафик этот XSLT — он нечитаемый.
То есть, любая библиотека которая умеет шаблоны (на mustache там или еще что)

Вот например пилят: https://github.com/pantor/inja

json data;
data["name"] = "world";

inja::render("<h1> Hello {{name}}! </h1>", data);
Re[5]: xml + xslt -> html
От: Stanislav V. Zudin Россия  
Дата: 28.02.18 19:52
Оценка:
Здравствуйте, bnk, Вы писали:

SVZ>>Как-то так (код древний, как работает помню смутно):

SVZ>>Сохранял, в зависимости от выбранного xslt, в csv, txt и html.

bnk>Я подобное лет 15 назад писал..

bnk>Все же шаблонизатор IMHO сильно лучше. Нафик этот XSLT — он нечитаемый.

Отож. Я тот код писал в 2011г. Увы, у меня было ограничение — никаких сторонних либ, только стандартные средства.
А так существовал и CrystalReports, и других инструментов, наверняка выше крыши. А сейчас и подавно.
_____________________
С уважением,
Stanislav V. Zudin
Re[4]: xml + xslt -> html
От: gok Россия  
Дата: 28.02.18 22:46
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Здравствуйте, gok, Вы писали:


SVZ>>>Один из вариантов — сгенерить xml с данными и натравить на него xslt.


gok>>Т.е. это два файла надо послать юзеру.


SVZ>Посылать лучше готовый результат.


gok>>А как бы данные (ХМЛ) и шаблон (ХСЛТ) слить один (HTML)?


SVZ>Как-то так (код древний, как работает помню смутно):

SVZ>Сохранял, в зависимости от выбранного xslt, в csv, txt и html.

У меня получилось! Спасибо за подсказку, Станислав!
попробую шаблонизацию, как предложил другой коллега. пока не понятно как срр с ним "общается".
gok
Re[5]: xml + xslt -> html
От: gok Россия  
Дата: 01.03.18 02:19
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Здравствуйте, Stanislav V. Zudin, Вы писали:


gok>>>А как бы данные (ХМЛ) и шаблон (ХСЛТ) слить один (HTML)?


SVZ>>Как-то так (код древний, как работает помню смутно):

SVZ>>Сохранял, в зависимости от выбранного xslt, в csv, txt и html.

bnk>Я подобное лет 15 назад писал..

bnk>Все же шаблонизатор IMHO сильно лучше. Нафик этот XSLT — он нечитаемый.
bnk>То есть, любая библиотека которая умеет шаблоны (на mustache там или еще что)

bnk>Вот например пилят: https://github.com/pantor/inja


bnk>
bnk>json data;
bnk>data["name"] = "world";

bnk>inja::render("<h1> Hello {{name}}! </h1>", data);
bnk>


это впечатляет: Returns "Hello world!"
как это все организовать для создания самого хтмл? (только вышел на эту тропу, сорри)
шаблонизатор внутри срр? нормалек, можно захаркодить. Данные тоже сыплются оттуда.
render(..) выплевывает форматированную строку данных по введенному шаблону (Returns "Hello world!"), и как ее теперь вставить в хтмл файл на выходе?

Что-то эта sdk отдаленно смутно напоминает fprintf(f,"<html>..."); в срр
gok
Re[5]: xml + xslt -> html
От: Mr.Delphist  
Дата: 01.03.18 17:55
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Нафик этот XSLT — он нечитаемый.


Дело привычки

Кто-то жизни не мыслит без AWK, некоторые билд-скрипты опенсорса на нём.
Re[6]: xml + xslt -> html
От: bnk СССР http://unmanagedvisio.com/
Дата: 01.03.18 19:42
Оценка: 2 (1)
Здравствуйте, gok, Вы писали:

gok>это впечатляет: Returns "Hello world!"

gok>как это все организовать для создания самого хтмл? (только вышел на эту тропу, сорри)

gok>render(..) выплевывает форматированную строку данных по введенному шаблону (Returns "Hello world!"), и как ее теперь вставить в хтмл файл на выходе?


Ну так в моем примере выше HTML же. Должна вернуть "<h1>Hello world!</h1>"
Я бы создал файл шаблона (на диске, реальный HTML файл), потому сделал структуру данных по образу и подобию, потом render()

gok>Что-то эта sdk отдаленно смутно напоминает fprintf(f,"<html>..."); в срр :(


Это оно и есть. Только параметры именованные. Когда их больше двух десятков например, c printf замучаешься.
Плюс поддерживаются всякие списки обычно, условия там в шаблоне, иерархия объектов (структурированные данные то есть)

Вообще список шаблонизаторов (template engine) довольно обширен. Вот например
https://stackoverflow.com/questions/355650/c-html-template-framework-templatizing-library-html-generator-library
Re[7]: xml + xslt -> html
От: gok Россия  
Дата: 02.03.18 00:30
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Здравствуйте, gok, Вы писали:


gok>>это впечатляет: Returns "Hello world!"

gok>>как это все организовать для создания самого хтмл? (только вышел на эту тропу, сорри)

gok>>render(..) выплевывает форматированную строку данных по введенному шаблону (Returns "Hello world!"), и как ее теперь вставить в хтмл файл на выходе?


bnk>Ну так в моем примере выше HTML же. Должна вернуть "<h1>Hello world!</h1>"

bnk>Я бы создал файл шаблона (на диске, реальный HTML файл), потому сделал структуру данных по образу и подобию, потом render()

gok>>Что-то эта sdk отдаленно смутно напоминает fprintf(f,"<html>..."); в срр


bnk>Это оно и есть. Только параметры именованные. Когда их больше двух десятков например, c printf замучаешься.

bnk>Плюс поддерживаются всякие списки обычно, условия там в шаблоне, иерархия объектов (структурированные данные то есть)

bnk>Вообще список шаблонизаторов (template engine) довольно обширен. Вот например

bnk>https://stackoverflow.com/questions/355650/c-html-template-framework-templatizing-library-html-generator-library

О, вроде доходит! в шаблонизаторном подходе ненужно ХМЛ! Он уже внутри срр, который считывает темплейт с ключевыми нодами, заполняет их данными и выдает готовый хтмл.
Очень интересная технология. Пошел пробовать.
gok
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.