|
|
|
как определить path до нодов
|
|||
|---|---|---|---|
|
#18+
люди, как составить шаблон для отметки чекбоксов из определенного количества? есть список всех чекбоксов: <hobbi> <item>1</item> </hobbi> <hobbi> <item>2</item> </hobbi> <hobbi> <item>3</item> </hobbi> <hobbi> <item>4</item> </hobbi> и там же список тех чекбоксов, которые должны быть отмеченны, для каждего юзверя: <user> <check> <item>1</item> </check> <check> <item>3</item> </check> </user> <user> <check> <item>2</item> </check> <check> <item>4</item> </check> </user> <user> <check> <item>3</item> </check> </user> список всех чекбоксов выводится на одной странице для каждого юзера, где для каждого отмеченны соответствующие хоби юзеру, я сделал шаблон user в котором находится for-each //hobbi проблема в том, что из-за обращения к элементу hobbi и написании двух слешов указатель уходит из самого шаблона user в корень, а как его сравнивать с check/item который какраз находится в определенном user непонимаю, есть решение вообще?:) вот пример xsl: <?xml version="1.0" encoding="windows-1251"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="page"> <form method="post"> <table border="1"> <xsl:apply-templates select="//user"/> <tr> <td colspan="2" align="right"><input type="submit" value="Изменить"/></td> </tr> </table> </form> </xsl:template> <xsl:template match="user"> <tr> <td> <xsl:for-each select="//hobi"> <!-- неработает --> <xsl:if test="item=check/item"> checked </xsl:if> <!-- /неработает --> </xsl:for-each> </td> </tr> </xsl:template> </xsl:stylesheet> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 20:18 |
|
||
|
как определить path до нодов
|
|||
|---|---|---|---|
|
#18+
Guest9999999999999... непонимаю, есть решение вообще?:) Решение, безусловно, есть... (иначе, зачем бы умные люди придумывали такой xsl, который бы "спотыкался" на простейших задачах). Можно попробовать так (один из немногих случаев в применении xslt, где оправдано использование for-each и variable, .т.к. по ходу обработки меняется контекст узла): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 11:48 |
|
||
|
как определить path до нодов
|
|||
|---|---|---|---|
|
#18+
qu-qu... один из немногих случаев в применении xslt, где оправдано использование for-each и variable, .т.к. по ходу обработки меняется контекст узла) Кстати, одну переменную ($itemno) можно все-таки сократить (если сравнивать не в предикатах, а по контекстному узлу): Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 11:57 |
|
||
|
как определить path до нодов
|
|||
|---|---|---|---|
|
#18+
работает, не думал что обозначение пути можно заложить в переменную, очень красивый подход, спасибо:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 21:28 |
|
||
|
как определить path до нодов
|
|||
|---|---|---|---|
|
#18+
Guest9999999999999работает, не думал что обозначение пути можно заложить в переменную, очень красивый подход, спасибо:) Не за что, только не надо путать понятия с самого начала изучения XSLT, если что-то для вас похоже на "обозначение пути" - лучше сразу посмотреть в спецификацию по инструкции "<xsl:variable ...", чтобы потом не было "мучительно больно", когда оно поведет себя не так, как вы себе представляли... З.Ы. хинт 1 - то, что похоже на "обозначение пути", на самом деле является "набором узлов" (nodeset), т.е. "объектом", если хотите, состоящим из одного узла (именно того элемента user, который обрабатывается текущим шаблоном) и именно поэтому к нему можно применять XPath-выражения. З.З.Ы. хинт 2 - "наборы узлов" (nodesets) не единственный тип, который может "возвращать" инструкция "<xsl:variable ...". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2007, 10:44 |
|
||
|
|

start [/forum/topic.php?fid=14&msg=34642384&tid=1334240]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 148ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...