Ваша переменная persons
содержит документ, который представляет собой один узел с дочерними элементами, а не список узлов.
Когда вы используете <xsl:for-each>
позже в своей таблице стилей, вы выполняете только итерацию'список', содержащий этот один узел документа.Трудно сказать точно, не видя ваши исходные документы, но похоже, что вам, вероятно, нужно указать $persons/persons/person
вместо просто $persons
.Это также может сделать ваше использование key('personID', $cid)
излишним, но трудно быть уверенным без дополнительной информации.