В firefox есть расширение firebug, там есть вкладка "сеть" - можно посмотреть к каким сайтам при открытии страницы идут обращения.
Ищите в файлах темы eval, ссылки скорее всего закодированы.
100% гарантию, что будет работать я не дам, но писалось с расчетом на это.
Здесь есть "функция" copier - <xsl:template name="copier">, она выводит сам элемент и его параметры, а для дочерних тегов вызывает саму себя. Единственный костыль - это отображение атрибута xmlns у тега, так как средствами xlst он за атрибут не считается, поэтому он устаналивается только для тега button. Если этот атрибут не будет мешать у других тегов, то его можно всем прописывать, либо же дополнять условие, чтобы xmlns прописывался и у других тегов.
Вложенность тут ограничена скорее каким-то техническими факторами, а ля памяти может не хватить или еще что. Параметры у тегов тоже копирует.
На вашем примере вот такой получился:
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template name="copier"> <!-- копирует переданный элемент --> <xsl:param name="elem" /> <xsl:element name="{name()}"> <!-- копирует параметры --> <xsl:for-each select="./@*"> <xsl:attribute name="{name()}"> <xsl:value-of select="." /> </xsl:attribute> </xsl:for-each> <!-- параметр xmlns через предыдущее выражение не получается, поэтому его только для тега button прописываем руками --> <xsl:if test="name()='button'"> <xsl:attribute name="xmlns"> <xsl:value-of select="namespace-uri()" /> </xsl:attribute> </xsl:if> <!-- дочерние элементы обрабатываем аналогично --> <xsl:for-each select="*"> <xsl:call-template name="copier"> <xsl:with-param name="elem" select="." /> </xsl:call-template> <!-- Текст внутри элементов выводим только для узлов, у которых нет потомков --> <xsl:if test="string-length(text())!=0 and count(*)=0"> <xsl:value-of select="." /> </xsl:if> </xsl:for-each> </xsl:element> </xsl:template> <xsl:template match="data"> <result> <xsl:for-each select="buttons"> <xsl:call-template name="copier"> <xsl:with-param name="elem" select="." /> </xsl:call-template> </xsl:for-each> </result> </xsl:template></xsl:stylesheet>
Тут рекурсивно обходим все эелменты внутри заданного, копируем атрибуты, для тега button копируем xmlns (так как он за атрибут похоже не считается), для элементов, у которых нет потомков и есть текст - выводим его.
Правда я это на php тестировал, не знаю уж получится ли с яндекс.баром.
еще вариант - это свой вариант функции copy-of написать через:
<xsl:apply-templates select="@*"/> - выборка всех атрибутов.<xsl:value-of select="name()"/> - название текущего аттрибута/тега.<xsl:value-of select="."/> - значение текущего атрибута/тега.
Т.е перебрать все атрибуты тега и все вложенные теги и т.п.
Но как-то это не по феншую будет, как мне кажется.
Я с преобразованиями xml/xslt только в php работал - там ваш xslt работает успешно.
<?xml version="1.0"?> <result><buttons> <button xmlns="http://bar.yandex.ru/dev/gui"> <text> чваваыаывав </text> </button> </buttons></result>
Вот что выдает.
пока я отвечал, вы запостили ваши xml/xslt, сейчас попробую разобраться.
http://www.raleigh.ru/XML/XSLTutorial/24.htm
<xsl:copy-of select="."/>
if(isset($_POST['var']))
{
}