Преобразование XSL в Java с параметрами

18

У меня есть файл xsl, где мне нужно использовать параметры из внешнего источника. Я использую Java, и мой код выглядит примерно так:

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer xsltTransformer = transformerFactory.newTransformer(xsltSource);
xsltTransformer.setParameter(parameterName, parameterValue);

Однако исключение вызывается во 2-й строке - Переменная или параметр 'variable_name' не определены. Я понимаю, что XSL скомпилирован и, вероятно, скомпилирован при создании трансформатора.

Итак, как мне передать параметры для моего преобразования? Как должен использоваться метод setParameter?

    
задан Anirudh 03.11.2009 в 14:54
источник
  • Двойная проверка, чтобы убедиться, что вы правильно произвели имя параметра и что cAsE соответствует тому, что объявлено в XSLT. –  Mads Hansen 03.11.2009 в 15:51

2 ответа

45

Если вы передадите параметр, например:

transformer.setParameter("render_id", "1234");

параметр может быть выбран преобразованием:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes"/>

<!-- Receives the id of the menu being rendered. -->
<xsl:param name="render_id" />
    
ответ дан rsp 03.11.2009 в 15:14
источник
  • Great Ans, FYI, если параметр имеет какое-либо значение в xsl, он будет игнорироваться, а тот, который отправлен Java, будет иметь приоритет –  SoulMan 05.07.2012 в 11:32
2

Ответ rsp был на месте. Благодарю. Просто хочу добавить, что вы не можете передавать параметр в переменную одинаково (я устанавливаю параметры через TransformerFactory Java).

Я допустил ошибку мышления переменных и параметров были взаимозаменяемыми:)

    
ответ дан TinyRacoon 22.10.2014 в 11:00
источник
  • Вот хороший ответ о различиях между параметром и переменной: stackoverflow.com/a/11854157/1813669 –  Scadge 11.11.2015 в 14:41