2012-02-23 7 views
0

その中に、ユニークなフルーツエントリだけを表示したいと考えています。ここではXMLタグは、私がここで変数に保存してXSLを使用してユニークなエントリを表示

<fruit>apple</fruit> 
<fruit>Orange</fruit> 
<fruit>Mango</fruit> 

がコードされている以下の形式にする必要があります

<main> 
<local id="1" type="Primary"> 
-<summary Date="23-02-12"> 
-<fruit>apple</fruit> 
-<fruit>Orange</fruit> 
</summary> 
</local> 
<local id="2" type="Primary"> 
-<summary Date="23-02-12"> 
-<fruit>apple</fruit> 
-<fruit>mango</fruit> 
</summary> 
</local> 
</main> 

期待される結果を解析するために使用しているものですが、私は

を使用しようとしているどのようなスニペット
<xsl:for-each select="main/local"> 
<xsl:for-each select="symbol/fruit"> 
    <xsl:copy-of select="."/> 
    <xsl:copy-of select="fruit[not(.=$fruit)]"/> 
</xsl:for-each> 
</xsl:for-each> 

しかし、私はこのための出力表示を取得していません、あなたはここからこの重複冗長性を削除する方法を教えてくださいできますか?事前にありがとう

+0

可能重複(http://stackoverflow.com/questions/9406061 /読んでエントリをループと削除する - 重複エントリ - xslを使用して) –

+0

あなたはすでに同様の質問をしてcorectの答えを得ました。なぜ今あなたは本質的に同じ質問をしていますか? Muenchianのグループ化(最初の質問への回答のリンクに従ってください)と一般的なグループ分けについての詳細をお読みください。あなたや他の誰かがXML文書を少し変更したり、本質的に同じ質問に何が掛かっているのかを再度尋ねるのは良いことではありません。 XPathの理解にも問題があります。 「XPath式がXML文書内のすべての「fruit」要素を選択するのはどのようなものでしょうか? –

答えて

0

XSLT1.0でこれを行うには、 'Meunchian'というグループ化というテクニックを利用できます。まず、あなたはユニークなフルーツの名前を取得するには、「ルックアップ」果物に

<xsl:key name="fruit" match="fruit" use="." /> 

その後値に基づいて要素をキーを定義するには、最初にフルーツの要素であることを起こるフルーツ要素にマッチキーに(及び2つのノードが生成する、ID()メソッドを使用している同じで確認する)

<xsl:apply-templates 
    select="//fruit[generate-id() = generate-id(key('fruit', .)[1])]" /> 

ここ完全XSLTは

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 
    <xsl:key name="fruit" match="fruit" use="." /> 

    <xsl:template match="/"> 
     <xsl:apply-templates 
     select="//fruit[generate-id() = generate-id(key('fruit', .)[1])]" /> 
    </xsl:template> 

    <xsl:template match="@*|node()"> 
     <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 
あります

あなたのサンプルXMLに適用する場合、以下が出力され:[ループのエントリを読み取り、XSLを使用して、重複したエントリを削除する]の

<fruit>apple</fruit> 
<fruit>Orange</fruit> 
<fruit>mango</fruit> 
関連する問題