Я пытаюсь обработать следующий XML для отображения каждой записи Discount с каждым MerchandiseItem с помощью XSLT:
ПРИМЕЧАНИЕ. За каждым MerchandiseItem всегда следует 0 или более элементов Discount
Пример XML:
<IBMGSA xmlns="http://www.omnicogroup.com/FPF/namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<transaction>
<MerchandiseItem Record="2">
<Identifier>
<SalePrc>6.14</SalePrc>
<Quantity>1.00</Quantity>
<NetQuantity>1.00</NetQuantity>
<SaleQuantity>1</SaleQuantity>
<SalePrice>6.14</SalePrice>
<Penny>.01</Penny>
<Zero>0.00</Zero>
<IsVoided>0</IsVoided>
<VoidedQuantity>0.00</VoidedQuantity>
06</Identifier>
<ItemCode>
<ItemCodeGTIN14>00000000000083</ItemCodeGTIN14>
<ItemCodeGTIN12>000000000008</ItemCodeGTIN12>
<Sku>000000008</Sku>
<SkuType>3</SkuType>
<SkuByte>1</SkuByte>
<SuppressRecord>NO</SuppressRecord>
<ItemDescription>ZIL PLAY A-</ItemDescription>
<ItemDescTrimmed>ZIL PLAYA-SYS</ItemDescTrimmed>
1000000000000000000083</ItemCode>
<Department>
<DeptSuppress>YES</DeptSuppress>
182</Department>
<ItemAmount>
<NegativeTransaction>0</NegativeTransaction>
<ItemAmount>7.68</ItemAmount>
<ItemDiscountCode>2</ItemDiscountCode>
<ItemDiscountAmount>1.54</ItemDiscountAmount>
<ItemDiscountPercent>20.0</ItemDiscountPercent>
<ItemAmt>7.68</ItemAmt>
<ItemDisAmt>6.14</ItemDisAmt>
</ItemAmount> <!-- Added by edit -->
</MerchandiseItem>
<Discount Record="3">
<Identifier>10</Identifier>
<DiscountCode>2</DiscountCode>
<DiscountAmount>
<DiscountAmountType>PE</DiscountAmountType>
<DiscountQuantity>1</DiscountQuantity>
<NegativeTransaction>0</NegativeTransaction>
<DiscountAmount>1.54</DiscountAmount>
<TaxExemptAmount>0.00</TaxExemptAmount>
<ABSDiscountAmt>1.54</ABSDiscountAmt>
154</DiscountAmount>
<DiscountPercent>
<DiscountPercent>20.0</DiscountPercent>
200</DiscountPercent>
</Discount>
<Discount Record="4">
<Identifier>10</Identifier>
<DiscountCode>25</DiscountCode>
</Discount>
...
...
...
</transaction>
</IBMGSA> <!-- Added by edit -->
Как я могу пройти элементы DiscountItem
при переборе каждого элемента MerchandiseItem, учитывая, что элементы DiscountItem
всегда идут после элемента MerchandiseItem
и должны быть связаны / отображаться только с этим MerchandiseItem
?
Мне нужно, чтобы вывод был следующим (ссылка на этот образец XML) - спасибо за переформатирование!Спасибо - правильный вывод HTML (версия 5) должен быть:
<html>
<body>
<table>
<tr>
ZIL PLAY A-
00000000000083 1 @ 7.68 7.68
10 (20 %) OFF 00000000000083 1.54-
25 (5 %) OFF 00000000000083 .31-
</tr>
</table>
</body>
</html>
XML-эквивалент вывода выше:
<ItemDescription>ZIL PLAY A-</ItemDescription>
<ItemCodeGTIN14>00000000000083</ItemCodeGTIN14> <Quantity>1.00</Quantity> @ <ItemAmount>7.68</ItemAmount>
<Identifier>10</Identifier> (<DiscountPercent>20.0 %</DiscountPercent>) OFF <ItemCodeGTIN14>00000000000083</ItemCodeGTIN14> <DiscountAmount>1.54</DiscountAmount>-
<Identifier>25</Identifier> (<DiscountPercent>5 %</DiscountPercent>) OFF <ItemCodeGTIN14>00000000000083</ItemCodeGTIN14> <DiscountAmount>.31</DiscountAmount>-
Используя предложение в комментариях от @ michael.hor257k, яя пытаюсь отобразить информацию MerchandiseItem и Discount с помощью следующего XSL (обновлен, чтобы быть более понятным - надеюсь - как я хочу сгруппировать и отобразить перечисленные выше DiscountItem и MerchandiseItems:
<?xml version="1.0"?>
<xsl:stylesheet xmlns="http://www.omnicogroup.com/FPF/namespace"
xmlns:ns1="http://www.omnicogroup.com/FPF/namespace"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body>
<table>
<tr>
<xsl:for-each-group select="*" group-starting-
with="MerchandiseItem">
<b>Here is a MerchItem</b><br/> <!--Should repeat (16 times as there are 16 total MerchandiseItem elements in my XML payload. Currently -nothing is displayed and it does not appear that this for-each group is being entered at runtime)-->
</xsl:for-each-group>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
, но ничего не отображаетсяиспользуя тот же пример XML. Мои циклы for-each неправильно ссылаются на группы MerchandiseItem / Discount?