mode="guide.list" это что то вроде именования шаблона. Он упоминается при вызове обработчика контента xsl:apply-templates , а также в самом шаблоне для обработки контента <xsl:template match="udata/item" mode="guide.list">
Примечание: так как шаблонов для обработки одного и тогоже контента может быть много их различают через параметры тега template http://www.w3schools.com/Xsl/el_template.asp (http://www.w3schools.com/Xsl/el_template.asp)
Вставка в шаблон кода <xsl:apply-templates select="document(concat('usel://guide/',115)/udata/item" mode="guide.list"/>(1) ниче не дала.
проверте внимательно количество скобок и других спец символов если у вас в коде тоже самое что и в сообщении то код неверно написан, пропустили скобку надо так
<xsl:apply-templates select="document(concat('usel://guide/',115))/udata/item" mode="guide.list"/>
последовательность шаблонов и вызова этого шаблона не важна, хотя обычно я вставляю в файл шаблона вызываемый шаблон ниже его вызова (для удобства поиска)
2.Что в коде (2) нужно изменить?
зависит от того что вы хотите получить если хотите ссылку на страницу с параметром в адресной строке (я такое использую иногда), то ваш шаблон будет выглядеть
<xsl:template match="udata/item" mode="guide.list">
<xsl:param name="guide-list-id" select="@id" />
<xsl:param name="guide-list-name" select="@name" />
<a href="result_page?id={$guide-list-id}">object_name=<xsl:value-of select="$guide-list-name"/></a><br/>
</xsl:template>
3.Откуда в xslt беруться (задаются) переменные,как в php (например в коде (2) переменные $guide-list-id и $guide-list-name ?
Вообще для развернутого ответа лучше читайте документацию по xslt, например на странице Ссылки (http://umihelp.ru/links/) есть подборка xslt материалов. Но в данном случае мы объявляем переменные через тег <xsl:param /> указываем его имя через аттрибут name (для вызова используем имя со знаком $ перед ним), а через аттирбут select указываем что в этот параметр внести (в частности мы вносим аттрибут id тега udata/item. см тот xml который получил вбив в адресную строку http://site/usel/guide/115
Наверно путанно, но xPath не объяснить на пальцах в 4 строчках)
Все, что вы написали, я понял.вроде)
Когда оставляю только <xsl:apply-templates select="document(concat('usel://guide/',115))/udata/item" mode="guide.list"/>
снова не пашет, просто пусто. А если убираю до <xsl:apply-templates select="document(concat('usel://guide/',115))/udata/item" />
то выдает вполне нормальный список..
И даже немного разобрался.
2.Однако никак не могу понять,почему не пашет ваш вариант с длинным кодом???
это часть grid.xsl
<div id="center">
<xsl:apply-templates select="document(concat('usel://guide/',115))/udata/item" mode="guide.list"/>
<xsl:template match="udata/item" mode="guide.list">
<xsl:param name="guide-list-id" select="@id" />
<xsl:param name="guide-list-name" select="@name" />
<a href="result_page?id={$guide-list-id}">object_name=<xsl:value-of select="$guide-list-name"/></a><br/>
</xsl:template>
</div>
а это guide.xml
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="objects">
<type id="{1}" />
</target>
<sort order="{3}">{2}</sort>
</selection>
Вот опять по отдельности все работает, а вместе ну никак не хочет!
Не обрабатывается ничего((( пустая страница блин(
Уже голова кругом, но осилить нужно..
а
<xsl:template match="udata/item" mode="guide.list">
<xsl:param name="guide-list-id" select="@id" />
<xsl:param name="guide-list-name" select="@name" />
<a href="result_page?id={$guide-list-id}">object_name=<xsl:value-of select="$guide-list-name"/></a><br/>
</xsl:template>
у вас внутри другого
<xsl:template >
...
</xsl:template>
??
если так, то поэтому и не работает, так как каждый шаблон должен быть отдельно прописан, напишите его ниже любого </xsl:template>
Юхху!! наконец-то заработало! теперь понял к чему тут mode нужен был!!
Вобщем пока буду дальше делать, скоро с новыми проблемами сюда же обращусь)))
Спасибо!
----------------------------------------------
А можно ли такое делать, как в php. Чтобы при заполнении ссылками (по шаблону) у каждой из них цифра менялась...мм аналогия:
в php я мог бы сделать так
for ($i=0; $i<10(пускай 10); $i++)
{
echo "<a href='' id='".$i."'>ссылка</a>";
}
в xml у нас написано
<a href="result_page?id={$guide-list-id}"><xsl:value-of select="$guide-list-name"/></a>
и нужно чтобы у каждой ссылки вписывался уникальный id
<a href="result_page?id={$guide-list-id}" id="тут каждый раз +1"><xsl:value-of select="$guide-list-name"/></a>
если в xml никак нельзя, то как сделать?
Смысл в том, чтобы я мог из JS обращаться к каждой ссылке по ее уникальному id (ну наприме id="link1" id="link2" и т.д.)
Хотя бы укажите куда копать..)