Печать таблицы с двумя параметрами, один для индексации и один для данных - PullRequest
0 голосов
/ 06 мая 2019

Я печатаю тело таблицы, используя параметр, который представляет список.Скажи это 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(), но как этого добиться?

...