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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> цикл в шаблоне xsl 
:(
    Опции темы
yalo
Дата 21.8.2012, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здравствуйте!
У меня такая проблема. Есть файл xml:
Код

<tbl>
    <elem>
       <td1>1-я ячейка 1-й строки</td1>
       <td2>2-я ячейка 1-й строки</td2>
       <td3>3-я ячейка 1-й строки</td3>
    </elem>
    <elem>
       <td1>1-я ячейка 2-й строки</td1>
       <td2>2-я ячейка 2-й строки</td2>
       <td3>3-я ячейка 2-й строки</td3>
    </elem>
</tbl>

А теперь надо, чтобы шаблон xslt преобразовался вот так в html:
Код

<table>
  <tr>
    <td>1-я ячейка 1-й строки</td>  
    <td>2-я ячейка 1-й строки</td>  
    <td>3-я ячейка 1-й строки</td>  
  </tr>
  <tr>
    <td>1-я ячейка 2-й строки</td>  
    <td>2-я ячейка 2-й строки</td>  
    <td>3-я ячейка 2-й строки</td>  
  </tr>
</table>


вот мой кривой шаблон xslt:
Код

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="/">
<table border="1" width="100%" cellpadding="3" cellspacing="0">
    <xsl:for-each select="/tbl/elem">
        <tr>
            <xsl:for-each select="/tbl/elem/*">
                <td><xsl:value-of select="/tbl/elem/*" /></td>
            </xsl:for-each>
        </tr>
    </xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>

В итоге у меня получается, что в каждую строку таблицы html добавляется столько ячеек, сколько их можно насчитать во всей таблице, т.е. число ячеек в строке, умноженное на число строк таблицы.
Я понимаю, почему так происходит, но не могу сообразить, как хитро следует написать, чтобы разделить содержимое тегов elem на разные строки. Помогите, пожалуйста smile 

И кстати. Содержимое для ячеек почему-то вытаскивает для всех из первой самой ячейки "1-я ячейка 1-й строки" Т.е. как-то не корретно получается писать как я пишу:
Код

            <xsl:for-each select="/tbl/elem/*">
                <td><xsl:value-of select="/tbl/elem/*" /></td>
            </xsl:for-each>

А как корректно?

Это сообщение отредактировал(а) yalo - 21.8.2012, 19:24
PM MAIL ICQ   Вверх
diadiavova
Дата 21.8.2012, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Вместо /tbl/elem/* во внутреннем фориче, напиши ./* или просто *. Думаю этого будет достаточно.


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

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

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

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

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


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

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


 




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


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

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