Из вашего следующего кода:
<xsl:variable name="linkId" select="LinkId"/>
<xsl:variable name="child" select="count(/ArrayOfLinkEntity/LinkEntity[ParentLinkId=$linkId])"/>
Это происходит в цикле for-each, где единственными узлами, которые зациклены, являются LinkEntity с ParentLinkId = 0. Но из вашего исходного XML значение LinkId =1, и в присваивании переменной $ child вы выбираете в LinkEntity с ParentLinkId = 1, которых нет в ваших исходных XML-данных.
Если я что-то неправильно понял, сообщите мне, но из какогоЯ вижу, что это может быть проблемой.