2016-04-30 8 views
-3

重複ノードを排除するためにMuenchianグループを適用しようとしていますが、動作させることができないようです。XSLT1.0リピートノードを削除する

入力:

<GetUsersByRoleRspMsg> 
    <UserList> 
     <User> 
     <UserId>PPAUSER1</UserId> 
     <Email>[email protected]</Email>   
     </User> 
     <User> 
     <UserId>PPAUSER1</UserId> 
     <Email>[email protected]</Email>   
     </User>  
    </UserList> 
</GetUsersByRoleRspMsg> 

必須:

<GetUsersByRoleRspMsg> 
    <UserList> 
     <User> 
     <UserId>PPAUSER1</UserId> 
     <Email>[email protected]</Email>   
     </User>  
    </UserList> 
</GetUsersByRoleRspMsg> 

私のコードの重要な部分は、私はあなたのグループコードに問題が表示されていない

<xsl:key name="userIdEmailPair" 
     match="User" 
     use="concat(UserId,' ',Email)"/> 

<xsl:copy> 
    <xsl:for-each select="User[ 
    count(. | key('userIdEmailPair', 
        concat(UserId,' ',Email))[1]) 
    = 1]"> 
    <xsl:copy-of select="."/> 
    </xsl:for-each> 
</xsl:copy> 
+0

私たちが代わりにあなたのための全体のコードを書くのは、それを修正することができますので、あなたの試みを投稿してください。 –

+0

私が試した:<のxsl:キー名= "userIdEmailPair" 一致= "ユーザー" 使用= "CONCAT(ユーザーID、」」、電子メール) "/> ます。 >

+0

あなたの質問を編集して、そこに**完全なコードを投稿してください。 –

答えて

1

です。試してみる:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:key name="userIdEmailPair" match="User" use="concat(UserId,' ',Email)"/> 

<!-- identity transform --> 
<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="UserList"> 
    <xsl:copy> 
     <xsl:for-each select="User[count(. | key('userIdEmailPair',concat(UserId,' ',Email))[1]) = 1]"> 
     <xsl:copy-of select="."/> 
     </xsl:for-each> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 

あなたが探している結果が得られます。

もちろん、あなたが最後のテンプレートへの短縮ができます

<xsl:template match="UserList"> 
    <xsl:copy> 
     <xsl:copy-of select="User[count(. | key('userIdEmailPair',concat(UserId,' ',Email))[1]) = 1]"/> 
    </xsl:copy> 
</xsl:template> 
関連する問題