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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [XSLT] xsl:attribute + родительский атрибут 
:(
    Опции темы
SwordOfDeath
  Дата 25.9.2010, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Привет, не получилось получить родительский атрибут

пробую вот так:
Код

<xsl:attribute name="url">
    <xsl:value-of select="concat(../@url,'/',@id)"/>
</xsl:attribute>


Значение родительского атрибута получается пустой строкой
Или возможно я неправильно пытаюсь решить задачу? И нужно уже при выводе информации строить url? У меня к сожалению нет никаких мыслей как это реализовать на xslt  smile 

Весь код:
Код

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" encoding="utf-8" indent="yes"/>
    <xsl:template match="/">
        <item>
            <xsl:apply-templates select="item/element">
                <xsl:sort select="@order" order="descending" data-type="number"/>
                <xsl:sort select="@name" order="ascending" data-type="text"/>
            </xsl:apply-templates>
        </item>
    </xsl:template>
    <xsl:template match="element">
        <xsl:copy>
            <xsl:attribute name="url">
                <xsl:value-of select="concat(../@url,'/',@id)"/>
            </xsl:attribute>
            <xsl:copy-of select="@*"/>
         <xsl:apply-templates select="element">
                <xsl:sort select="@order" order="descending" data-type="number"/>
                <xsl:sort select="@name" order="ascending" data-type="text"/>
            </xsl:apply-templates>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>


Это сообщение отредактировал(а) SwordOfDeath - 25.9.2010, 15:58
PM MAIL   Вверх
diadiavova
Дата 25.9.2010, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



А что такое родительский атрибут? smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
SwordOfDeath
Дата 25.9.2010, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Эм... Ну у элемента есть parent(тоесть родитель) и в итоге я хочу получить url = /{root/@id}/{child/@id}/{child/@id} итд......
Опять же возможно я неправильно пытаюсь решить задачу.... и url будет проще получить уже на этапе вывода информации. Но я не знаю как это сделать =\

пробовал и так но ругается на неправильный синтаксис
Код

            <xsl:attribute name="url">
                <xsl:value-of select="concat(parent::@url,'/',@id)"/>
            </xsl:attribute>


Это сообщение отредактировал(а) SwordOfDeath - 25.9.2010, 16:12
PM MAIL   Вверх
SwordOfDeath
  Дата 25.9.2010, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Нашел решение! Но не уверен что оно самое эффективное.
Создаю ссылку уже при выводе вот таким способом:
Код

            <a>
                <xsl:attribute name="href">
                    <xsl:for-each select="ancestor-or-self::*[@id]">
                        <xsl:text>/</xsl:text>
                        <xsl:value-of select="@id"/>
                    </xsl:for-each>
                </xsl:attribute>
                <xsl:value-of select="@name"/>
            </a>

Но меня смущает xsl:for-each, он как-то не вписывается в идеологию xsl и такое впечатление что код приведенный выше будет требовать очень много ресурсов.
Может есть другой способ?
PM MAIL   Вверх
diadiavova
Дата 25.9.2010, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(SwordOfDeath @  25.9.2010,  21:06 Найти цитируемый пост)
о меня смущает xsl:for-each, он как-то не вписывается в идеологию xsl

Это почему? Другой вопрос, что его частенько используют не к месту, но тут вполне нормально.
Цитата(SwordOfDeath @  25.9.2010,  21:06 Найти цитируемый пост)
такое впечатление что код приведенный выше будет требовать очень много ресурсов

Тот же вопрос.
Цитата(SwordOfDeath @  25.9.2010,  21:06 Найти цитируемый пост)
Может есть другой способ?

Есть, но отличается от этого только тем, что он другой, выигрыша производительности от него не будет.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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