2017-11-06 26 views
-3

では、次のXMLコンテンツを持って考えてみましょう、私はdisire出力が何かあるそれ自体選択だけ繰り返しノード名

<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> 

を繰り返しばかりのノードを返すXPath式を必要としますこのように: A1 A2

+0

兄弟以下はそのようなではないという条件を追加することができ、出力にdublicatesを避けるために、同じ名前

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

whith兄弟が、先行していることを、このようなノードを探しますあなた自身で問題を解決しようとしていますか? – Andersson

答えて

0

試すことができます

<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

それは問題ではないので、それは次のようになる –

+0

A 1 A 2 B 3 A 5 b 8 b 8しかし、私は欲しいものは反復可能なタグ名です –

+0

誰かが助けることができるならば、お願いします –

0

あなたはthareがどれ

//*[name() = preceding-sibling::*/name()][not(name() = following-sibling::*/name())] 
関連する問題