2016-03-28 19 views
2

I <x> çift (başka <x> düğüm tarafından <x> edilmiş), art arda yerleştirilmiş, bu gibi bir XML,XSLT - başka bir birleşme noktası tarafından takip tespit düğüm

<doc> 
    <p>para<x>para</x>para<x>para</x>para</p> 
    <p>para<x>para</x><x>para</x>para</p> 
</doc> 

bir '' <x> arasında düğüm eklemek gerekir sahip .

yüzden, yukarıdaki örnek xml için, çıkış olmalı, ben şöyle şablon fo '' ardışık <x> kaydetti ve ekledi tespit bir xsl yazmaya çalıştı

<doc> 
    <p>para<x>para</x>para<x>para</x>para</p> 
    <p>para<x>para</x>,<x>para</x>para</p> 
</doc> 

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

    <xsl:template match="x[following-sibling::*[1][self::x]]"> 
     <x> 
      <xsl:apply-templates/> 
     </x> 
     <xsl:text>,</xsl:text> 
    </xsl:template> 

ama her iki senaryoda da ',' diye ekliyor. (<x> bunu takiben başka bir <x> düğümü ve <x> takip eden metin)

Bu xpath'i düzeltmek için herhangi bir fikir var mı?

cevap

3

following-sibling::*[1] kullanarak XPath sadece en yakın aşağıdaki metin düğümleri düşünmediğini, elemanı kardeş kontrol edin.

<xsl:template match="x[following-sibling::node()[1][self::x]]"> 
    <x> 
     <xsl:apply-templates/> 
    </x> 
    <xsl:text>,</xsl:text> 
</xsl:template> 
kullanmayı deneyin.