mirror of
https://github.com/php/php-src.git
synced 2025-08-16 22:18:50 +02:00
MFH: add doXInclude property to allow processor to perform XIncludes
This commit is contained in:
parent
aa19f65f56
commit
8d1427dd98
1 changed files with 19 additions and 6 deletions
|
@ -411,7 +411,7 @@ PHP_FUNCTION(xsl_xsltprocessor_import_stylesheet)
|
||||||
/* }}} end xsl_xsltprocessor_import_stylesheet */
|
/* }}} end xsl_xsltprocessor_import_stylesheet */
|
||||||
|
|
||||||
|
|
||||||
static xmlDocPtr php_xsl_apply_stylesheet(xsl_object *intern, xsltStylesheetPtr style, zval *docp TSRMLS_DC)
|
static xmlDocPtr php_xsl_apply_stylesheet(zval *id, xsl_object *intern, xsltStylesheetPtr style, zval *docp TSRMLS_DC)
|
||||||
{
|
{
|
||||||
xmlDocPtr newdocp;
|
xmlDocPtr newdocp;
|
||||||
xmlDocPtr doc = NULL;
|
xmlDocPtr doc = NULL;
|
||||||
|
@ -420,6 +420,8 @@ static xmlDocPtr php_xsl_apply_stylesheet(xsl_object *intern, xsltStylesheetPtr
|
||||||
php_libxml_node_object *object;
|
php_libxml_node_object *object;
|
||||||
char **params = NULL;
|
char **params = NULL;
|
||||||
int clone;
|
int clone;
|
||||||
|
zval *doXInclude, *member;
|
||||||
|
zend_object_handlers *std_hnd;
|
||||||
|
|
||||||
node = php_libxml_import_node(docp TSRMLS_CC);
|
node = php_libxml_import_node(docp TSRMLS_CC);
|
||||||
|
|
||||||
|
@ -454,6 +456,17 @@ static xmlDocPtr php_xsl_apply_stylesheet(xsl_object *intern, xsltStylesheetPtr
|
||||||
ctxt = xsltNewTransformContext(style, doc);
|
ctxt = xsltNewTransformContext(style, doc);
|
||||||
ctxt->_private = (void *) intern;
|
ctxt->_private = (void *) intern;
|
||||||
|
|
||||||
|
std_hnd = zend_get_std_object_handlers();
|
||||||
|
|
||||||
|
MAKE_STD_ZVAL(member);
|
||||||
|
ZVAL_STRING(member, "doXInclude", 0);
|
||||||
|
doXInclude = std_hnd->read_property(id, member, BP_VAR_IS TSRMLS_CC);
|
||||||
|
if (Z_TYPE_P(doXInclude) != IS_NULL) {
|
||||||
|
convert_to_long(doXInclude);
|
||||||
|
ctxt->xinclude = Z_LVAL_P(doXInclude);
|
||||||
|
}
|
||||||
|
efree(member);
|
||||||
|
|
||||||
newdocp = xsltApplyStylesheetUser(style, doc, (const char**) params, NULL, NULL, ctxt);
|
newdocp = xsltApplyStylesheetUser(style, doc, (const char**) params, NULL, NULL, ctxt);
|
||||||
|
|
||||||
xsltFreeTransformContext(ctxt);
|
xsltFreeTransformContext(ctxt);
|
||||||
|
@ -501,7 +514,7 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_doc)
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
newdocp = php_xsl_apply_stylesheet(intern, sheetp, docp TSRMLS_CC);
|
newdocp = php_xsl_apply_stylesheet(id, intern, sheetp, docp TSRMLS_CC);
|
||||||
|
|
||||||
if (newdocp) {
|
if (newdocp) {
|
||||||
DOM_RET_OBJ(rv, (xmlNodePtr) newdocp, &ret, NULL);
|
DOM_RET_OBJ(rv, (xmlNodePtr) newdocp, &ret, NULL);
|
||||||
|
@ -532,7 +545,7 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_uri)
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
newdocp = php_xsl_apply_stylesheet(intern, sheetp, docp TSRMLS_CC);
|
newdocp = php_xsl_apply_stylesheet(id, intern, sheetp, docp TSRMLS_CC);
|
||||||
|
|
||||||
ret = -1;
|
ret = -1;
|
||||||
if (newdocp) {
|
if (newdocp) {
|
||||||
|
@ -565,7 +578,7 @@ PHP_FUNCTION(xsl_xsltprocessor_transform_to_xml)
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
newdocp = php_xsl_apply_stylesheet(intern, sheetp, docp TSRMLS_CC);
|
newdocp = php_xsl_apply_stylesheet(id, intern, sheetp, docp TSRMLS_CC);
|
||||||
|
|
||||||
ret = -1;
|
ret = -1;
|
||||||
if (newdocp) {
|
if (newdocp) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue