XSLT / Java: ОШИБКА: «Не удается найти внешний метод« max »(должен быть открытым)». - PullRequest
1 голос
/ 13 марта 2009

Я копирую пример из 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))"/>
...

Ответы [ 2 ]

1 голос
/ 18 февраля 2011

Вы можете получить это сообщение, если отсутствует какой-либо аргумент. Например:

Вы пишете

<xsl:variable name="maxPos" select="Math:max(9)"/>

вместо

<xsl:variable name="maxPos" select="Math:max(9, 15)"/>
1 голос
/ 13 марта 2009

Я нашел это использование онлайн :

<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:math="xalan://java.lang.Math"
  extension-element-prefixes="math">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...