我有以下輸入:排序的價值元素和刪除重複
<?xml version="1.0" encoding="utf-8"?>
<NewTerms>
<newTerm>XPath</newTerm>
<newTerm>AutoValue</newTerm>
<newTerm>XPath</newTerm>
<newTerm>context</newTerm>
<newTerm>AutoValue</newTerm>
<newTerm>language files</newTerm>
<newTerm>AutoValue</newTerm>
<newTerm>.NET</newTerm>
<newTerm>XPath</newTerm>
</NewTerms>
我想對它進行排序,並將其與下面的完美功能:
<xsl:output method="xml" indent="yes" omit-xml-declaration="no"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()">
<xsl:sort select="."/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
的問題是我得到(很明顯)重複排序的輸出列表中具有相同值的元素(例如XPath,AutoValue)。我想要沒有重複值的排序列表。也就是說,我希望在已排序的XML輸出中只有一次每個值。
請有什麼建議?
+1 - 更好的答案。我認爲測試集合中第一個節點的count(。| key('keyName',。)[1])= 1'方法比比較ID更漂亮(即使我並不總是使用它)。 – 2011-04-21 01:36:41
@lwburk:我也喜歡這個,因爲集合論。但只有當你確定兩個操作數都是單例時(沒有人是空的),它纔有效。 – 2011-04-21 02:16:11
+1精彩,我從你們那裏學到很多東西。現在很慚愧,我的回答被接受了。有沒有一種方法可以重新考慮它(對於所有其他正在尋找這種解決方案來指出這一點的人)? – rekaszeru 2011-04-21 10:38:03