2014-07-27 17 views
-1

我的要求是象下面這樣:需要幫助的期望XSL/XQuery的輸出中

輸入: -

<Root> 
<Name>abc</Name> 
<Name>def</Name> 
<Name>abc</Name> 
<Name>abc</Name> 
<Name>def</Name> 
<Name>def</Name> 
</Root> 

輸出: - 我需要做名稱元素是誰的價值不要repititive的XML

<Root> 
<Name>abc</Name> 
<Name>def</Name> 
</Root> 

我們可以使用XSL或XQuery什麼... 請幫我在同...

+0

http://stackoverflow.com/questions/2291567/how-to-use-xslt-to-create-distinct-values – Magicianred

+0

感謝Magicianred ... – user3384223

+0

嗨,它工作時,沒有用XML定義的名稱空間。但在實際情況下,xml將包含如下所示的名稱空間: - ABC 高清 ABC ABC 高清 高清 user3384223

回答

2

在XSLT 2.0,使用

<xsl:for-each-group select="/*/Name" group-by="."> 
    <xsl:copy-of select="current-group()[1]"/> 
</xsl:for-each> 

。1.0使用

for $n in distinct-values(/*/Name) 
return <Name>{$n}</Name> 
+0

謝謝邁克爾.... – user3384223

+0

如果答案適合你,請接受它,所以它會得到一個綠色的勾號。 –

0

除了@邁克爾琦的出色答卷,如果你的XQuery 3.0,那麼你可以使用:

distinct-values(/*/Name) ! <Name>{.}</Name> 

!簡單地圖運算符,對於如此簡單的單行轉換情況,恕我直言可能比for更好。