xslt_set_scheme_handlers
(PHP 4 >= 4.0.6)
xslt_set_scheme_handlers — Set the scheme handlers for the XSLT processor
Описание
Registers the scheme handlers (XPath handlers) for the document.
Список параметров
- xh
-
The XSLT processor link identifier, created with xslt_create().
- handlers
-
An array with the following keys: "get_all", "open", "get", "put", and "close".
Every entry must be a function name or an array in the following format: array($obj, "method").
Note that the given array does not need to contain all of the different scheme handler elements (although it can), but it only needs to conform to the "handler" => "function" format described above.
Each of the individual scheme handler functions called are in the formats below:
string get_all(resource processor, string scheme, string rest) resource open(resource processor, string scheme, string rest) int get(resource processor, resource fp, string &data) int put(resource processor, resource fp, string data) void close(resource processor, resource fp)
Возвращаемые значения
Эта функция не возвращает значения после выполнения.
Примеры
Пример #1 xslt_set_scheme_handlers() example
For example, here is an implementation of the "file_exists()" PHP function.
<?php
// Definition of the handler
function mySchemeHandler($processor, $scheme, $rest)
{
$rest = substr($rest,1); // to remove the first / automatically added by the engine
if ($scheme == 'file_exists') {
// result is embedded in a small xml string
return '<?xml version="1.0" encoding="UTF-8"?><root>' . (file_exists($rest) ? 'true' : 'false') . '</root>';
}
}
$SchemeHandlerArray = array('get_all' => 'mySchemeHandler');
// Start the engine
$params = array();
$xh = xslt_create();
xslt_set_scheme_handlers($xh, $SchemeHandlerArray);
$result = xslt_process($xh, "myFile.xml", "myFile.xsl", NULL, array(), $params);
xslt_free($xh);
echo $result;
?>
Then, inside the stylesheet, you can test whether a certain file exists with:
<xsl:if test="document('file_exists:anotherXMLfile.xml')/root='true'"> <!-- The file exist --> </xsl:if>
- xslt_backend_info
- xslt_backend_name
- xslt_backend_version
- xslt_create
- xslt_errno
- xslt_error
- xslt_free
- xslt_getopt
- xslt_process
- xslt_set_base
- xslt_set_encoding
- xslt_set_error_handler
- xslt_set_log
- xslt_set_object
- xslt_set_sax_handler
- xslt_set_sax_handlers
- xslt_set_scheme_handler
- xslt_set_scheme_handlers
- xslt_setopt
Коментарии
<xsl:stylesheet version="2.0"
<xsl:output method="xhtml"/>
<xsl:param name="isin">
</xsl:param>
<xsl:template match="/aktien">
<html>
<head>
<title></title>
<meta charset="utf-8"/>
</head>
<body>
<xsl:for-each select="aktie">
<p>Name: <xsl:value-of select="name"/><br/>
<xsl:choose>
<xsl:when test="$isin=''">
Mittelwert: <xsl:value-of select="format-number(sum(kurse/kurs/ausgabepreis) div count(kurse/kurs/ausgabepreis),'0.00')"/>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$isin=@isin">
Mittelwert: <xsl:value-of select="format-number(sum(kurse/kurs/ausgabepreis) div count(kurse/kurs/ausgabepreis),'0.00')"/>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>