Я печатаю тело таблицы, используя параметр, который представляет список.Скажи это p1.
Я бы написал
<xsl:for-each select="$p1">
и для печати данных в столбце я обычно писал бы
<fo:table-cell>
<fo:block text-align="left" padding-top="2pt">
<xsl:value-of select="$p1/value"/>
</fo:block>
</fo:table-cell>
Для других столбцов мне нужно напечататьданные из другой переменной (не p1).Теперь у меня есть следующая проблема: я хочу использовать p1 в качестве параметра, но распечатать из другого параметра, скажем, p2, который представляет список того же измерения, что и p1.Правильный индекс этого списка p2 определяется позицией ().Я пробовал что-то вроде
<fo:table-cell>
<fo:block text-align="left" padding-top="2pt">
<xsl:value-of select="$p2.get(position())"/>
</fo:block>
</fo:table-cell>
Но это не работает.Есть ли правильный способ и синтаксис для этого?Спасибо
РЕДАКТИРОВАТЬ:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root-name PUBLIC "http://fop/DTD Validator" "fo.dtd" >
<xsl:stylesheet version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xobj="it.sempla.pef.util.stampe.StampeFormatter"
exclude-result-prefixes="fo">
<xsl:output method="xml" version="1.0" omit-xml-declaration="no"
indent="yes" />
<xsl:template name="leveragedTransaction">
<xsl:param name="perimetroChecklistLT" />
<xsl:param name="verificaChecklistLT" />
<fo:table table-layout="fixed" width="100%"
space-before.minimum="2pt">
<fo:table-column column-width="50%" />
<fo:table-column column-width="50%" />
<fo:table-body font-size="9pt" color="black" margin="0pt 0.7pt"
text-align="left">
<xsl:for-each select="$perimetroChecklistLT">
<fo:table-row border-top-style="solid"
border-top-color="#A6A6A6" border-top-width="0.6pt">
<fo:table-cell border-left-style="solid"
border-left-color="#A6A6A6" border-left-width="0.6pt">
<fo:block text-align="left" padding-top="2pt">
<xsl:value-of select="$verificaChecklistLT"/>
</fo:block>
</fo:table-cell>
<fo:table-cell border-left-style="solid"
border-left-color="#A6A6A6" border-left-width="0.6pt">
<fo:block text-align="left" padding-top="2pt">
<xsl:value-of select="$perimetroChecklistLT/valoreRecuperato" />
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</xsl:template>
</xsl:stylesheet>
Параметр, который я итерации по является perimetroChecklistLT
.Этот параметр также используется для печати второго столбца (<xsl:value-of select="$perimetroChecklistLT/valoreRecuperato" />
).К сожалению, мне нужно распечатать из другого параметра verificaChecklistLT
.Параметры представляют два списка одинаковой длины.В частности, verificaChecklistLT
- это список строк.Я хотел бы получить доступ к i-му компоненту verificaChecklistLT
, чтобы вывести правильную строку.Это то, что в Java я бы написал verificaCheckListLT.get(i)
, если бы это было так.Я знаю, i
равно position()
, но как этого добиться?