(PHP 4 >= 4.0.6)
xslt_set_scheme_handlers — Establecer los manejadores de esquemas para el procesador de XSLT
$xh
, array $handlers
)Registra los manejadores de esquemas (manejadores de XPath) para el documento.
xh
El identificador de enlace del procesador de XSLT, creado con xslt_create().
handlers
Un array con las siguientes claves: "get_all", "open", "get", "put", y "close".
Cada entrada debe ser un nombre de función o un array con el siguiente formato: array($objeto, "método").
Observe que el array dado no necesita contener todos los diferentes elementos de manejadores de esquemas (aunque podría), sino solamente lo necesario para cumplir con el formato "manejador" => "función" descrito arriba.
Cada una de las funciones de manejadores de esquemas llamadas individualmente están en los siguientes formatos:
string get_all(resource procesador, string esquema, string resto) resource open(resource procesador, string esquema, string resto) int get(resource procesador, resource fp, string &datos) int put(resource procesador, resource fp, string datos) void close(resource procesador, resource fp)
No devuelve ningún valor.
Ejemplo #1 Ejemplo de xslt_set_scheme_handlers()
He aquí una implementación de la función "file_exists()" de PHP.
<?php
// Descripción del manejador
function miGestorDeEsquemas($procesador, $esquema, $resto)
{
$resto = substr($resto,1); // para eliminar el primer / añadido automáticamente por el motor
if ($esquema == 'file_exists') {
// el resultado se embebe en un string xml pequeño
return '<?xml version="1.0" encoding="UTF-8"?><root>' . (file_exists($resto) ? 'true' : 'false') . '</root>';
}
}
$ArrayGestoresEsquemas = array('get_all' => 'miGestorDeEsquemas');
// Iniciar el motor
$parámetros = array();
$xh = xslt_create();
xslt_set_scheme_handlers($xh, $ArrayGestoresEsquemas);
$resultado = xslt_process($xh, "miFichero.xml", "miFichero.xsl", NULL, array(), $parámetros);
xslt_free($xh);
echo $resultado;
?>
Después, dentro de la hoja de estilo, se puede comprobar si cierto fichero existe con:
<xsl:if test="document('file_exists:otroFicheroXML.xml')/root='true'"> <!-- El fichero existe --> </xsl:if>