Мартин подробно проработал вас, чтобы получить окончательный результат, включая избавление от лишних пробелов и т.д. c, но на высоком уровне вот как использовать xsl:value-of
с separator
правильно.
У вас есть:
<body>
<xsl:for-each select="/skills/skill">
<xsl:value-of select="." separator=", "/>
</xsl:for-each>
</body>
Это говорит о том, что для каждого узла навыков возьмите содержимое этого узла и отобразите его. Примечательно, что value-of видит только один навык за раз, поэтому нет ничего, что можно было бы объединить с помощью разделителя запятой.
Ответ, который даст вам то, что вы хотите:
<body>
<xsl:value-of select="/skills/skill" separator=", "/>
</body>
Это говорит о том, что нужно взять набор узлов навыков и отобразить их, соединенные запятыми. Вы можете увидеть результат в https://xsltfiddle.liberty-development.net/naZXVFi/4