У меня возникла проблема выбора отдельных значений для каждой группы. Результат просто не отображается на экране. Желаемый результат показан ниже:Выберите отдельное значение в XSLT для каждой группы
<xsl:for-each-group select="Items/Item" group-by="ProviderName">
<xsl:sort select="current-grouping-key()"/>
<tr>
<th>
<xsl:value-of select="current-grouping-key()"/>
</th>
</tr>
<tr>
<td>
<xsl:text>Item Number</xsl:text>
</td>
<td>
<xsl:text>Quantity</xsl:text>
</td>
<td>
<xsl:text>Unit Price</xsl:text>
</td>
<td>
<xsl:text>Total</xsl:text>
</td>
</tr>
<xsl:apply-templates select="current-group()"/>
</xsl:for-each-group>
То, что я собираюсь сделать, это выбрать различные значения current-group()
в apply-templates
тег, который, как это
<xsl:template match="Item">
<xsl:value-of select="distinct-values(./ItemName)"/>
</xsl:template>
я прочитал несколько образцов на сеть и самый оптимальный способ сделать это - использовать функцию generate-id()
с петлей for-each-group
. Но я попытался и не получил положительного результата. Это источник XML:
<Items>
<Item ItemNumber="1148087">
<ProductName>Dolby Metal-Black-Matte</ProductName>
<ProviderName>Vestal Watches</ProviderName>
<Quantity>4</Quantity>
<UnitPrice>67.99</UnitPrice>
</Item>
<Item ItemNumber="1150197">
<ProductName>Vercilli Blk-Tan</ProductName>
<ProviderName>Boston Babes</ProviderName>
<Quantity>1</Quantity>
<UnitPrice>23.99</UnitPrice>
</Item>
<Item ItemNumber="1151464">
<ProductName>Spritz Grape Seat and Extra Seat</ProductName>
<ProviderName>Bambeano</ProviderName>
<Quantity>1</Quantity>
<UnitPrice>56.99</UnitPrice>
</Item>
<Item ItemNumber="1148087">
<ProductName>Dolby Metal-Black-Matte</ProductName>
<ProviderName>Vestal Watches</ProviderName>
<Quantity>2</Quantity>
<UnitPrice>67.99</UnitPrice>
</Item>
<Item ItemNumber="1150197">
<ProductName>Vercilli Blk-Tan</ProductName>
<ProviderName>Boston Babes</ProviderName>
<Quantity>2</Quantity>
<UnitPrice>23.99</UnitPrice>
</Item>
<Item ItemNumber="1150173">
<ProductName>Lucille Tan</ProductName>
<ProviderName>Boston Babes</ProviderName>
<Quantity>1</Quantity>
<UnitPrice>24.99</UnitPrice>
</Item>
<Item ItemNumber="1151464">
<ProductName>Spritz Grape Seat and Extra Seat</ProductName>
<ProviderName>Bambeano</ProviderName>
<Quantity>1</Quantity>
<UnitPrice>56.99</UnitPrice>
</Item>
<Item ItemNumber="1148089">
<ProductName>Plexi Leather-Silver-Black</ProductName>
<ProviderName>Vestal Watches</ProviderName>
<Quantity>1</Quantity>
<UnitPrice>189.99</UnitPrice>
</Item>
</Items>
Обратите внимание, что исходный XML содержит несколько же ProductName
элементов с различными ItemNumber
атрибутами. Я хочу сгруппировать все элементы Item
с похожими ItemNumber
и суммировать количество. Спасибо за помощь, ребята! Действительно ценю это.
Пример вывода будет:
Мы не можем помочь, если вы не объясните исходный XML, на котором этот XSLT должен работать. – ABach
Извините, я отредактировал код, спасибо @ABach – danial
Рассмотрите возможность публикации вывода, который вы хотите использовать для образца ввода XML, который вы сейчас разместили. Почему вы выполняете 'distinct-values (./ ItemName)'? У вашего опубликованного образца нет элементов 'ItemName', только' ProductName' и 'ProviderName'. –