Вы хотите вывести одну строку на line_number
, а не одну строку на page
, поэтому вам xsl:for-each
необходимо выбрать эти line_number
элементы
<xsl:for-each select="order/page/line_number">
Затем, чтобы получить значение line_number
и следующее product_code
, сделайте это ...
<td><xsl:value-of select="." /></td>
<td><xsl:value-of select="following-sibling::product_code[1]" /></td>
Попробуйте это ...
<xsl:template match="/receipt">
<html>
<head>
<style>@page {size: a4 landscape;}</style>
</head>
<body>
<table >
<thead>
<tr>
<th>Line</th>
<th>Item Code</th>
</tr>
</thead>
<tbody>
<xsl:for-each select="order/page/line_number">
<tr style="font-size: 9px; ">
<td><xsl:value-of select="." /></td>
<td><xsl:value-of select="following-sibling::*[1][self::product_code]" /></td>
</tr>
</xsl:for-each>
</tbody>
</table>
<br />
</body>
</html>
</xsl:template>
Обратите внимание, что при этом предполагается, что за каждым line_number
будет следовать product_code
.
(Я также перенес создание элемента tbody
за пределы xsl:for-each
, поскольку в вашей таблице должен быть только один такой элемент, а не один для каждой строки)