我正在使用 SPD 2010 中的数据视图 Web 部件。 我的 xml 结构如下:
<ProjectGroups>
<ProjectGroup>
<GroupID>1</GroupID>
<ProjectName>Project 1</ProjectName>
</ProjectGroup>
<ProjectGroup>
<GroupID>2</GroupID>
<ProjectName>Project 2</ProjectName>
</ProjectGroup>
<ProjectGroup>
<GroupID>2</GroupID>
<ProjectName>Project 3</ProjectName>
</ProjectGroup>
</ProjectGroups>
这是一个汇总 Web 部件,因此我要做的是获取每个项目组下的项目计数。 对于我上面的示例,组 ID 1 有 1 个项目,组 ID 2 有 2 个项目。 我确信有一种方法可以做到这一点,但我正在即时学习 xslt,所以我不确定该怎么做。 任何帮助,不胜感激。 谢谢。
这个样式表...
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:key name="groups" match="ProjectGroup" use="GroupID" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="ProjectGroup[generate-id()=generate-id(key('groups',GroupID)[1])]">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:attribute name="count-of-projects">
<xsl:value-of select="count(key('groups',GroupID))" />
</xsl:attribute>
<xsl:apply-templates select="node()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
。当应用于您的输入时,将产生...
<?xml version="1.0" encoding="utf-8"?>
<ProjectGroups>
<ProjectGroup count-of-projects="1">
<GroupID>1</GroupID>
<ProjectName>Project 1</ProjectName>
</ProjectGroup>
<ProjectGroup count-of-projects="2">
<GroupID>2</GroupID>
<ProjectName>Project 2</ProjectName>
</ProjectGroup>
<ProjectGroup>
<GroupID>2</GroupID>
<ProjectName>Project 3</ProjectName>
</ProjectGroup>
</ProjectGroups>