下面是我的名为product.xml
的xml文件<products>
<product>
<name>Pen</name>
<price>8</price>
</product>
<product>
<name>Bag</name>
<price>10</price>
</product>
<product>
<name>Pen</name>
<price>10</price>
</product>
<product>
<name>Pen</name>
<price>5</price>
</product>
<product>
<name>Bag</name>
<price>15</price>
</product>
<product>
<name>Pencil</name>
<price>5</price>
</product>
</products>
我需要以最低价格采用不同的产品...使用xslt 1.0
所需的输出是
<products>
<product>
<name>Bag</name>
<price>10</price>
</product>
<product>
<name>Pen</name>
<price>5</price>
</product>
<product>
<name>Pencil</name>
<price>5</price>
</product>
<products>
希望得到你的帮助-------------------------------------------- -------------------- ------------------------------ --------- - ---------------------------------------- --------------------------- - - --------------------- ---------
答案 0 :(得分:0)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="kProdByName" match="product"
use="name"/>
<xsl:template match=
"product
[generate-id()
=
generate-id(key('kProdByName', name)[1])
]
">
<product>
<xsl:for-each select="key('kProdByName', name)">
<xsl:sort select="price" data-type="number"/>
<xsl:if test="position() = 1">
<xsl:copy-of select="node()"/>
</xsl:if>
</xsl:for-each>
</product>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
应用于提供的XML文档:
<products>
<product>
<name>Pen</name>
<price>8</price>
</product>
<product>
<name>Bag</name>
<price>10</price>
</product>
<product>
<name>Pen</name>
<price>10</price>
</product>
<product>
<name>Pen</name>
<price>5</price>
</product>
<product>
<name>Bag</name>
<price>15</price>
</product>
<product>
<name>Pencil</name>
<price>5</price>
</product>
</products>
生成想要的正确结果:
<product>
<name>Pen</name>
<price>5</price>
</product>
<product>
<name>Bag</name>
<price>10</price>
</product>
<product>
<name>Pencil</name>
<price>5</price>
</product>
<强>解释强>:
product
name
的Muenchian分组。
在每个小组中,通过从已排序的节点列表中取出第一个product
来查找price
最小product
。