У меня есть XML, в котором у меня есть список книг с такими свойствами, как название, цена, автор, дополнительная цена, исполнитель, страна и т. Д. XML выглядит следующим образом.
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<additionalprice>12.90</additionalprice>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<additionalprice>10.90</additionalprice>
<year>1988</year>
</cd>
и так далее
Я хочу написать XSLT 3.0, применяемый к XML, чтобы получить HTML. Я хочу использовать аккумулятор, чтобы получить общее количество книг в каталоге. Хотя есть методы получше, я просто хотел использовать аккумулятор для практических целей и вывести итоговую сумму в конце таблицы, содержащей книги, где в столбцах указаны название, автор и общая цена. Для заполнения названия и автора я использовал for-each. Итоговая цена = цена + дополнительная цена. Я хочу использовать итерацию для подачи итоговой цены. Может ли кто-нибудь помочь мне с этим. Моя неполная таблица стилей выглядит следующим образом:
<?xml version="3.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="2">
<tr bgcolor="#9acd32">
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
<th style="text-align:left">Total Price</th>
</tr>
<xsl:accumulator name="total" as="xs:integer" initial-value="0" streamable="no">
<xsl:accumulator-rule match="title" select="$value+1"/>
</xsl:accumulator>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
<tr bgcolor="#FFA500">
<td> Total number of Books </td>
<td> <xsl:value-of select="accumulator-before('total')"/</td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Я не хочу использовать стриминг.