|
|
| version 1.33, 2001/10/23 12:53:22 | version 1.37, 2001/10/26 15:55:20 |
|---|---|
| Line 77 static void _createElement(Request& r, c | Line 77 static void _createElement(Request& r, c |
| Pool& pool=r.pool(); | Pool& pool=r.pool(); |
| VXdoc& vdoc=*static_cast<VXdoc *>(r.self); | VXdoc& vdoc=*static_cast<VXdoc *>(r.self); |
| const String& tagName=params->as_string(0, "tagName must be string"); | Temp_lang temp_lang(r, String::UL_XML); |
| Value& tagName_code=params->as_junction(0, "tagName must be string"); | |
| const String& tagName=r.process(tagName_code).as_string(); | |
| try { | try { |
| XalanNode *node= | XalanNode *node= |
| Line 109 static void _createTextNode(Request& r, | Line 111 static void _createTextNode(Request& r, |
| Pool& pool=r.pool(); | Pool& pool=r.pool(); |
| VXdoc& vdoc=*static_cast<VXdoc *>(r.self); | VXdoc& vdoc=*static_cast<VXdoc *>(r.self); |
| const String& data=params->as_string(0, "data must be string"); | Temp_lang temp_lang(r, String::UL_XML); |
| Value& data_code=params->as_junction(0, "data must be string"); | |
| const String& data=r.process(data_code).as_string(); | |
| XalanNode *node= | XalanNode *node= |
| vdoc.get_document(pool, &method_name). | vdoc.get_document(pool, &method_name). |
| Line 381 static void create_optioned_listener( | Line 385 static void create_optioned_listener( |
| if(params->size()>index) { | if(params->size()>index) { |
| Value& voptions=params->as_no_junction(index, "options must be string"); | Value& voptions=params->as_no_junction(index, "options must be string"); |
| if(voptions.is_defined()) { | if(voptions.is_defined()) { |
| if(Hash *options=voptions.get_hash()) { | if(Hash *options=voptions.get_hash(&method_name)) { |
| // $.method[xml|html|text] | // $.method[xml|html|text] |
| if(Value *vmethod=static_cast<Value *>(options->get(*new(pool) | if(Value *vmethod=static_cast<Value *>(options->get(*new(pool) |
| String(pool, XDOC_OUTPUT_METHOD_OPTION_NAME)))) | String(pool, XDOC_OUTPUT_METHOD_OPTION_NAME)))) |
| Line 621 static void add_xslt_param(const Hash::K | Line 625 static void add_xslt_param(const Hash::K |
| XalanDOMString(attribute_cstr), | XalanDOMString(attribute_cstr), |
| XalanDOMString(meaning_cstr)); | XalanDOMString(meaning_cstr)); |
| } | } |
| /* | |
| static void _transform(Request& r, const String& method_name, MethodParams *params) { | |
| Pool& pool=r.pool(); | |
| VXdoc& vdoc=*static_cast<VXdoc *>(r.self); | |
| // params | |
| if(params->size()>1) { | |
| Value& vparams=params->as_no_junction(1, "transform parameters parameter must be string"); | |
| if(vparams.is_defined()) | |
| if(Hash *params=vparams.get_hash()) | |
| params->for_each(add_xslt_param, &vdoc.transformer()); | |
| else | |
| throw Exception(0, 0, | |
| &method_name, | |
| "transform parameters parameter must be hash"); | |
| } | |
| // source | |
| const XalanParsedSource &parsed_source=vdoc.get_parsed_source(pool, &method_name); | |
| // stylesheet | |
| const String& stylesheet_file_name=params->as_string(0, "file name must be string"); | |
| const String& stylesheet_filespec=r.absolute(stylesheet_file_name); | |
| //_asm int 3; | |
| Stylesheet_connection& connection=XSLT_stylesheet_manager->get_connection(stylesheet_filespec); | |
| // target | |
| XalanDocument* target=vdoc.parser_liaison().createDocument(); | |
| // transform | |
| try { | |
| vdoc.transformer().transform2( | |
| parsed_source, | |
| &connection.stylesheet(true/*nocache* /), | |
| target); | |
| } | |
| catch (XSLException& e) { | |
| connection.close(); | |
| Exception::provide_source(pool, &stylesheet_file_name, e); | |
| } | |
| catch (SAXParseException& e) { | |
| connection.close(); | |
| Exception::provide_source(pool, &stylesheet_file_name, e); | |
| } | |
| catch (SAXException& e) { | |
| connection.close(); | |
| Exception::provide_source(pool, &stylesheet_file_name, e); | |
| } | |
| catch (XMLException& e) { | |
| connection.close(); | |
| Exception::provide_source(pool, &stylesheet_file_name, e); | |
| } | |
| catch(const XalanDOMException& e) { | |
| connection.close(); | |
| Exception::provide_source(pool, &stylesheet_file_name, e); | |
| } | |
| // write out result | |
| VXdoc& result=*new(pool) VXdoc(pool); | |
| result.set_document(*target); | |
| r.write_no_lang(result); | |
| } | |
| */ | |
| static void _transform(Request& r, const String& method_name, MethodParams *params) { | static void _transform(Request& r, const String& method_name, MethodParams *params) { |
| Pool& pool=r.pool(); | Pool& pool=r.pool(); |
| VXdoc& vdoc=*static_cast<VXdoc *>(r.self); | VXdoc& vdoc=*static_cast<VXdoc *>(r.self); |
| Line 692 static void _transform(Request& r, const | Line 634 static void _transform(Request& r, const |
| if(params->size()>1) { | if(params->size()>1) { |
| Value& vparams=params->as_no_junction(1, "transform parameters parameter must be string"); | Value& vparams=params->as_no_junction(1, "transform parameters parameter must be string"); |
| if(vparams.is_defined()) | if(vparams.is_defined()) |
| if(Hash *params=vparams.get_hash()) | if(Hash *params=vparams.get_hash(&method_name)) |
| params->for_each(add_xslt_param, &vdoc.transformer()); | params->for_each(add_xslt_param, &vdoc.transformer()); |
| else | else |
| throw Exception(0, 0, | throw Exception(0, 0, |
| Line 700 static void _transform(Request& r, const | Line 642 static void _transform(Request& r, const |
| "transform parameters parameter must be hash"); | "transform parameters parameter must be hash"); |
| } | } |
| // source | |
| XalanDocument &xalan_document=vdoc.get_document(pool, &method_name); | |
| // stylesheet | // stylesheet |
| const String& stylesheet_file_name=params->as_string(0, "file name must be string"); | const String& stylesheet_file_name=params->as_string(0, "file name must be string"); |
| const String& stylesheet_filespec=r.absolute(stylesheet_file_name); | const String& stylesheet_filespec=r.absolute(stylesheet_file_name); |
| Line 710 static void _transform(Request& r, const | Line 649 static void _transform(Request& r, const |
| Stylesheet_connection& connection=stylesheet_manager->get_connection(stylesheet_filespec); | Stylesheet_connection& connection=stylesheet_manager->get_connection(stylesheet_filespec); |
| // target | // target |
| XalanDocument* target=vdoc.parser_liaison().createDocument(); | XalanDocument* target=vdoc.parser_xerces_liaison().createDocument(); |
| // transform | // transform |
| try { | try { |
| vdoc.transformer().transform2( | // note: |
| &xalan_document, | // actually, never found any difference between the two |
| &connection.stylesheet(true/*nocache*/), | // but still there some extra "xerces" words at start of transform body |
| target); | // wich were originally "xalan" |
| // not daring to change that | |
| if(vdoc.has_parsed_source()) { // set|load, not create? | |
| vdoc.transformer().transform2( | |
| vdoc.get_parsed_source(pool, &method_name), | |
| &connection.stylesheet(true/*nocache*/), | |
| target); | |
| } else { | |
| target=vdoc.parser_xerces_liaison().createDocument(); | |
| vdoc.transformer().transform2( | |
| vdoc.get_document(pool, &method_name), | |
| &connection.stylesheet(true/*nocache*/), | |
| target); | |
| } | |
| } | } |
| catch (XSLException& e) { | catch (XSLException& e) { |
| connection.close(); | connection.close(); |