diff options
author | randomdan <randomdan@localhost> | 2013-01-09 20:30:35 +0000 |
---|---|---|
committer | randomdan <randomdan@localhost> | 2013-01-09 20:30:35 +0000 |
commit | f2322231ff6ba56b9b9c1e873eb7b255de532fe8 (patch) | |
tree | a27f7a7f201b9ad74cc684fa4462875e7fde79bf | |
parent | Register exslt functions on start up (diff) | |
download | project2-f2322231ff6ba56b9b9c1e873eb7b255de532fe8.tar.bz2 project2-f2322231ff6ba56b9b9c1e873eb7b255de532fe8.tar.xz project2-f2322231ff6ba56b9b9c1e873eb7b255de532fe8.zip |
Add transform code to default error stage
Do xslt transform according to PI, not source value
-rw-r--r-- | project2/cgi/cgiStageDefaultError.cpp | 6 | ||||
-rw-r--r-- | project2/xml/transformHtml.cpp | 8 |
2 files changed, 7 insertions, 7 deletions
diff --git a/project2/cgi/cgiStageDefaultError.cpp b/project2/cgi/cgiStageDefaultError.cpp index c5642d5..b8f0b4b 100644 --- a/project2/cgi/cgiStageDefaultError.cpp +++ b/project2/cgi/cgiStageDefaultError.cpp @@ -13,6 +13,12 @@ CgiApplicationEngine::DefaultErrorStage::DefaultErrorStage(const std::exception what(ex.what()), pres(new XmlPresenter(DefaultErrorStageResp, env()->errorTransformStyle, env()->errorContentType)) { + auto xp = dynamic_cast<TransformSource *>(pres.get()); + auto cp = dynamic_cast<ContentPresenter *>(pres.get()); + if (xp && cp && cp->contentType == this->env()->transformContentType) { + auto h = TransformTargetLoader::getFor(this->env()->transformTargetType)->create(root, Default); + xp->addTarget(h, root); + } } CgiApplicationEngine::DefaultErrorStage::~DefaultErrorStage() diff --git a/project2/xml/transformHtml.cpp b/project2/xml/transformHtml.cpp index 0348c87..f6a0431 100644 --- a/project2/xml/transformHtml.cpp +++ b/project2/xml/transformHtml.cpp @@ -59,7 +59,7 @@ class TransformXmlToHtml : public TransformImpl<xmlpp::Document, HtmlDocument> { { xmlpp::Document * data = const_cast<xmlpp::Document *>(cdata); typedef boost::shared_ptr<xsltStylesheet> XsltStyleSheetPtr; - XsltStyleSheetPtr cur = XsltStyleSheetPtr(xsltParseStylesheetFile(BAD_CAST stylesheet.c_str()), xsltFreeStylesheet); + XsltStyleSheetPtr cur = XsltStyleSheetPtr(xsltLoadStylesheetPI(data->cobj()), xsltFreeStylesheet); if (!cur) { throw xmlpp::exception("Failed to load stylesheet"); } @@ -73,12 +73,6 @@ class TransformXmlToHtml : public TransformImpl<xmlpp::Document, HtmlDocument> { } result->contentType = (char*)(cur.get()->mediaType); } - void configure(ScriptNodePtr e) - { - stylesheet = e->value("style").as<Glib::ustring>(); - } - private: - Glib::ustring stylesheet; }; class XmlTransformLoader : public TransformLoader::For<TransformXmlToHtml> { |