У меня есть следующий XML:
<a>
<b>
<d>D1 content (can include child nodes)</d>
</b>
<b>
<c>C1 content (can include child nodes)</c>
</b>
<b>
<e>E1 content (can include child nodes)</e>
</b>
<b>
<c>C2 content (can include child nodes)</c>
</b>
</a>
Используя XSLT 1.0, мне нужно произвести из этого просто: "cde"; то есть отдельный список имен ближайших потомков / a / b /, упорядоченных по имени узла. У каждого b ровно один дочерний элемент произвольного имени.
Я могу произвести "ccde":
<xsl:for-each select="/a/b/*">
<xsl:sort select="name(.)"/>
<xsl:value-of select="name(.)" />
</xsl:for-each>
Я пытался использовать обычное сравнение previous-sibling ::, но так как у каждого b есть только один дочерний элемент, предыдущий брат всегда ничего.