Я хочу, чтобы TaxTotal на InvoiceLine создавался в зависимости от значения заголовка. Затем я хочу, чтобы значение строки (LIT_VatExcludedAmount) было сопоставлено с правильной строкой (в TaxableAmount).
Я работаю только для отображения значения первой строки на каждую строку в цели. Или иметь все значения источника в каждой строке. Таким образом, для 3 строк по 3 результата в каждой строке.
Источник:
<Documents>
<Document>
<Invoice>
<Fields>
<Field Type="BTWverlegd" TextDetail="AE">Ja</Field>
</Fields>
<Tables>
<Table>
<TableRow>
<Field Name="Li_Omschrijving" Type="LIT_ArticleName" PageNumber="1" Position="223,1528,377,1560">Artikel 1</Field>
<Field Name="Li_Aantal" Type="LIT_DeliveredQuantity" PageNumber="1" Position="1509,1530,1585,1566">3.00</Field>
<Field Name="Li_EenheidsPrijs" Type="LIT_UnitPriceAmount" PageNumber="1" Position="1832,1530,1908,1566">2.25</Field>
<Field Name="Li_NettoBedrag" Type="LIT_VatExcludedAmount" PageNumber="1" Position="2154,1530,2230,1566">6.75</Field>
</TableRow>
<TableRow>
<Field Name="Li_Omschrijving" Type="LIT_ArticleName" PageNumber="1" Position="223,1589,377,1621">Artikel 2</Field>
<Field Name="Li_Aantal" Type="LIT_DeliveredQuantity" PageNumber="1" Position="1509,1591,1585,1627">5.00</Field>
<Field Name="Li_EenheidsPrijs" Type="LIT_UnitPriceAmount" PageNumber="1" Position="1809,1591,1909,1627">28.00</Field>
<Field Name="Li_NettoBedrag" Type="LIT_VatExcludedAmount" PageNumber="1" Position="2109,1591,2229,1627">140.00</Field>
</TableRow>
<TableRow>
<Field Name="Li_Omschrijving" Type="LIT_ArticleName" PageNumber="1" Position="223,1649,376,1681">Artikel 3</Field>
<Field Name="Li_Aantal" Type="LIT_DeliveredQuantity" PageNumber="1" Position="1509,1651,1585,1687">7.00</Field>
<Field Name="Li_EenheidsPrijs" Type="LIT_UnitPriceAmount" PageNumber="1" Position="1810,1651,1910,1687">15.50</Field>
<Field Name="Li_NettoBedrag" Type="LIT_VatExcludedAmount" PageNumber="1" Position="2109,1651,2229,1687">108.50</Field>
</TableRow>
</Table>
</Tables>
</Invoice>
</Document>
</Documents>
XSLT код:
<xsl:for-each select="/Documents/Document/Invoice/Tables/Table/TableRow">
<cac:InvoiceLine>
<cbc:InvoicedQuantity>
<xsl:value-of select="Field[@Type='LIT_DeliveredQuantity']"/>
</cbc:InvoicedQuantity>
<xsl:for-each select="../../../Fields/Field[@Type='BTWverlegd' and @TextDetail='AE']">
<cac:TaxTotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount>
<xsl:for-each select="/Documents/Document/Invoice/Tables/Table/TableRow">
<xsl:value-of select="/Documents/Document/Invoice/Tables/Table/TableRow/Field[@Type='LIT_VatExcludedAmount']"/>
</xsl:for-each>
</cbc:TaxableAmount>
</cac:TaxSubtotal>
</cac:TaxTotal>
</xsl:for-each>
</cac:InvoiceLine>
</xsl:for-each>
Я ожидаю что-то вроде ниже, где каждая строка имеет правильный TaxableAmount.
Я уже пробовал select = "Field [@ Type = 'LIT_VatExcludedAmount']", но тогда я получаю только пустой тег.
<Invoice>
<cac:InvoiceLine>
<cbc:InvoicedQuantity>3.00</cbc:InvoicedQuantity>
<cac:TaxTotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">6.75</cbc:TaxableAmount>
</cac:TaxSubtotal>
</cac:TaxTotal>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cac:TaxTotal>
<cbc:InvoicedQuantity>5.00</cbc:InvoicedQuantity>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">140.00</cbc:TaxableAmount>
</cac:TaxSubtotal>
</cac:TaxTotal>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:ID/>
<cbc:InvoicedQuantity>7.00</cbc:InvoicedQuantity>
<cac:TaxTotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">108.50</cbc:TaxableAmount>
</cac:TaxSubtotal>
</cac:TaxTotal>
</cac:InvoiceLine>
</Invoice>