--- parser3/src/classes/xdoc.C 2005/12/16 10:15:12 1.149 +++ parser3/src/classes/xdoc.C 2007/02/28 19:09:23 1.151 @@ -9,7 +9,7 @@ #ifdef XML -static const char * const IDENT_XDOC_C="$Date: 2005/12/16 10:15:12 $"; +static const char * const IDENT_XDOC_C="$Date: 2007/02/28 19:09:23 $"; #include "libxml/tree.h" #include "libxml/HTMLtree.h" @@ -399,8 +399,12 @@ static void _create(Request& r, MethodPa // must be last action in if, see after if} } else { // [localName] - xmlChar* localName=r.transcode(param.as_string()); - + if (VFile* vfile=param.as_vfile(String::L_UNSPECIFIED)){ + xmldoc=xmlParseMemory(vfile->value_ptr(), vfile->value_size()); + if(!xmldoc || xmlHaveGenericErrors()) + throw XmlException(0); + } else { + xmlChar* localName=r.transcode(param.as_string()); #if 0 GdomeDocumentType *documentType=gdome_di_createDocumentType ( docimpl, @@ -414,15 +418,16 @@ static void _create(Request& r, MethodPa exc); /// +xalan createXMLDecl ? #endif - xmldoc=xmlNewDoc(0); - if(!xmldoc || xmlHaveGenericErrors()) - throw XmlException(0); - xmlNode* node=xmlNewChild((xmlNode*)xmldoc, NULL, localName, NULL); - if(!node || xmlHaveGenericErrors()) - throw XmlException(0); + xmldoc=xmlNewDoc(0); + if(!xmldoc || xmlHaveGenericErrors()) + throw XmlException(0); + xmlNode* node=xmlNewChild((xmlNode*)xmldoc, NULL, localName, NULL); + if(!node || xmlHaveGenericErrors()) + throw XmlException(0); - set_encoding=true; - // must be last action in if, see after if} + set_encoding=true; + // must be last action in if, see after if} + } } // must be first action after if} // replace any previous parsed source @@ -766,7 +771,7 @@ static void _transform(Request& r, Metho &transform_strings, transform_params }; - hash->for_each(add_xslt_param, &info); + hash->for_each(add_xslt_param, &info); transform_params[hash->count()*2]=0; } else throw Exception("parser.runtime",