Я предположил, что атрибут TextValue
вашего второго элемента <PlainText>
неправильно введен и фактически является атрибутом someValue
.
Вот некоторый XSLT, который должен делать эту работу:
<xsl:template match="/element">
<element>
<xsl:for-each select="AttrValue">
<AttrValue someatt="{@someatt}">
<xsl:for-each select="//PlainText">
<xsl:if test="position() != 0">, </xsl:if>
<xsl:value-of select="@someValue"/>
</xsl:for-each>
</AttrValue>
</xsl:for-each>
</element>
</xsl:template>
Это в основном вложенный цикл <xsl:for-each>
. Единственная хитрость - это то, как position()
используется для размещения запятых между текстовыми значениями.