[英]Using Muenchian grouping xslt 1.0
I know that there are a bunch of examples here on how to do Muenchian grouping, but I have been trying for quite some time and havent been able to get it. 我知道这里有很多关于如何进行Muenchian分组的示例,但是我已经尝试了很长时间了,但是还没有获得。
I am trying to group <spec>
based on their <title>
value using Muenchian grouping. 我正在尝试使用Muenchian分组将
<spec>
根据其<title>
值进行分组。
I am using XSLT 1.0. 我正在使用XSLT 1.0。
XML: XML:
<product>
<specifications>
<spec>
<title>A</title>
<value>val1</value>
</spec>
<spec>
<title>A</title>
<value>val2</value>
</spec>
<spec>
<title>B</title>
<value>val3</value>
</spec>
<spec>
<title>C</title>
<value>val4</value>
</spec>
<spec>
<title>C</title>
<value>val5</value>
</spec>
<spec>
<title>D</title>
<value>val6</value>
</spec>
<specifications>
</product>
Wanted Result: 想要的结果:
<group>
<title>A</title>
<values>
<value>val1</value>
<value>val2</value>
</values>
</group>
<group>
<title>B</title>
<values>
<value>val3</value>
</values>
</group>
<group>
<title>C</title>
<values>
<value>val4</value>
<value>val5</value>
</values>
</group>
<group>
<title>D</title>
<values>
<value>val6</value>
</values>
</group>
Define a grouping key for the <title>
. 为
<title>
定义一个分组键。
<xsl:key name="kTitle" match="spec" use="title" />
XSL to achieve the desired output XSL实现所需的输出
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:key name="kTitle" match="spec" use="title" />
<xsl:template match="spec[generate-id() = generate-id(key('kTitle', title)[1])]">
<group>
<xsl:copy-of select="title" />
<values>
<xsl:copy-of select="key('kTitle', title)/value" />
</values>
</group>
</xsl:template>
<xsl:template match="spec" />
</xsl:stylesheet>
Output 输出量
<group>
<title>A</title>
<values>
<value>val1</value>
<value>val2</value>
</values>
</group>
<group>
<title>B</title>
<values>
<value>val3</value>
</values>
</group>
<group>
<title>C</title>
<values>
<value>val4</value>
<value>val5</value>
</values>
</group>
<group>
<title>D</title>
<values>
<value>val6</value>
</values>
</group>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.