Я думаю, это потому, что вы пытаетесь отсортировать daten
, а не names
.
Например, эта таблица стилей:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates select="*[local-name()='daten']/*[local-name()='employees']/*[local-name()='name']">
<xsl:sort order="ascending"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="name">
<xsl:apply-templates/>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
с вашим вводом "Daten.xml":
<daten>
<employees>
<name>Knight</name>
<name>Cook</name>
<name>Superman</name>
<name>Yoda</name>
<name>Albright</name>
</employees>
</daten>
производит этот вывод:
Albright Cook Knight Superman Yoda
EDIT
Таблица стилей требует лишь небольшого обновления для обработки ввода XML, добавленного вами в качестве ответа.
Этот вход:
<daten>
<employees>
<employee>
<name>Knight</name>
<forename>Peter</forename>
</employee>
<employee>
<name>Knight</name>
<forename>Gilbert</forename>
</employee>
<employee>
<name>Cook</name>
<forename>Thomas</forename>
</employee>
<employee>
<name>Cook</name>
<forename>Charles</forename>
</employee>
<employee>
<name>Superman</name>
<forename>Kal-El</forename>
</employee>
<employee>
<name>Yoda</name>
<forename></forename>
</employee>
<employee>
<name>Albright</name>
<forename>Peter</forename>
</employee>
<employee>
<name>Albright</name>
<forename>Charles</forename>
</employee>
<employee>
<name>Albright</name>
<forename>Mark</forename>
</employee>
</employees>
</daten>
с обновленной таблицей стилей:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates select="*[local-name()='daten']/*[local-name()='employees']/*[local-name()='employee']">
<xsl:sort order="ascending" select="name"/>
<xsl:sort order="ascending" select="forename"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="name">
<xsl:apply-templates/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="forename">
<xsl:apply-templates/>
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
производит вывод, который вы хотели:
Albright Charles
Albright Mark
Albright Peter
Cook Charles
Cook Thomas
Knight Gilbert
Knight Peter
Superman Kal-El
Yoda