Apache-FOP — как отформатировать номер, полученный с помощью ‹fo:retrieve-marker/›

В настоящее время я пытаюсь использовать Apache-FOP для создания счетов-фактур. Используя <fo:retrieve-marker/> и <fo:marker/>, я могу создать промежуточные итоги для каждой страницы.

Я хочу правильно отформатировать этот номер:

          <fo:block text-align="right">
            <fo:retrieve-marker retrieve-class-name="invoice-subtotal" retrieve-boundary="page" retrieve-position="last-starting-within-page"/>
          </fo:block>

Просто дает мне простую сумму (например, 12045), я хочу иметь 120,45. Возможно ли это только с Apache-FOP 1.1? Получение этого числа выполняется после процессора XSLT, поэтому я не могу использовать функции форматирования XSLT.

Спасибо за вашу помощь.


person bjoernhaeuser    schedule 14.03.2013    source источник
comment
Используете ли вы XSLT для создания XSL-FO? Если да, то нельзя ли использовать format-number() при создании fo:marker? Если вам нужны как форматированные, так и неформатированные файлы, вы можете создать 2 файла fo:marker.   -  person Daniel Haley    schedule 14.03.2013
comment
Смотрите мой ответ ниже. Я использовал XSLT для создания XSL-FO, но я также вычислял числа в XSLT.   -  person bjoernhaeuser    schedule 15.03.2013


Ответы (1)


Ok. То, что я спросил, кажется невозможным. Раньше я вычислял промежуточную сумму с помощью XSLT:

<fo:marker marker-class-name="invoice-subtotal"><xsl:value-of select="itemTax/grossPriceRaw + sum(preceding::itemTax/grossPriceRaw)"/></fo:marker>

Что я сделал, чтобы решить проблему, так это то, что каждая позиция в моем счете теперь содержит промежуточную сумму. Таким образом, расчет и форматирование зависят от языка программирования (в данном случае java).

Мое определение маркера теперь выглядит так:

<fo:marker marker-class-name="invoice-subtotal"><xsl:value-of select="intSum"/></fo:marker>

Так что теперь все работает нормально.

Спасибо за вашу помощь.

person bjoernhaeuser    schedule 15.03.2013