我試圖從列表中獲取非重複節點值。我嘗試了很多建議,但沒有爲我工作。 這是我的源XMLXSLT選擇非重複節點值
<Records>
<Record>
<Files>
<File>
<Name>A</Name>
</File>
<File>
<Name>B</Name>
</File>
<File>
<Name>B</Name>
</File>
</Files>
</Record>
<Record>
<Files>
<File>
<Name>A</Name>
</File>
<File>
<Name>B</Name>
</File>
<File>
<Name>C</Name>
</File>
<File>
<Name>C</Name>
</File>
</Files>
</Record>
</Records>
輸出我要找應該看起來像這樣
A,B | A,B,C
第一個逗號分隔集的文本是從第一條記錄和第二組(後「|」)是從第二個記錄。 (分隔符的位置,空間等等......是不是我的問題,這是去除重複的)
代碼,我現在看起來是這樣
<xsl:key name="NameId" match="Name" use="." />
<xsl:for-each select="Records/Record">
<xsl:call-template name="doeach_record"/>
<xsl:text>|</xsl:text>
</xsl:for-each>
<xsl:template name="doeach_record">
<xsl:for-each select="Files/File">
<xsl:if test="generate-id(Name) = generate-id(key('NameId', Name)[1])">
<xsl:value-of select="Name"/>
</xsl:if>
<xsl:text>,</xsl:text>
</xsl:for-each>
</xsl:template>
,從第一個記錄刪除重複,第二記錄它不選擇在第一個記錄中找到的名稱值。 我得到的輸出是這樣的
A,B | ,,C