Вы можете исправить это в своей таблице стилей, изменив версию таблицы стилей на 1.0.Другими словами, измените
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
на
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
Это похоже на ошибку в коде преобразования .net 4 xsl.См. Этот связанный вопрос, связанный со стековым потоком, Проблема с сортировкой XSL .
Похоже, что происходит, когда вы пытаетесь отсортировать по атрибуту, он фактически сортируется по первому дочернему элементу.Например, измените свой XML на этот, и имена будут отсортированы правильно:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="Sample.xslt" ?>
<people>
<person name="Jack" age="12">
<name>Jack</name>
<adress>First road</adress>
</person>
<person name="Bob" age="8">
<name>Bob</name>
<adress>Third road</adress>
</person>
<person name="Peter" age="20">
<name>Peter</Name>
<adress>Second road</adress>
</person>
<person name="Juli" age="65">
<name>Juli</Name>
<adress>Last road</adress>
</person>
<person name="Abbot" age="21">
<name>Abbot</Name>
<adress>No road</adress>
</person>
</people>
Я нашел ответ от Microsoft о проблеме здесь, http://connect.microsoft.com/VisualStudio/feedback/details/620628/problem-with-xsl-sort-nodes-when-using-xslcompiledtransform,, который привел меня к исправлению, которое я предложил выше,Вы можете попробовать поиграть с номером версии таблицы стилей, чтобы увидеть, что работает, а что нет.