Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Преобразовать вложенный список

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Saddon123
Отправлено: 18 Ноября, 2015 - 01:47:28
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)




Здравствуйте, пытаюсь обработать xml файл через xsl, столкнулся с проблемой вывести правильно список данных с сохранением вложенности

Кусок xml файла

CODE (html):
скопировать код в буфер обмена
  1. <section>
  2.                 <title>
  3.                         <p>Один</p>
  4.                 </title>
  5.         <section>
  6.                         <title>
  7.                                 <p>Два</p>
  8.                         </title>
  9.         </section>
  10.         <section>
  11.                         <title>
  12.                                 <p>Три</p>
  13.                         </title>
  14.         </section>
  15. </section>
  16. <section>
  17.                 <title>
  18.                         <p>Четыре</p>
  19.                 </title>
  20.                 <section>
  21.                         <title>
  22.                                 <p>Пять</p>
  23.                         </title>
  24.                 </section>
  25.                 <section>
  26.                         <title>
  27.                                 <p>Шесть</p>
  28.                         </title>
  29.                                 <section>
  30.                                 <title>
  31.                                         <p>Семь</p>
  32.                                 </title>
  33.                         </section>
  34.                 </section>
  35. </section>


Нужно получить такой список

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <ul>
  3. <li>Один</li>
  4.         <ul>
  5.                 <li>Два</li>
  6.                 <li>Три</li>
  7.         </ul>
  8. <li>Четыре</li>
  9.         <ul>
  10.                 <li>Пять</li>
  11.                 <li>Шесть</li>
  12.                         <ul>
  13.                                 <li>Семь</li>
  14.                         </ul>
  15. </ul>


Наглядно должно выглядеть так:

Один
--Два
--Три
Четрые
--Пять
--Шесть
----Семь


Подскажите пожалуйста как реализовать это. Я пробовал через xsl:for-each но не знаю как добиться сохранения вложенности.

(Отредактировано автором: 18 Ноября, 2015 - 01:53:53)

 
 Top
Мелкий Супермодератор
Отправлено: 18 Ноября, 2015 - 09:50:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Рекурсивно.
Делаете метод обхода, изначально передаёте в него ссылку на корневую коллекцию section. Делаете по ней foreach: если встретился элемент title - выводите как есть, если section - вызываете эту самую функцию ещё раз, передав ссылку на этот section


-----
PostgreSQL DBA
 
 Top
saddon
Отправлено: 18 Ноября, 2015 - 15:11:12
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Я интуитивно понимаю как это сделать, но на практике не знаю как реализовать. Сейчас выводятся все title

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <ul>
  3. <xsl:for-each select="//fb:title">
  4.                 <li>
  5.                         <xsl:value-of select="."/>
  6.                 </li>
  7. </xsl:for-each>
  8. </ul>
  9.  


Выводятся все title
Но не сохраняется вложенность.

Я читал документацию xsl но подобного не нашел.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« XML и его обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB