PHP_FUNCTION(xsl_xsltprocessor_import_stylesheet)
{
zval *id, *docp = NULL;
- xmlDoc *doc;
+ xmlDoc *doc = NULL;
xsltStylesheetPtr sheetp, oldsheetp;
xmlDocPtr newdocp;
xsl_object *intern;
PHP_FUNCTION(xsl_xsltprocessor_transform_to_doc)
{
zval *id, *rv = NULL, *docp = NULL;
- xmlDoc *doc;
+ xmlDoc *doc = NULL;
xmlDoc *newdocp;
xsltStylesheetPtr sheetp;
int ret;
*/
PHP_FUNCTION(xsl_xsltprocessor_transform_to_uri)
{
- DOM_NOT_IMPLEMENTED();
+ zval *id, *docp = NULL;
+ xmlDoc *doc = NULL;
+ xmlDoc *newdocp;
+ xsltStylesheetPtr sheetp;
+ int ret, uri_len;
+ char **params = NULL, *uri;
+ xsl_object *intern;
+ node_object *docobj;
+
+ id = getThis();
+ intern = (xsl_object *)zend_object_store_get_object(id TSRMLS_CC);
+ sheetp = (xsltStylesheetPtr) intern->ptr;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "os", &docp, &uri, &uri_len) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ DOC_GET_OBJ(doc, docp, xmlDocPtr, docobj);
+
+ if (intern->parameter) {
+ params = php_xsl_xslt_make_params(intern->parameter, 0 TSRMLS_CC);
+ }
+ newdocp = xsltApplyStylesheet(sheetp, doc, (const char**)params);
+
+ if (params) {
+ efree(params);
+ }
+
+ ret = -1;
+ if (newdocp) {
+ ret = xsltSaveResultToFilename(uri, newdocp, sheetp, 0);
+ xmlFreeDoc(newdocp);
+ }
+
+ RETVAL_LONG(ret);
}
/* }}} end xsl_xsltprocessor_transform_to_uri */
PHP_FUNCTION(xsl_xsltprocessor_transform_to_xml)
{
zval *id, *docp = NULL;
- xmlDoc *doc;
+ xmlDoc *doc = NULL;
xmlDoc *newdocp;
xsltStylesheetPtr sheetp;
int ret;
if (params) {
efree(params);
}
- ret = xsltSaveResultToString(&doc_txt_ptr, &doc_txt_len, newdocp, sheetp);
+
+ ret = -1;
+ if (newdocp) {
+ ret = xsltSaveResultToString(&doc_txt_ptr, &doc_txt_len, newdocp, sheetp);
+ if (doc_txt_ptr) {
+ RETVAL_STRINGL(doc_txt_ptr, doc_txt_len, 1);
+ xmlFree(doc_txt_ptr);
+ }
+ xmlFreeDoc(newdocp);
+ }
if (ret < 0) {
RETURN_FALSE;
}
-
- RETVAL_STRINGL(doc_txt_ptr, doc_txt_len, 1);
- xmlFree(doc_txt_ptr);
- xmlFreeDoc(newdocp);
}
/* }}} end xsl_xsltprocessor_transform_to_xml */