Я хочу спросить, как пересчитать положение номера строки и другие данные, когда я копирую шаблон из другого файла XML, если удовлетворяю условию, что код должен быть таким же, как в lookup.xml.
Мои программы выглядят так:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Line-Item[code = document('lookup.xml')/*/*/code]" />
<xsl:template match="Line[not(Line-Item/code[not(. = document('lookup.xml')/*/*/code ) ] )]"/>
</xsl:stylesheet>
XML-файл:
<document>
<header>
<remarks>test</remarks>
</header>
<Line>
<Line-Item>
<lineNumb>1</lineNumb>
<code>123</code>
<amount>4</amount>
</Line-Item>
<Line-Item>
<lineNumb>2</lineNumb>
<code>444</code>
<amount>2</amount>
</Line-Item>
<Line-Item>
<lineNumb>3</lineNumb>
<code>321</code>
<amount>1</amount>
</Line-Item>
</Line>
<summary>
<total-line>3</total-line>
<total-amount>7</total-amount>
</summary>
</document>
Файл Lookup.xml:
<lookup>
<Codes>
<code>123</code>
</Codes>
</lookup>
Мне нужно пересчитать lineNumb в Line-Item, и сводка там итого-линии и общая сумма.
Правильный результат:
<document>
<header>
<remarks>test</remarks>
</header>
<Line>
<Line-Item>
<lineNumb>1</lineNumb>
<code>444</code>
<amount>2</amount>
</Line-Item>
<Line-Item>
<lineNumb>2</lineNumb>
<code>321</code>
<amount>1</amount>
</Line-Item>
</Line>
<summary>
<total-line>2</total-line>
<total-amount>3</total-amount>
</summary>
</document>