我知道这里有很多关于如何进行Muenchian分组的例子,但是我已经尝试了很长时间而且还没能得到它。
我正在尝试使用Muenchian分组根据<spec>
值对<title>
进行分组。
我正在使用XSLT 1.0。
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>
通缉结果:
<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>
答案 0 :(得分:0)
为<title>
定义分组键。
<xsl:key name="kTitle" match="spec" use="title" />
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>
输出
<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>