我是XSLT的新手,我正在试图找出如何根据孩子的价值添加父节点来对数据进行分组。 (我不确定这是否有意义,但很难解释。)
这是原始输出:
request.POST.get("date")
我想有这个输出:
<root>
<detailRow>
<EmployeeID>123456</EmployeeID>
<LastName>Doe</LastName>
<FirstName>John</FirstName>
<CompanyID>Cie_222</CompanyID>
</detailRow>
<detailRow>
<EmployeeID>98765</EmployeeID>
<LastName>Smith</LastName>
<FirstName>John</FirstName>
<CompanyID>Cie_222</CompanyID>
</detailRow>
<detailRow>
<EmployeeID>100859</EmployeeID>
<LastName>Roe</LastName>
<FirstName>Richard </FirstName>
<CompanyID>Cie_227</CompanyID>
</detailRow>
</root>
目前我有这段代码:
<root>
<GroupCompany id="Cie_222">
<detailRow>
<EmployeeID>123456</EmployeeID>
<LastName>Doe</LastName>
<FirstName>John</FirstName>
<CompanyID>Cie_222</CompanyID>
</detailRow>
<detailRow>
<EmployeeID>98765</EmployeeID>
<LastName>Smith</LastName>
<FirstName>John</FirstName>
<CompanyID>Cie_222</CompanyID>
</detailRow>
</GroupCompany>
<GroupCompany id="Cie_227">>
<detailRow>
<EmployeeID>100859</EmployeeID>
<LastName>Roe</LastName>
<FirstName>Richard </FirstName>
<CompanyID>Cie_227</CompanyID>
</detailRow>
</GroupCompany>
</root>
答案 0 :(得分:0)
您所拥有的分组似乎很好,只有您不需要xsl:copy
,而只需要GroupCompany
包装和属性的填充:
<xsl:template match="/">
<root>
<xsl:for-each-group select="root/detailRow" group-by="CompanyID">
<xsl:sort select="CompanyID"></xsl:sort>
<GroupCompany id="{current-grouping-key()}">
<xsl:copy-of select="current-group()"/>
</GroupCompany>
</xsl:for-each-group>
</root>
</xsl:template>