XSLT 2.0 には関数http://www.w3.org/TR/2013/CR-xpath-functions-30-20130521/#func-deep-equalがあるため、テンプレートを記述できます
<xsl:template match="parent[deep-equal(., preceding-sibling::parent[1])]">...</xsl:template>
parent
前の兄弟と等しい要素を処理しますparent
。
XSLT 1.0 でそれを行いたい場合は、プレーン テキスト コンテンツを持つ一連の子要素の単純なケースでは、テンプレートを記述するだけで十分です。
<xsl:template match="parent" mode="sig">
<xsl:for-each select="*">
<xsl:if test="position() > 1">|</xsl:if>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
そして、次のように使用します。
<xsl:template match="parent">
<xsl:variable name="this-sig">
<xsl:apply-templates select="." mode="sig"/>
</xsl:variable>
<xsl:variable name="pre-sig">
<xsl:apply-templates select="preceding-sibling::parent[1]" mode="sig"/>
</xsl:variable>
<!-- now compare e.g. -->
<xsl:choose>
<xsl:when test="$this-sig = $pre-sig">...</xsl:when>
<xsl:otherwise>...</xsl:otherwise>
</xsl:choose>
</xsl:template>
より複雑なコンテンツについては、「署名」文字列を計算するテンプレートの実装を改良する必要があります。Web を検索することをお勧めします。Dimitre Novatchev が以前の同様の質問に解決策を投稿したと確信しています。