Xslt XSL分组和子分组
我在Muenchian分组上找到了这篇文章,并在一定程度上完成了我想做的事情,但我无法确定如何对我的子节点进行分组 我的XML看起来有点像这样:Xslt XSL分组和子分组,xslt,xslt-1.0,Xslt,Xslt 1.0,我在Muenchian分组上找到了这篇文章,并在一定程度上完成了我想做的事情,但我无法确定如何对我的子节点进行分组 我的XML看起来有点像这样: <NewDataSet> <Vehicle> <ManufacturerId>53</ManufacturerId> <ManufacturerName>VAUXHALL</ManufacturerName> <Model>Corsa
<NewDataSet>
<Vehicle>
<ManufacturerId>53</ManufacturerId>
<ManufacturerName>VAUXHALL</ManufacturerName>
<Model>Corsa</Model>
</vehicle>
<Vehicle>
<ManufacturerId>53</ManufacturerId>
<ManufacturerName>VAUXHALL</ManufacturerName>
<Model>Astra</Model>
</vehicle>
<Vehicle>
<ManufacturerId>53</ManufacturerId>
<ManufacturerName>VAUXHALL</ManufacturerName>
<Model>Corsa</Model>
</vehicle>
<Vehicle>
<ManufacturerId>54</ManufacturerId>
<ManufacturerName>FORD</ManufacturerName>
<Model>KA</Model>
</vehicle>
<Vehicle>
<ManufacturerId>54</ManufacturerId>
<ManufacturerName>FORD</ManufacturerName>
<Model>Focus</Model>
</vehicle>
<Vehicle>
<ManufacturerId>54</ManufacturerId>
<ManufacturerName>FORD</ManufacturerName>
<Model>KA</Model>
</vehicle>
<Vehicle>
<ManufacturerId>55</ManufacturerId>
<ManufacturerName>CITROEN</ManufacturerName>
<Model>C4</Model>
</vehicle>
<NewDataSet>
53
沃克斯霍尔
科萨
53
沃克斯霍尔
阿斯特拉
53
沃克斯霍尔
科萨
54
河流浅水处
灵魂
54
河流浅水处
集中
54
河流浅水处
灵魂
55
雪铁龙
补体第四成份
这就是我到目前为止的代码
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes" />
<xsl:key name="groups" match="/NewDataSet/Vehicle" use="ManufacturerName" />
<xsl:template match="/NewDataSet">
<xsl:apply-templates select="Vehicle[generate-id() = generate-id(key('groups', ManufacturerName)[1])]"/>
</xsl:template>
<xsl:template match="Vehicle">
<div class="makeLnk">
<a href="/stocklist/?ManufacturerId={ManufacturerId}"><xsl:value-of select="ManufacturerName"/></a>
<xsl:for-each select="key('groups', ManufacturerName)">
<div class="modelLnk"><xsl:value-of select="Model"/></div>
</xsl:for-each>
</div>
</xsl:template>
</xsl:stylesheet>
这将制造商名称分组,并列出下的所有型号。但我现在也想对模型进行分组,从而删除重复的名称。但我无法理解语法
非常感谢您的帮助
谢谢。使用由
车辆的制造商名称
和型号
的值组成的第二把钥匙:
<xsl:key name="model" match="Vehicle/Model" use="concat(../ManufacturerName, '|', .)"/>
然后替换
<xsl:template match="Vehicle">
<div class="makeLnk">
<a href="/stocklist/?ManufacturerId={ManufacturerId}"><xsl:value-of select="ManufacturerName"/></a>
<xsl:for-each select="key('groups', ManufacturerName)">
<div class="modelLnk"><xsl:value-of select="Model"/></div>
</xsl:for-each>
</div>
</xsl:template>
与
使用由车辆的制造商名称
和型号
的值组成的第二把钥匙:
<xsl:key name="model" match="Vehicle/Model" use="concat(../ManufacturerName, '|', .)"/>
然后替换
<xsl:template match="Vehicle">
<div class="makeLnk">
<a href="/stocklist/?ManufacturerId={ManufacturerId}"><xsl:value-of select="ManufacturerName"/></a>
<xsl:for-each select="key('groups', ManufacturerName)">
<div class="modelLnk"><xsl:value-of select="Model"/></div>
</xsl:for-each>
</div>
</xsl:template>
与