Использование серверных переменных в XSLT-шаблонах
Материал из Umicms
Версия от 13:01, 7 сентября 2010; Danil (обсуждение | вклад)
В UMI.CMS предусмотрена возможность использования серверных переменных (массив $_SERVER) в XSLT-шаблонах. Для этого серверные переменные необходимо инициализировать как глобальные параметры в шаблоне при помощи инструкции <xsl:param> (после инструкции <xsl:output>, на одном уровне c <xsl:template>).
Имя параметра должно начинаться с "_" (нижнее подчеркивание), например: _http_user_agent. После этого параметр можно использовать в шаблоне указав $_http_user_agent.
Например, если создать следующий шаблон:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8" indent="yes"/>
<xsl:param name="_request_time" />
<xsl:param name="_query_string" />
<xsl:param name="_http_accept" />
<xsl:param name="_http_accept_charset" />
<xsl:param name="_http_accept_encoding" />
<xsl:param name="_http_accept_language" />
<xsl:param name="_http_host" />
<xsl:param name="_http_referer" />
<xsl:param name="_http_user_agent" />
<xsl:param name="_remote_addr" />
<xsl:param name="_remote_host" />
<xsl:param name="_request_uri" />
<!-- main template -->
<xsl:template match="/">
<html>
<head></head>
<body>
<ul>
<li>$_request_time: <xsl:value-of select="$_request_time" /></li>
<li>$_query_string: <xsl:value-of select="$_query_string" /></li>
<li>$_http_accept: <xsl:value-of select="$_http_accept" /></li>
<li>$_http_accept_charset: <xsl:value-of select="$_http_accept_charset" /></li>
<li>$_http_accept_encoding: <xsl:value-of select="$_http_accept_encoding" /></li>
<li>$_http_accept_language: <xsl:value-of select="$_http_accept_language" /></li>
<li>$_http_host: <xsl:value-of select="$_http_host" /></li>
<li>$_http_referer: <xsl:value-of select="$_http_referer" /></li>
<li>$_http_user_agent: <xsl:value-of select="$_http_user_agent" /></li>
<li>$_remote_addr: <xsl:value-of select="$_remote_addr" /></li>
<li>$_remote_host: <xsl:value-of select="$_remote_host" /></li>
<li>$_request_uri: <xsl:value-of select="$_request_uri" /></li>
</ul>
<p>
<xsl:choose>
<xsl:when test="contains($_http_user_agent, 'Firefox')">
<xsl:text>You are using Firefox.</xsl:text>
</xsl:when>
<xsl:when test="contains($_http_user_agent, 'Chrome')">
<xsl:text>You are using Chrome.</xsl:text>
</xsl:when>
<xsl:when test="contains($_http_user_agent, 'MSIE ')">
<xsl:text>You are using MSIE.</xsl:text>
</xsl:when>
<xsl:when test="contains($_http_user_agent, 'Opera')">
<xsl:text>You are using Opera.</xsl:text>
</xsl:when>
<xsl:when test="contains($_http_user_agent, 'Safari')">
<xsl:text>You are using Safari.</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Browser was not identified.</xsl:text>
</xsl:otherwise>
</xsl:choose>
</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
То страница, выведенная по этому шаблону в браузере Firefox, будет выглядеть примерно следующим образом:
* $_request_time: 1283867773
* $_query_string: path=about/
* $_http_accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
* $_http_accept_charset: windows-1251,utf-8;q=0.7,*;q=0.7
* $_http_accept_encoding: gzip,deflate
* $_http_accept_language: ru,en-us;q=0.7,en;q=0.3
* $_http_host: localhost
* $_http_referer:
* $_http_user_agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
* $_remote_addr: 127.0.0.1
* $_remote_host:
* $_request_uri: /about/
You are using Firefox.