2017-03-14 16 views
0

前のノード値にアクセスしようとしていて、一致する場合は現在のノード値と比較しようとしています。どこが間違っているのか教えてください。xslt先行ノード値を取得

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<nums> 
    <num>02</num> 
    <num>02</num> 
    <num>03</num> 
    <num>04</num> 
    <num>05</num> 
    <num>06</num> 
    <num>06</num> 
    <num>08</num> 
    <num>09</num> 
    <num>10</num> 
</nums> 

XSLT:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 
<xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 
<xsl:template match="/*"> 
    <nums> 
    <xsl:apply-templates select= 
     "num[not(preceding-sibling::node()[1]=node()]"/> 
    </nums> 
</xsl:template> 
</xsl:stylesheet> 

私は前のノード値とは異なる値を持つ、現在のnum個の値を取得しようとしています。テンプレートで私の状態はどうでしょうか?

答えて

0

あなたの条件として表現する必要があります。

<xsl:apply-templates select="num[not(preceding-sibling::node()[1] = .)]"/> 

か - など - が好ましい:しかし、これは重複を削除するには良い方法ではありません

<xsl:apply-templates select="num[not(preceding-sibling::num[1] = .)]"/> 

- なぜここを参照してください:http://www.jenitennison.com/xslt/grouping/muenchian.html

関連する問題