Использование серверных переменных в XSLT-шаблонах

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 20

В 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.