Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вывести абсолютную позицию элемента в древе, например: 2_1_1_3 
:(
    Опции темы
Alx
Дата 16.4.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



subj.

Код

  <xsl:template match="node">
    <div id={...}>
      <xsl:apply-templates/>
   </div>
  </xsl:template>


, где .... это //... для

Код

<node> // 1
  <node/> // 1_1
  <node> // 1_2
    <node> // 1_2_1
      <node/> // 1_2_1_1
      <node/> // 1_2_1_2
    </node>
    <node/> // 1_2_2
  </node>
</node>
<node/> // 2


спасибо!

Это сообщение отредактировал(а) Alx - 16.4.2007, 18:37


--------------------
PM MAIL WWW ICQ   Вверх
batigoal
Дата 16.4.2007, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Нужно использовать position(). Посмотри вот этот пример - http://www.zvon.org/xxl/XSLTutorial/Output_rus/53.htm - и доработай.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Alx
Дата 16.4.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



Цитата(batigoal @  16.4.2007,  20:39 Найти цитируемый пост)
Нужно использовать position(). 

да, я знаю, но это же только для вывода позиции относительно родителя. а как пробежаться по всем родителям и добавить к ним их позиции? или может, это можно сделать проще? боюсь, моих знаний, к сожалению пока для этого не хватит.

---- кстати:
а в чем разница между <xsl:value-of select="position()"/> и  <xsl:number count="(*)" />?


--------------------
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 16.4.2007, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 4
Всего: 401



Alx, похоже, мы с Вами одни задачи решаем. Сам недавно делал практически это же. Получилось (в приложении к Вашему примеру) прмерно вот что:
Код

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="node">
        <xsl:param name="path"/>
        <div>
            <xsl:attribute name="id"><xsl:if test="$path"><xsl:value-of select="$path"/>_</xsl:if><xsl:value-of select="position()"/></xsl:attribute>
        </div>
        <xsl:apply-templates select="node">
            <xsl:with-param name="path"><xsl:if test="$path"><xsl:value-of select="$path"/>_</xsl:if><xsl:value-of select="position()"/></xsl:with-param>
        </xsl:apply-templates>
    </xsl:template>
</xsl:stylesheet>

Может быть, можно и проще... может, можно как-то обойтись без <xsl:if> при инициализации цепочки позиций - я, к сожалению, не смог придумать, как...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Alx
Дата 16.4.2007, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



Цитата(SelenIT @  16.4.2007,  22:25 Найти цитируемый пост)
Может быть, можно и проще... может, можно как-то обойтись без <xsl:if> при инициализации цепочки позиций - я, к сожалению, не смог придумать, как... 

Здорово, спасибо!

Это сообщение отредактировал(а) Alx - 17.4.2007, 13:02


--------------------
PM MAIL WWW ICQ   Вверх
JVM
Дата 17.4.2007, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 30.10.2006

Репутация: 4
Всего: 5



Цитата(Alx @  16.4.2007,  21:09 Найти цитируемый пост)
а в чем разница между <xsl:value-of select="position()"/> и  <xsl:number count="(*)" />?

Вместо count="(*)" надо писать count="*" - без скобок.

Чтобы стало понятно в чем разнича надо объяснять, как работает <xsl:number>.

К тому xml, который вы привели скорее всего лучше(спорный вопрос) использовать position(), если хочется получить некоторой выгоды в производительности.
Использование <xsl:number> будет давать более медленный результат, но красивый, более ясный и меньше зависящий от контекста.
PM MAIL   Вверх
Alx
Дата 17.4.2007, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



спасибо.)


--------------------
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.