Xml 为组数据创建XSLT

Xml 为组数据创建XSLT,xml,xslt,Xml,Xslt,我有如下XML数据: <data ItemCount="5"> <zrow GroupName="Manager"User="User1" /> <zrow GroupName="Developer"User="User2" /> <zrow GroupName="Manager"User="User3" /> <zrow GroupName="CEO"User="User4" /> <zrow GroupName="CEO"Us

我有如下XML数据:

<data ItemCount="5">
<zrow GroupName="Manager"User="User1" />
<zrow GroupName="Developer"User="User2" />
<zrow GroupName="Manager"User="User3" />
<zrow GroupName="CEO"User="User4" />
<zrow GroupName="CEO"User="User5" />
</data>
Manager

User1

User3

Developer

User2

CEO

User4

User5
我的XSLT应该是什么?我想创建一个XSLT,它应该将我的数据转换为上述格式。您能帮我创建一个吗?

XSLT 2.0解决方案:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:template match="data">
        <xsl:for-each-group select="zrow" group-by="@GroupName">
            <xsl:value-of select="current-grouping-key()" />
            <xsl:text>&#xa;</xsl:text>
            <xsl:value-of select="current-group()/@User" separator="&#xa;"/>
            <xsl:text>&#xa;</xsl:text>
        </xsl:for-each-group>
    </xsl:template>
</xsl:stylesheet>


;

;
XSLT 1.0解决方案依赖于Muenchian方法:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:strip-space elements="*"/>
    <xsl:key name="byGroupName" match="zrow" use="@GroupName"/>
    <xsl:template
        match="zrow[generate-id()=
                    generate-id(key('byGroupName', @GroupName)[1])]">
        <xsl:value-of select="@GroupName"/>
        <xsl:text>&#xa;</xsl:text>
        <xsl:apply-templates select="key('byGroupName', @GroupName)" mode="out"/>
    </xsl:template>
    <xsl:template match="zrow" mode="out">
        <xsl:value-of select="@User"/>
        <xsl:text>&#xa;</xsl:text>
    </xsl:template>
    <xsl:template match="zrow"/>
</xsl:stylesheet>


;

;

您能以HTML格式输出吗?如果我在GroupName字段中填入了一些值,这就行了。如果GoupName值中没有任何值,请更新代码以进行管理好吗???@NICK-有很多关于分组的问题。这是最常见的问题之一。我建议搜索更多关于Muenchian方法(如果您使用的是XSLT1.0)或分组的信息。你应该很容易找到许多好的例子。作为提示,用其他HTML元素包装像
这样的行应该非常简单,如下所示:
  • 您好,谢谢您的建议。在发布此问题之前,我查看了所有相关的问题和示例,但找不到合适的解决方案。我想再经历一次也没有多大帮助。不管怎样,谢谢你们的帮助,真的很有帮助。大家好,非常感谢你们帮助我,它工作得很好。只有一个问题。实际上,我的XML数据结构如下:您能告诉我如何处理“:”因为当我写它时,它给我一个错误,因为前缀z没有定义!!