Странно, вроде всё ровно и должно работать.
Я бы начал вот что делать:
0. Убедиться, что нет другого шаблона mode="sitemap" для udata://content/sitemap для item "с более высоким приоритетом", который возможно срабатывает. заменить mode="sitemap" на mode="sitemap222" в вызове шаблона и в описание шаблона
1. <xsl:copy-of select="document('udata://content/sitemap')/udata"/> - убедиться, что там точно что-то есть.
2. Начал бы разбираться последовательно:
!!!<xsl:apply-templates select="document('udata://content/sitemap')/udata" mode="sitemap222"/>!!!
<xsl:template match="udata[@method='sitemap']" mode="sitemap222">
...udata...
<xsl:apply-templates select="items" mode="sitemap222"/>
</xsl:template>
<xsl:template match="udata[@method='sitemap']//items" mode="sitemap222">
...items...
<xsl:apply-templates select="item" mode="sitemap222"/>
</xsl:template>
<xsl:template match="udata[@method='sitemap']//item" mode="sitemap222">
...item...
<xsl:apply-templates select="items" mode="sitemap222"/>
</xsl:template>
И затем бы начал анализировать то, что выводится
P.S.
Лично я не пользуюсь такой формой записи
<xsl:template match="
//item" mode="sitemap">
и записал бы это вот так
<xsl:template match="item" mode="sitemap">
Не исключено, что //item - корректный способ.