这篇教程C++ xsltApplyStylesheet函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中xsltApplyStylesheet函数的典型用法代码示例。如果您正苦于以下问题:C++ xsltApplyStylesheet函数的具体用法?C++ xsltApplyStylesheet怎么用?C++ xsltApplyStylesheet使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了xsltApplyStylesheet函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: xsltApplyStylesheetbool XSLTUtils::XSLTTransform(std::string& output){ const char *params[16+1]; params[0] = NULL; m_xmlOutput = xsltApplyStylesheet(m_xsltStylesheet, m_xmlInput, params); if (!m_xmlOutput) { CLog::Log(LOGDEBUG, "XSLT: xslt transformation failed"); return false; } xmlChar *xmlResultBuffer = NULL; int xmlResultLength = 0; int res = xsltSaveResultToString(&xmlResultBuffer, &xmlResultLength, m_xmlOutput, m_xsltStylesheet); if (res == -1) { xmlFree(xmlResultBuffer); return false; } output.append((const char *)xmlResultBuffer, xmlResultLength); xmlFree(xmlResultBuffer); return true;}
开发者ID:Elzevir,项目名称:xbmc,代码行数:25,
示例2: transform/* * call-seq: * transform(document, params = []) * * Apply an XSLT stylesheet to an XML::Document. * +params+ is an array of strings used as XSLT parameters. * returns Nokogiri::XML::Document * * Example: * * doc = Nokogiri::XML(File.read(ARGV[0])) * xslt = Nokogiri::XSLT(File.read(ARGV[1])) * puts xslt.transform(doc, ['key', 'value']) * */static VALUE transform(int argc, VALUE* argv, VALUE self){ VALUE xmldoc, paramobj ; xmlDocPtr xml ; xmlDocPtr result ; xsltStylesheetPtr ss ; const char** params ; int param_len, j ; rb_scan_args(argc, argv, "11", &xmldoc, ¶mobj); if (paramobj == Qnil) { paramobj = rb_ary_new2(0) ; } Data_Get_Struct(xmldoc, xmlDoc, xml); Data_Get_Struct(self, xsltStylesheet, ss); param_len = NUM2INT(rb_funcall(paramobj, rb_intern("length"), 0)); params = calloc((size_t)param_len+1, sizeof(char*)); for (j = 0 ; j < param_len ; j++) { VALUE entry = rb_ary_entry(paramobj, j); const char * ptr = StringValuePtr(entry); params[j] = ptr; } params[param_len] = 0 ; result = xsltApplyStylesheet(ss, xml, params); free(params); return Nokogiri_wrap_xml_document(0, result) ;}
开发者ID:genki,项目名称:nokogiri,代码行数:44,
示例3: transform/* * call-seq: * transform(document, params = []) * * Apply an XSLT stylesheet to an XML::Document. * +params+ is an array of strings used as XSLT parameters. * returns Nokogiri::XML::Document * * Example: * * doc = Nokogiri::XML(File.read(ARGV[0])) * xslt = Nokogiri::XSLT(File.read(ARGV[1])) * puts xslt.transform(doc, ['key', 'value']) * */static VALUE transform(int argc, VALUE* argv, VALUE self){ VALUE xmldoc, paramobj ; xmlDocPtr xml ; xmlDocPtr result ; xsltStylesheetPtr ss ; const char** params ; int param_len, j ; rb_scan_args(argc, argv, "11", &xmldoc, ¶mobj); if (NIL_P(paramobj)) { paramobj = rb_ary_new2(0) ; } Data_Get_Struct(xmldoc, xmlDoc, xml); Data_Get_Struct(self, xsltStylesheet, ss); param_len = RARRAY_LEN(paramobj); params = calloc((size_t)param_len+1, sizeof(char*)); for (j = 0 ; j < param_len ; j++) { VALUE entry = rb_ary_entry(paramobj, j); const char * ptr = StringValuePtr(entry); params[j] = ptr; } params[param_len] = 0 ; result = xsltApplyStylesheet(ss, xml, params); free(params); if (!result) rb_raise(rb_eRuntimeError, "could not perform xslt transform on document"); return Nokogiri_wrap_xml_document(0, result) ;}
开发者ID:boof,项目名称:farmfacts,代码行数:46,
示例4: quote_nbspQString XSL::process(const QString &my_xml){ QString my_xsl; /* Petr Cimprich, Sablot developer: is predefined in HTML but not in XML ... use Unicode numerical entity instead:  */ my_xsl = quote_nbsp(my_xml); xmlDocPtr doc = xmlParseMemory(my_xsl.toUtf8(), my_xsl.toUtf8().length()); if (doc == NULL){ string s; s = static_cast<string>(my_xsl.toLocal8Bit()); log(L_WARN, "Parse XML error: %s", s.c_str()); return QString::null; } const char *params[1]; params[0] = NULL; xmlDocPtr res = xsltApplyStylesheet(d->styleSheet, doc, params); if (res == NULL){ log(L_WARN, "Apply stylesheet errror"); xmlFreeDoc(doc); return QString::null; } xmlFreeDoc(doc); xmlOutputBufferPtr buf = xmlAllocOutputBuffer(NULL); xsltSaveResultTo(buf, res, d->styleSheet); xmlFreeDoc(res); QString result = QString::fromUtf8((char*)(buf->buffer->content)); xmlOutputBufferClose(buf);; return result;}
开发者ID:BackupTheBerlios,项目名称:sim-im-svn,代码行数:34,
示例5: mainint main( int argc, char *argv[] ){ if( argc != 3 ) { std::cerr << "usage: testlibxslt1 <XSLT file> <XML file>" << std::endl; return 1; } LIBXML_TEST_VERSION xsltStylesheetPtr script = xsltParseStylesheetFile( ( const xmlChar *)argv[1] ); xmlDocPtr doc = xmlParseFile( argv[2] ); const char *params[1] = { NULL }; xmlDocPtr res = xsltApplyStylesheet( script, doc, params ); xmlChar *resTxt; int resLen; xsltSaveResultToString( &resTxt, &resLen, res, script ); std::cout << resTxt; xmlFreeDoc( res ); xmlFreeDoc( doc ); xsltFreeStylesheet( script ); xsltCleanupGlobals( ); xmlCleanupParser( ); return 0;}
开发者ID:ProjectTegano,项目名称:Tegano,代码行数:28,
示例6: xsltParseStylesheetFileXsltproc::ReturnValue Xsltproc::execute(){ Xsltproc::ReturnValue retval = Xsltproc::Success; try { if( freopen(mErrorFilename.toUtf8().data(),"w",stderr) == NULL ) throw Xsltproc::GenericFailure; mStylesheet = xsltParseStylesheetFile( (const xmlChar*)mStyleSheetFilename.toUtf8().data() ); if(mStylesheet == 0) throw Xsltproc::InvalidStylesheet; mXml = xmlParseFile( (const char*)mXmlFilename.toUtf8().data() ); if(mXml == 0) throw Xsltproc::InvalidXmlFile; mOutput = xsltApplyStylesheet(mStylesheet, mXml, (const char**)mParams); if(mOutput == 0) throw Xsltproc::GenericFailure; FILE *foutput = 0; foutput = fopen(mOutputFilename.toUtf8().data(),"w"); if( foutput == 0 ) throw Xsltproc::CouldNotOpenOutput; xsltSaveResultToFile(foutput, mOutput, mStylesheet); fclose(foutput); } catch(Xsltproc::ReturnValue e) { retval = e; } fclose(stderr); freeResources(); return retval;}
开发者ID:adamb924,项目名称:Gloss,代码行数:33,
示例7: xsltSetLoaderFuncDocumentImpl* XSLTProcessorImpl::transformDocument(DocumentImpl* doc){ // FIXME: Right now we assume |doc| is unparsed, but if it has been parsed we will need to serialize it // and then feed that resulting source to libxslt. m_resultOutput = ""; if (!m_stylesheet || !m_stylesheet->document()) return 0; globalSheet = m_stylesheet; xsltSetLoaderFunc(stylesheetLoadFunc); xsltStylesheetPtr sheet = m_stylesheet->compileStyleSheet(); globalSheet = 0; xsltSetLoaderFunc(0); if (!sheet) return 0; m_stylesheet->clearDocuments(); // Get the parsed source document. xmlDocPtr sourceDoc = (xmlDocPtr)doc->transformSource(); xmlDocPtr resultDoc = xsltApplyStylesheet(sheet, sourceDoc, NULL); DocumentImpl* result = documentFromXMLDocPtr(resultDoc, sheet); xsltFreeStylesheet(sheet); return result;}
开发者ID:BackupTheBerlios,项目名称:wxwebcore-svn,代码行数:26,
示例8: mainint main(int argc, char **argv) { xsltStylesheetPtr stylesheet = NULL; xmlDocPtr doc, res; char* stylesheetfile; char* infile; char *outfile; if (argc!=4) { printf("XSLT Transform/n2009 by thom using libxml2/nUsage:/n/txslt-transform <stylesheet> <infile> <outfile>/n"); exit(1); } stylesheetfile = argv[1]; infile = argv[2]; outfile = argv[3]; xmlSubstituteEntitiesDefault(1); xmlLoadExtDtdDefaultValue = 1; stylesheet = xsltParseStylesheetFile(BAD_CAST stylesheetfile); doc = xmlParseFile(infile); res = xsltApplyStylesheet(stylesheet, doc, 0); printf("use /"%s/" to transform /"%s/" to /"%s/" .../n", stylesheetfile, infile, outfile); xsltSaveResultToFilename(outfile, res, stylesheet, 0); xsltFreeStylesheet(stylesheet); xmlFreeDoc(res); xmlFreeDoc(doc); xsltCleanupGlobals(); xmlCleanupParser(); printf("/tDone./n"); exit(0);}
开发者ID:stzschoppe,项目名称:sw-ergonomie,代码行数:32,
示例9: parse std::string parse(const std::string& xml, const std::string& name, const std::string& url, const std::string& html, const std::string& htmlheader, std::vector<std::pair<std::string, std::string> >& attaches) { std::string ret(""); std::string pp = getParserPath(url); xsltStylesheetPtr xslt = xsltParseStylesheetFile(BAD_CAST pp.c_str()); htmlDocPtr doc = NULL; static std::string encoding("gb18030"); std::string mimetype = getMIMEType(htmlheader, html); if (!mimetype.empty() && mimetype == "text/xml") { doc = html.empty() ? NULL : xmlReadDoc(BAD_CAST html.c_str(), NULL, encoding.c_str(), XML_PARSE_RECOVER); } else { doc = html.empty() ? NULL : htmlParseDoc(BAD_CAST html.c_str(), encoding.c_str()); } if (doc != NULL) { const char *params[7] = {0}; size_t n_param = 0; params[n_param] = NULL; xmlDocPtr res = xsltApplyStylesheet(xslt, doc, params); //free_xslt_params(params, n_param); if (res != NULL) { xmlChar *s = NULL; int len = 0; if (xsltSaveResultToString(&s, &len, res, xslt) >= 0) { ret.assign((const char *)s, len); xmlFree(s); } xmlFreeDoc(res); } xmlFreeDoc(doc); } return ret; }
开发者ID:newle,项目名称:templatePA,代码行数:32,
示例10: xsltTransformToFileReturnCode xsltTransformToFile(xmlDocPtr doc, const char *xslFilename, const char *outputFilename) { xmlDocPtr res; xsltStylesheetPtr style; if( (xslFilename == NULL) || (outputFilename == NULL) ) { printMsg(MESSAGETYPE_ERROR, "xsltTransformToFile: Null pointer error"); return FAILED; } style = xsltParseStylesheetFile ((const xmlChar *) xslFilename); if (style == NULL) { printMsg(MESSAGETYPE_ERROR, "xsltTransformToFile: Could not parse XSLT file: %s", xslFilename); return FAILED; } res = xsltApplyStylesheet(style, doc, NULL); if(res == NULL){ printMsg(MESSAGETYPE_ERROR, "xsltTransformToFile: Problem applying stylesheet"); return FAILED; } xsltSaveResultToFilename(outputFilename, res, style, 0); xmlFreeDoc(res); xsltFreeStylesheet(style); return SUCCESS;}
开发者ID:codingpoets,项目名称:tixi,代码行数:26,
示例11: xmlReadMemorystring XMLFunctions::xslt(string &data, string &style, ServerInterface &srvInterface) { xmlDocPtr doc; /* the resulting document tree */ xmlDocPtr styeSheet; /* the resulting document tree */ xsltStylesheetPtr ssPtr; const char *params[1]; int nbparams = 0; params[nbparams] = NULL; doc = xmlReadMemory(data.c_str(), data.size(), "noname.xml", NULL, 0); // xmlNode *root_element = NULL; // root_element = xmlDocGetRootElement(doc); // print_element_names(root_element); styeSheet = xmlReadMemory(style.c_str(), style.length(), "noname.xml", NULL, 0); ssPtr = xsltParseStylesheetDoc (styeSheet); xmlDocPtr result = xsltApplyStylesheet(ssPtr, doc, params); xmlChar * resultString; int stringLen; xsltSaveResultToString(&resultString, &stringLen, result, ssPtr); return string((char*) resultString);}
开发者ID:mikegong,项目名称:Vertica-Extension-Packages,代码行数:25,
示例12: exml_transform_fd_write/** * Write the transformed xml document out to a file descriptor. * @param xml The xml document * @param xsl The xml stylesheet * @param params The transform parameters * @param fd The source xml input descriptor * @return @c TRUE if successful, @c FALSE if an error occurs. * @ingroup EXML_XSLT_Group */int exml_transform_fd_write( EXML *xml, EXML_XSL *xsl, const char *params[], int fd ){ int ret; xmlDocPtr res, doc; CHECK_PARAM_POINTER_RETURN("xml", xml, FALSE); CHECK_PARAM_POINTER_RETURN("xsl", xsl, FALSE); exml_doc_write(xml, &doc); res = xsltApplyStylesheet(xsl->cur, doc, params); xmlFreeDoc(doc); if( !res ) { return FALSE; } ret = xsltSaveResultToFd(fd, res, xsl->cur); xmlFreeDoc(res); xsltCleanupGlobals(); if( ret < 0 ) return FALSE; return TRUE;}
开发者ID:playya,项目名称:Enlightenment,代码行数:39,
示例13: xmlDocGetRootElementstatic xmlDoc *test_xslt_transforms(xmlDoc *doc, GError **error){ struct xslt_files *info = xslt_files; xmlDoc *transformed; xsltStylesheetPtr xslt = NULL; xmlNode *root_element = xmlDocGetRootElement(doc); char *attribute; while ((info->root) && (strcasecmp(root_element->name, info->root) != 0)) { info++; } if (info->root) { attribute = xmlGetProp(xmlFirstElementChild(root_element), "name"); if (attribute) { if (strcasecmp(attribute, "subsurface") == 0) { free((void *)attribute); return doc; } free((void *)attribute); } xmlSubstituteEntitiesDefault(1); xslt = get_stylesheet(info->file); if (xslt == NULL) { parser_error(error, _("Can't open stylesheet (%s)/%s"), xslt_path, info->file); return doc; } transformed = xsltApplyStylesheet(xslt, doc, NULL); xmlFreeDoc(doc); xsltFreeStylesheet(xslt); return transformed; } return doc;}
开发者ID:syuxue,项目名称:subsurface,代码行数:35,
示例14: xsltFileNamevoid Docbook2XhtmlGeneratorJob::run(){ UMLDoc* umlDoc = UMLApp::app()->document(); xsltStylesheetPtr cur = NULL; xmlDocPtr doc, res; const char *params[16 + 1]; int nbparams = 0; params[nbparams] = NULL; umlDoc->writeToStatusBar(i18n("Exporting to XHTML...")); QString xsltFileName(KGlobal::dirs()->findResource("appdata", QLatin1String("docbook2xhtml.xsl"))); uDebug() << "XSLT file is'" << xsltFileName << "'"; QFile xsltFile(xsltFileName); xsltFile.open(QIODevice::ReadOnly); QString xslt = QString::fromLatin1(xsltFile.readAll()); uDebug() << "XSLT is'" << xslt << "'"; xsltFile.close(); QString localXsl = KGlobal::dirs()->findResource("data", QLatin1String("ksgmltools2/docbook/xsl/html/docbook.xsl")); uDebug() << "Local xsl is'" << localXsl << "'"; if (!localXsl.isEmpty()) { localXsl = QLatin1String("href=/"file://") + localXsl + QLatin1String("/""); xslt.replace(QRegExp(QLatin1String("href=/"http://[^/"]*/"")), localXsl); } KTemporaryFile tmpXsl; tmpXsl.setAutoRemove(false); tmpXsl.open(); QTextStream str (&tmpXsl); str << xslt; str.flush(); xmlSubstituteEntitiesDefault(1); xmlLoadExtDtdDefaultValue = 1; uDebug() << "Parsing stylesheet " << tmpXsl.fileName(); cur = xsltParseStylesheetFile((const xmlChar *)tmpXsl.fileName().toLatin1().constData()); uDebug() << "Parsing file " << m_docbookUrl.path(); doc = xmlParseFile((const char*)(m_docbookUrl.path().toUtf8())); uDebug() << "Applying stylesheet "; res = xsltApplyStylesheet(cur, doc, params); KTemporaryFile tmpXhtml; tmpXhtml.setAutoRemove(false); tmpXhtml.open(); uDebug() << "Writing HTML result to temp file: " << tmpXhtml.fileName(); xsltSaveResultToFd(tmpXhtml.handle(), res, cur); xsltFreeStylesheet(cur); xmlFreeDoc(res); xmlFreeDoc(doc); xsltCleanupGlobals(); xmlCleanupParser(); emit xhtmlGenerated(tmpXhtml.fileName());}
开发者ID:behlingc,项目名称:umbrello-behlingc,代码行数:59,
示例15: Transform void Transform(const TxmlDocHolder& srcDoc, TBuffer& dest, const TXslParams& params) { //xmlXIncludeProcessFlags(srcDoc.Get(), XSLT_PARSE_OPTIONS); if (!srcDoc) ythrow yexception() << "source xml is not valid: " << ErrorMessage; TxmlDocHolder res(xsltApplyStylesheet(Stylesheet.Get(), srcDoc.Get(), ~TParamsArray(params).Array)); // no params ENSURE(!!res, "Failed to apply xslt!"); SaveResult(res.Get(), Stylesheet.Get(), dest); }
开发者ID:Frankie-666,项目名称:tomita-parser,代码行数:8,
示例16: export_dives_xsltint export_dives_xslt(const char *filename, const bool selected, const int units, const char *export_xslt){ FILE *f; struct membuffer buf = { 0 }; xmlDoc *doc; xsltStylesheetPtr xslt = NULL; xmlDoc *transformed; int res = 0; char *params[3]; int pnr = 0; char unitstr[3]; if (verbose) fprintf(stderr, "export_dives_xslt with stylesheet %s/n", export_xslt); if (!filename) return report_error("No filename for export"); /* Save XML to file and convert it into a memory buffer */ save_dives_buffer(&buf, selected); /* * Parse the memory buffer into XML document and * transform it to selected export format, finally dumping * the XML into a character buffer. */ doc = xmlReadMemory(buf.buffer, buf.len, "divelog", NULL, 0); free_buffer(&buf); if (!doc) return report_error("Failed to read XML memory"); /* Convert to export format */ xslt = get_stylesheet(export_xslt); if (!xslt) return report_error("Failed to open export conversion stylesheet"); snprintf(unitstr, 3, "%d", units); params[pnr++] = "units"; params[pnr++] = unitstr; params[pnr++] = NULL; transformed = xsltApplyStylesheet(xslt, doc, (const char **)params); xmlFreeDoc(doc); /* Write the transformed export to file */ f = subsurface_fopen(filename, "w"); if (f) { xsltSaveResultToFile(f, transformed, xslt); fclose(f); /* Check write errors? */ } else { res = report_error("Failed to open %s for writing (%s)", filename, strerror(errno)); } xsltFreeStylesheet(xslt); xmlFreeDoc(transformed); return res;}
开发者ID:pidancier,项目名称:subsurface,代码行数:58,
|