Case sudy:
Raport wielopozycyjny xml. Na każdy z wierszy raportu składają się dwa wiersze tabelki:
Lp | IndeksKod przyczyny
Konta księgowe |
Opis | Numer partii |
Jm |
Ilość |
Wartość |
|
i | <?INDEKS?> | <?NAZWA?> | <?NP?> |
<?JM?> |
<?CF_ILOSC?> | <?CF_WARTOSC?> | |
j | <?CF_KP?><?KONTO_INV?>
<?CF_KONTO_IVA?> |
<?end for-each?> <?end for-each?> |
|||||
Pozycja nr 9 zostaje podzielona między dwie strony.
Rozwiązanie:
Aby zapobiec takiemu rozdziałowi, w tabelce trzeba umieścić podział strony po konkretnej pozycji.
W tym przypadku na pierwszej stronie po 8 pozycji a na następnych po 10.
Warunek <?if:position() mod 10=9?>
Sprawdzamy aktualną pozycję/wiersz.
Dzielimy ilość pozycji mod 10 co pozwoli nam na ograniczenie wyświetlania do dziesięciu pozycji na stronie.
Wynik dzielenia przyrównujemy do 9 – spowoduje to wstawienie podziału na pierwszej stronie przed 9 pozycją .
<?if:position() mod 10=9?>
<xsl:attribute name=”break-before”>page</xsl:attribute>
<?end if?>
Całą instrukcję wstawiamy w pierwszym wierszu tabelki.
Lp | IndeksKod przyczyny
Konta księgowe |
Opis | Numer partii |
Jm |
Ilość |
Wartość |
|
i | page<?INDEKS?> | <?NAZWA?> | <?NP?> |
<?JM?> |
<?CF_ILOSC?> | <?CF_WARTOSC?> | |
j | <?CF_KP?><?KONTO_INV?>
<?CF_KONTO_IVA?> |
<?end for-each?> <?end for-each?> |
|||||
Wartość łączna: |
<?CS_S_WAR?> |
||||||