Diff for /parser3/src/classes/xdoc.C between versions 1.33 and 1.37

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();

Removed from v.1.33  
changed lines
  Added in v.1.37


E-mail: