我有一些看起来有点像这样的XML。
<Dealer>
<Vehicle>
<Model>KA</Model>
<Series>Type A</Series>
<Price>1000.00</Price>
</Vehicle>
<Vehicle>
<Model>KA</Model>
<Series>Type C</Series>
<Price>1400.00</Price>
</Vehicle>
<Vehicle>
<Model>KA</Model>
<Series>Type A</Series>
<Price>1100.00</Price>
</Vehicle>
<Vehicle>
<Model>FOCUS</Model>
<Series>Type B</Series>
<Price>5000.00</Price>
</Vehicle>
<Vehicle>
<Model>FIESTA</Model>
<Series>Type A</Series>
<Price>6000.00</Price>
</Vehicle>
</Dealer>
我要做的是选择1个特定型号(EG:KA)然后将系列分组到一个不同的列表(没有重复),计算系列中有多少,但只显示最便宜的,使用XSLT 1.0。
EG。我的出局看起来像这样:
KA Type A 2 in stock starting from 1000.00
KA Type C 1 in stock starting from 1400.00
我一直在关注Muenchian分组方法,但似乎无法将其与我想要实现的其他事情结合起来。
这是我在下面的尝试。我的想法是,然后只显示每组IE中的第一项。最便宜的,并以某种方式计算每个组。
<xsl:strip-space elements="*"/>
<xsl:template match="/Dealer">
<xsl:apply-templates select="Vehicle[Model = 'KA']"/>
</xsl:template>
<xsl:key name="fSeries" match="Vehicle" use="Series" />
<xsl:template match="Vehicle">
<xsl:for-each select="Vehicle[count(. | key('fSeries', Series)[1]) = 1]">
<xsl:sort select="Price" />
<xsl:for-each select="key('fSeries', Series)">
<xsl:sort select="Price" />
<xsl:value-of select="Model" /> <xsl:value-of select="Series" /> <xsl:value-of select="Price" /><br />
</xsl:for-each>
</xsl:for-each>
</xsl:template>
任何帮助都会非常好。感谢。
答案 0 :(得分:1)
您有几个问题,第一个问题是Vehicle
不是Vehicle
的孩子 - 所以从匹配{{1}的模板的上下文中调用<xsl:for-each select="Vehicle...">
不会做任何事情。
另一件事是你的钥匙与系列中的所有车辆相匹配,无论型号如何。
以这种方式尝试:
XSLT 1.0
Vehicle