使用Muenchian分组xslt 1.0
问题描述:
我知道这里有很多关于如何做Muenchian分组的示例,但我一直在尝试很长时间,并没有能够获得它。使用Muenchian分组xslt 1.0
我想根据他们的<title>
值使用Muenchian分组来组<spec>
。
我正在使用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>
答
定义为<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>
阅读http://www.jenitennison.com/xslt/grouping/muenchian.html并调整到您的需要。 –
你有什么试过的?如果您不给它一个XSLT样式表,那么您的XSLT处理器就不会正确执行Muenchian分组。如果你没有显示你尝试过的东西,那么很多问题的答案都可以认为你试图让其他人为你做你的工作。不公平,我知道,但与目前提供的所有证据相容。 –