[英]how to take distinct with minimum value using xslt1.0?
Below is my xml 下面是我的xml
<products>
<product>
<supplier>1</supplier>
<item>
<color>Red</color>
<name>Pen</name>
<price>10</price>
</item>
<item>
<color>Green</color>
<name>Pen</name>
<price>15</price>
</item>
<item>
<color>Red</color>
<name>Pen</name>
<price>5</price>
</item>
</product>
<product>
<supplier>1</supplier>
<item>
<color>White</color>
<name>Pen</name>
<price>10</price>
</item>
<item>
<color>Green</color>
<name>Pen</name>
<price>18</price>
</item>
<item>
<color>Red</color>
<name>Pen</name>
<price>15</price>
</item>
</product>
<product>
<supplier>2</supplier>
<item>
<color>White</color>
<name>Pen</name>
<price>5</price>
</item>
<item>
<color>Green</color>
<name>Pen</name>
<price>18</price>
</item>
<item>
<color>White</color>
<name>Pen</name>
<price>15</price>
</item>
</product>
</products>
I need to take distinct product with there minimum price ...using xslt 1.0 我需要以最低的价格购买独特的产品...使用xslt 1.0
required output is 所需的输出是
<products>
<product>
<supplier>1</supplier>
<item>
<color>Green</color>
<name>Pen</name>
<price>15</price>
</item>
<item>
<color>Red</color>
<name>Pen</name>
<price>5</price>
</item>
<item>
<color>White</color>
<name>Pen</name>
<price>10</price>
</item>
</product>
<product>
<supplier>2</supplier>
<item>
<color>White</color>
<name>Pen</name>
<price>5</price>
</item>
<item>
<color>Green</color>
<name>Pen</name>
<price>18</price>
</item>
</product>
</products>
hoping your help ---------------------------------------------------------------- --------------------------------------- - ------------------------------------------------------------------- - - ------------------------------ 希望得到您的帮助----------------------------------------------- ----------------- --------------------------------- ------------------------------------------------------ -------------------------------------------------- ------
Use: 采用:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:key name="s" match="product" use="supplier"/>
<xsl:key name="k" match="item" use="concat(../supplier, ',', name, ',', color)"/>
<xsl:template match="/products">
<xsl:copy>
<xsl:apply-templates select="product[generate-id()
= generate-id(key('s', supplier))]"/>
</xsl:copy>
</xsl:template>
<xsl:template match="product">
<xsl:copy>
<xsl:copy-of select="supplier"/>
<xsl:apply-templates select="../product/item[generate-id()
= generate-id(key('k', concat(current()/supplier, ',', name, ',', color)))]"/>
</xsl:copy>
</xsl:template>
<xsl:template match="item">
<xsl:for-each select="key('k', concat(../supplier, ',', name, ',', color))">
<xsl:sort select="price" data-type="number"/>
<xsl:if test="position() = 1">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.