是否可以使用XSLT对XML文件中的项目进行分组?
输入文件:
<start>
<A>
---data---
</A>
<B>
---data---
</B>
<C>
---data---
</C>
<A>
---data---
</A>
<B>
---data---
</B>
</start>
输出应为:
<start>
<A>
---data---
</A>
<A>
---data---
</A>
<B>
---data---
</B>
<B>
---data---
</B>
<C>
---data---
</C>
</start>
如何使用XSL执行此操作?或者有更好的方法吗?
感谢。
答案 0 :(得分:6)
示例输入:
<start>
<A>1</A>
<B>2</B>
<C>3</C>
<A>4</A>
<B>5</B>
</start>
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="start">
<xsl:copy>
<xsl:for-each select="*">
<xsl:sort select="name()"/>
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
输出:
<start>
<A>1</A>
<A>4</A>
<B>2</B>
<B>5</B>
<C>3</C>
</start>
答案 1 :(得分:0)
与排序不同,我认为XSLT不直接支持分组
答案 2 :(得分:0)
是的,试试这个....
<xsl:template match="/">
<xsl:for-each select="start/*">
<xsl:sort select="name(.)"/>
<xsl:element name="{name()}">
<xsl:value-of select="." />
</xsl:element>
</xsl:for-each>
</xsl:template>