Я копирую пример из XSLT Cookbook: 2nd Edition (O'Reilly: Mangano, 2006), где Мангано создает древовидную диаграмму с помощью SVG. Чтобы быстро протестировать этот код, я просто преобразовываю XML с помощью тега <x:transform/>
JSTL и запускаю его в Jetty 6. XSLT, похоже, зависает при вызове java:java.lang.Math:max
, говоря:
ОШИБКА: «Не удается найти внешний метод« max »(должен быть открытым).»
FATAL ERROR: «Не удалось скомпилировать таблицу стилей»
Код, который дает мне ошибку, содержится здесь, где ...Math:max(...
называется:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1"
xmlns:emath="http://www.exslt.org/math"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:tree="http://www.ora.com/XSLTCookboox/ns/tree"
xmlns:xalan="http://xml.apache.org/xslt"
xmlns:Math="xalan:java.lang.Math">
...
<!--Pass 1 copies input with added bookkeeping attributes -->
<xsl:variable name="treeWithLayout">
<xsl:apply-templates mode="layout"/>
</xsl:variable>
<xsl:variable name="maxPos"
select="Math:max($treeWithLayout/*/@tree:WEIGHT *
($nodeWidth + $horzSpace),
$treeWithLayout/*/@tree:MAXDEPTH *
($nodeHeight + $vertSpace))"/>
...