Кто бы ни разрабатывал этот формат XML, он не думал о том, что хорошо работает в XSD или, в этом отношении, с любыми другими инструментами XML. Такое использование структурированных имен элементов кажется разумной идеей, но на самом деле это очень неприятно.
Один из подходов состоит в том, чтобы выполнить проверку как двухэтапный процесс: сначала преобразовать XML в нечто более обычное (и более простое в обработке):
<traces>
<P nr="0" time="21:39:09.776762">clock_gettime(CLOCK_BOOTTIME, {68, 27131557}) = 0</P>
<P nr="1" time="21:39:09.776831">epoll_ctl(4, EPOLL_CTL_DEL, 60, NULL) = 0</P>
...
</traces>
и затем примените XSD к результату, который теперь намного проще.
Хотя вам все еще потребуются утверждения XSD 1.1, чтобы подтвердить, что числа образуют правильную последовательность:
<xsd:assert test="not(P[position() != @nr + 1])"/>