В XSLT 2 или 3 вы можете сгруппировать эти label
элементы и проверить, есть ли более чем один элемент в current-group()
:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
version="3.0">
<xsl:output method="text" item-separator=" "/>
<xsl:template match="/">
<xsl:for-each-group select="//field[@name = 'partya']/label" group-by=".">
<xsl:if test="tail(current-group())">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
https://xsltfiddle.liberty-development.net/ehVZvvA
В XSLT 1 вы можете использовать мюнхенскую группировку и проверить, существует ли более одного элемента в группе:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="text"/>
<xsl:key name="group" match="field[@name = 'partya']/label" use="."/>
<xsl:template match="/">
<xsl:apply-templates select="//field[@name = 'partya']/label[key('group', .)[2]][generate-id() = generate-id(key('group', .)[1])]"/>
</xsl:template>
<xsl:template match="label">
<xsl:if test="position() > 1"> </xsl:if>
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
https://xsltfiddle.liberty-development.net/ehVZvvA/1