我正在尝试输出一个文本文件,该文件将删除重复项并仅返回活动状态。 例如:
<Report_Data>
<Report_Entry>
<id>1</wd:id>
<status>Inactive</status>
<Report_Entry>
<Report_Entry>
<id>1</wd:id>
<status>Active</status>
<Report_Entry>
<Report_Entry>
<id>3</wd:id>
<status>Active</status>
<Report_Entry>
<Report_Entry>
<id>4</wd:id>
<status>Inactive</status>
<Report_Entry>
我尝试使用 xsl:for-each-group 和 group-by 但没有达到结果。
<xsl:template match="Report_Data">
<row>
<text>id|status</text>
<xsl:value-of select="$newline"/>
</row>
<xsl:for-each-group select="Report_Entry" group-by="id[../status='Active']">
<row>
<id>
<xsl:value-of select="id"/>
<xsl:value-of select="$delimiter"/>
</id>
<status>
<xsl:value-of select="status"/>
</status>
</row>
输出为:
id|status
1|Active
3|Active
但是期望的输出是
id|status
1|Active
3|Active
4|Inactive
尝试了此代码,但也返回了错误的输出
<xsl:for-each-group select="Report_Entry[status='Active']" group-by="id">
提前致谢。 :)
你的问题不太清楚。也许这对你有用:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/Report_Data">
<xsl:text>id|status </xsl:text>
<xsl:for-each-group select="Report_Entry" group-by="id">
<xsl:value-of select="id"/>
<xsl:text>|</xsl:text>
<xsl:value-of select="if(current-group()/status='Active') then 'Active' else 'Inactive'"/>
<xsl:text> </xsl:text>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>