))начнем по порядку, во первых если вы хотите использовать переменную, то будьте внимательны, переменные используется после того как они определны в виде $имя_переменной. В то время как @имя_свойства выводит вам атрибут данного узла, то есть если у вас текущий узел
<page id="97" parentId="89" link="/catalog/page/" is-active="1" object-id="544" type-id="45" update-time="1304691399" alt-name="page">, то использование @link выведет значение атрибута links, то есть "/catalog/page/"
поэтому использовав такую строчку
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @links))//udata/items" mode="photoalbum"/>
вы и к атрибуту узла не обратитесь, так как он имеет имя link, а не links и к переменной не обратитесь, так как вызов переменной нужно начинать с символа $
p.s. Напомните в какой теме я писал об этом
<xsl:variable name="links" select="document('upage://$document-page-id')/udata/page/@link"/>
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @links))//udata/items" mode="photoalbum"/>
если там есть ошибка надо исправить