2017-11-06 1 views
-3

Betrachten Sie die folgende XML-Inhalte haben, so brauche ich den XPath-Ausdruck, der nur die Knoten zurück, die sichWählen Sie nur sich wiederholende Knoten nennen

<A1> 
    <NAME>A</NAME> 
    <QTY>1</QTY> 
</A1> 
<A1> 
    <NAME>A</NAME> 
    <QTY>2</QTY> 
</A1> 
<A2> 
    <NAME>B</NAME> 
    <QTY>3</QTY> 
</A2> 
<A1> 
    <NAME>A</NAME> 
    <QTY>5</QTY> 
</A1> 
<A2> 
    <NAME>b</NAME> 
    <QTY>8</QTY> 
</A2> 
<A3> 
    <NAME>b</NAME> 
    <QTY>8</QTY> 
</A3> 

wiederholt die DisIRE Ausgang ist etwas, wie folgt aus: A1 A2

+0

Alle Versuche, das Problem selbst zu lösen? – Andersson

Antwort

0

können Sie versuchen,

<xsl:for-each select="*"> 
     <xsl:variable name="name" select="name()"/> 
     <xsl:if 
      test="count(preceding-sibling::*[name() = $name]) = 0 and count(following-sibling::*[name() = $name]) != 0"> 
      <xsl:value-of select="name()"/> 
      <xsl:text> </xsl:text> 
     </xsl:if> 
    </xsl:for-each> 
+0

Es ist nicht das Problem, denn es bringt die folgenden –

+0

A 1 A 2 B 3 A 5 b 8 b 8, aber was ich will ist nur die wiederholbare Tag Name –

+0

Bitte, wenn jemand helfen kann –

0

Knoten finden, so dass dort vorhergehenden Geschwister whith dem gleichen Namen

//*[name() = preceding-sibling::*/name()] 

Um dublicates in der Ausgabe zu vermeiden Sie eine Bedingung hinzufügen, dass thare keine solche ist folgende Geschwister

//*[name() = preceding-sibling::*/name()][not(name() = following-sibling::*/name())] 
Verwandte Themen