Использование кастомных макросов в XSLT

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

Представим ситуацию, когда в XSL-шаблоне, мы получили два значения, $x и $y, с которыми необходимо произвести некоторые математические действия. Для выполнения данной задачи можно воспользоваться кастомным макросом, в котором средствами php мы выполним необходимые действия и вернем результат обратно в XSL-шаблон.

В файл classes/modules/custom.php, после слов //TODO: Write your own macroses here, добавим метод:

  public function hypotenuse($x, $y){
    if(!$x || !$y) return "";
    $g = sqrt($x*$x + $y*$y);
    $value = number_format($g, 2, '.', '');
  return $value;  
}

В XSL-шаблоне пропишем следующий вызов:

Гипотенуза = <xsl:value-of select="document(concat('udata://custom/hypotenuse/', $x, '/',$y))/udata" /> см.

Результат работы макроса hypotenuse:

<udata module="custom" method="hypotenuse" generation-time="0.001038">219.01</udata>

В итоге, получим примерно следующий результат:

Гипотенуза = 219.01 см.

при $x = 219, $y = 2.