summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrandomdan <randomdan@localhost>2013-01-09 20:30:35 +0000
committerrandomdan <randomdan@localhost>2013-01-09 20:30:35 +0000
commitf2322231ff6ba56b9b9c1e873eb7b255de532fe8 (patch)
treea27f7a7f201b9ad74cc684fa4462875e7fde79bf
parentRegister exslt functions on start up (diff)
downloadproject2-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.cpp6
-rw-r--r--project2/xml/transformHtml.cpp8
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> {