@@ -396,7 +396,7 @@ PHP_FUNCTION(xsl_xsltprocessor_import_stylesheet)
396
396
} else {
397
397
intern -> hasKeys = clone_docu ;
398
398
}
399
-
399
+
400
400
if ((oldsheetp = (xsltStylesheetPtr )intern -> ptr )) {
401
401
/* free wrapper */
402
402
if (((xsltStylesheetPtr ) intern -> ptr )-> _private != NULL ) {
@@ -411,7 +411,7 @@ PHP_FUNCTION(xsl_xsltprocessor_import_stylesheet)
411
411
/* }}} end xsl_xsltprocessor_import_stylesheet */
412
412
413
413
414
- static xmlDocPtr php_xsl_apply_stylesheet (xsl_object * intern , xsltStylesheetPtr style , zval * docp TSRMLS_DC )
414
+ static xmlDocPtr php_xsl_apply_stylesheet (zval * id , xsl_object * intern , xsltStylesheetPtr style , zval * docp TSRMLS_DC )
415
415
{
416
416
xmlDocPtr newdocp ;
417
417
xmlDocPtr doc = NULL ;
@@ -420,6 +420,8 @@ static xmlDocPtr php_xsl_apply_stylesheet(xsl_object *intern, xsltStylesheetPtr
420
420
php_libxml_node_object * object ;
421
421
char * * params = NULL ;
422
422
int clone ;
423
+ zval * doXInclude , * member ;
424
+ zend_object_handlers * std_hnd ;
423
425
424
426
node = php_libxml_import_node (docp TSRMLS_CC );
425
427
@@ -453,7 +455,18 @@ static xmlDocPtr php_xsl_apply_stylesheet(xsl_object *intern, xsltStylesheetPtr
453
455
454
456
ctxt = xsltNewTransformContext (style , doc );
455
457
ctxt -> _private = (void * ) intern ;
456
-
458
+
459
+ std_hnd = zend_get_std_object_handlers ();
460
+
461
+ MAKE_STD_ZVAL (member );
462
+ ZVAL_STRING (member , "doXInclude" , 0 );
463
+ doXInclude = std_hnd -> read_property (id , member , BP_VAR_IS TSRMLS_CC );
464
+ if (Z_TYPE_P (doXInclude ) != IS_NULL ) {
465
+ convert_to_long (doXInclude );
466
+ ctxt -> xinclude = Z_LVAL_P (doXInclude );
467
+ }
468
+ efree (member );
469
+
457
470
newdocp = xsltApplyStylesheetUser (style , doc , (const char * * ) params , NULL , NULL , ctxt );
458
471
459
472
xsltFreeTransformContext (ctxt );
@@ -501,7 +514,7 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_doc)
501
514
RETURN_FALSE ;
502
515
}
503
516
504
- newdocp = php_xsl_apply_stylesheet (intern , sheetp , docp TSRMLS_CC );
517
+ newdocp = php_xsl_apply_stylesheet (id , intern , sheetp , docp TSRMLS_CC );
505
518
506
519
if (newdocp ) {
507
520
DOM_RET_OBJ (rv , (xmlNodePtr ) newdocp , & ret , NULL );
@@ -532,7 +545,7 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_uri)
532
545
RETURN_FALSE ;
533
546
}
534
547
535
- newdocp = php_xsl_apply_stylesheet (intern , sheetp , docp TSRMLS_CC );
548
+ newdocp = php_xsl_apply_stylesheet (id , intern , sheetp , docp TSRMLS_CC );
536
549
537
550
ret = -1 ;
538
551
if (newdocp ) {
@@ -565,7 +578,7 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_xml)
565
578
RETURN_FALSE ;
566
579
}
567
580
568
- newdocp = php_xsl_apply_stylesheet (intern , sheetp , docp TSRMLS_CC );
581
+ newdocp = php_xsl_apply_stylesheet (id , intern , sheetp , docp TSRMLS_CC );
569
582
570
583
ret = -1 ;
571
584
if (newdocp ) {
0 commit comments