@@ -124,7 +124,7 @@ URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#
124
124
PHP_FUNCTION (xsl_xsltprocessor_import_stylesheet )
125
125
{
126
126
zval * id , * docp = NULL ;
127
- xmlDoc * doc ;
127
+ xmlDoc * doc = NULL ;
128
128
xsltStylesheetPtr sheetp , oldsheetp ;
129
129
xmlDocPtr newdocp ;
130
130
xsl_object * intern ;
@@ -170,7 +170,7 @@ URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#
170
170
PHP_FUNCTION (xsl_xsltprocessor_transform_to_doc )
171
171
{
172
172
zval * id , * rv = NULL , * docp = NULL ;
173
- xmlDoc * doc ;
173
+ xmlDoc * doc = NULL ;
174
174
xmlDoc * newdocp ;
175
175
xsltStylesheetPtr sheetp ;
176
176
int ret ;
@@ -210,7 +210,41 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_doc)
210
210
*/
211
211
PHP_FUNCTION (xsl_xsltprocessor_transform_to_uri )
212
212
{
213
- DOM_NOT_IMPLEMENTED ();
213
+ zval * id , * docp = NULL ;
214
+ xmlDoc * doc = NULL ;
215
+ xmlDoc * newdocp ;
216
+ xsltStylesheetPtr sheetp ;
217
+ int ret , uri_len ;
218
+ char * * params = NULL , * uri ;
219
+ xsl_object * intern ;
220
+ node_object * docobj ;
221
+
222
+ id = getThis ();
223
+ intern = (xsl_object * )zend_object_store_get_object (id TSRMLS_CC );
224
+ sheetp = (xsltStylesheetPtr ) intern -> ptr ;
225
+
226
+ if (zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "os" , & docp , & uri , & uri_len ) == FAILURE ) {
227
+ RETURN_FALSE ;
228
+ }
229
+
230
+ DOC_GET_OBJ (doc , docp , xmlDocPtr , docobj );
231
+
232
+ if (intern -> parameter ) {
233
+ params = php_xsl_xslt_make_params (intern -> parameter , 0 TSRMLS_CC );
234
+ }
235
+ newdocp = xsltApplyStylesheet (sheetp , doc , (const char * * )params );
236
+
237
+ if (params ) {
238
+ efree (params );
239
+ }
240
+
241
+ ret = -1 ;
242
+ if (newdocp ) {
243
+ ret = xsltSaveResultToFilename (uri , newdocp , sheetp , 0 );
244
+ xmlFreeDoc (newdocp );
245
+ }
246
+
247
+ RETVAL_LONG (ret );
214
248
}
215
249
/* }}} end xsl_xsltprocessor_transform_to_uri */
216
250
@@ -220,7 +254,7 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_uri)
220
254
PHP_FUNCTION (xsl_xsltprocessor_transform_to_xml )
221
255
{
222
256
zval * id , * docp = NULL ;
223
- xmlDoc * doc ;
257
+ xmlDoc * doc = NULL ;
224
258
xmlDoc * newdocp ;
225
259
xsltStylesheetPtr sheetp ;
226
260
int ret ;
@@ -247,15 +281,20 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_xml)
247
281
if (params ) {
248
282
efree (params );
249
283
}
250
- ret = xsltSaveResultToString (& doc_txt_ptr , & doc_txt_len , newdocp , sheetp );
284
+
285
+ ret = -1 ;
286
+ if (newdocp ) {
287
+ ret = xsltSaveResultToString (& doc_txt_ptr , & doc_txt_len , newdocp , sheetp );
288
+ if (doc_txt_ptr ) {
289
+ RETVAL_STRINGL (doc_txt_ptr , doc_txt_len , 1 );
290
+ xmlFree (doc_txt_ptr );
291
+ }
292
+ xmlFreeDoc (newdocp );
293
+ }
251
294
252
295
if (ret < 0 ) {
253
296
RETURN_FALSE ;
254
297
}
255
-
256
- RETVAL_STRINGL (doc_txt_ptr , doc_txt_len , 1 );
257
- xmlFree (doc_txt_ptr );
258
- xmlFreeDoc (newdocp );
259
298
}
260
299
/* }}} end xsl_xsltprocessor_transform_to_xml */
261
300
0 commit comments