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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обработать несколько файлов xml, обработка n-файлов xml-xsl-html 
:(
    Опции темы
JuRMaN
Дата 27.2.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!

Прошу Вас помочь в следующей задаче:

Имеется N-число файлов xml, одинаковой разметки, но с разным информационным наполнением. Необходимо из каждого файла xml "вытянуть" через xsl информацию в тегах, например <Res1></Res1> <Res2></Res2> <Res3></Res3> и эту информацию отобразить в виде таблицы HTML страницы:

         Имя                   Фамилия              Отчество
<Res1></Res1>   <Res2></Res2>   <Res3></Res3>
           ...                          ...                          ...
<Res1></Res1>   <Res2></Res2>   <Res3></Res3>
<Res1></Res1>   <Res2></Res2>   <Res3></Res3>

Спасибо.
PM MAIL   Вверх
diadiavova
Дата 27.2.2010, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



В xslt есть функция document(), позволяющая извлекать данные из документа, находящегося по заданному адресу.


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


Новичок



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

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



diadiavova
Не могли бы привести пример, как эта функция работает с несколькими файлами, например 1.xml, 2.xml, 3.xml?

PM MAIL   Вверх
diadiavova
Дата 28.2.2010, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Ну вот как вариант
1.xml
Код

<?xml version="1.0" encoding="utf-8"?>
<root>
  <Res1>Иванов</Res1>
  <Res2>Иван</Res2>
  <Res3>Иванович</Res3>
</root>

2.xml
Код

<?xml version="1.0" encoding="utf-8"?>
<root>
  <Res1>Петров</Res1>
  <Res2>Пётр</Res2>
  <Res3>Петрович</Res3>
</root>

3.xml
Код

<?xml version="1.0" encoding="utf-8"?>
<root>
  <Res1>Сидоров</Res1>
  <Res2>Сидор</Res2>
  <Res3>Сидорович</Res3>
</root>

Структура основного документа не важна в моём примере, данные из него в конечном документе не используются(в твоём видимо будет иначе)Я сделал так
Код

<?xml version="1.0" encoding="utf-8"?>
<root/>

Ну и собственно преобразование
Код

<?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" indent="yes"/>

  <xsl:template match="/">
    <html>
      <head>
        <title>multydocument</title>
      </head>
      <body>
        <table border="1" bordercolor="black" cellspacing="0">
          <tbody>
            <tr>
              <th>Фамилия</th>
              <th>Имя</th>
              <th>Отчество</th>
            </tr>
            <xsl:call-template name="extRow">
              <xsl:with-param name="src" select="'1.xml'"/>
            </xsl:call-template>
            <xsl:call-template name="extRow">
              <xsl:with-param name="src" select="'2.xml'"/>
            </xsl:call-template>
            <xsl:call-template name="extRow">
              <xsl:with-param name="src" select="'3.xml'"/>
            </xsl:call-template>
          </tbody>
        </table>
      </body>
    </html>
  </xsl:template>

  <xsl:template name="extRow">
    <xsl:param name="src"/>
    <tr>
      <td>
        <xsl:value-of select="document($src)//Res1"/>
      </td>
      <td>
        <xsl:value-of select="document($src)//Res2"/>
      </td>
      <td>
        <xsl:value-of select="document($src)//Res3"/>
      </td>
    </tr>    
  </xsl:template>
</xsl:stylesheet>

Всё должно лежать в одном каталоге(я использовал относительную адресация)

Это сообщение отредактировал(а) diadiavova - 28.2.2010, 02:19


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


Новичок



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

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



diadiavova
Спасибо за пример. становиться все прозрачно. А как быть если таких файлов больше 300, не описывать же каждый в структуре. Есть ли возможность у xslt сделать так чтобы он мог обработать все находящиеся файлы в одной папке?
PM MAIL   Вверх
diadiavova
Дата 28.2.2010, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(JuRMaN @  28.2.2010,  11:06 Найти цитируемый пост)
Есть ли возможность у xslt сделать так чтобы он мог обработать все находящиеся файлы в одной папке?

На сколько я помню, станндартных способов нет(могу ошибаться), но никто не мешает создать дополнительный хмл-файл, в котором будет содержаться список файлов данных и брать сведения из него. Его в принципе и автоматически генерировать можно.


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


Новичок



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

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



diadiavova
Цитата
создать дополнительный хмл-файл, в котором будет содержаться список файлов данных и брать сведения из него. Его в принципе и автоматически генерировать можно. 

Вот это, то что надо. Можете написать пример автоматической генерации такого файла?

Спасибо за Вашу отзывчивость. smile 
PM MAIL   Вверх
diadiavova
Дата 28.2.2010, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(JuRMaN @  28.2.2010,  14:02 Найти цитируемый пост)
Можете написать пример автоматической генерации такого файла?

Это зависит от того, на каком языке это всё пишется. Я так понимаю всё это будет на сервере работать, так что всё зависит от того, какой язык там используется, и этот вопрос надо рассматривать в соответствующем разделе форума.


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


Новичок



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

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



Хотелось бы использовать язык xlst, но если это на нём сделать будет невозможно, придется изучать другой.
PM MAIL   Вверх
diadiavova
Дата 28.2.2010, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(JuRMaN @  28.2.2010,  14:18 Найти цитируемый пост)
Хотелось бы использовать язык xlst

Этот язык предназначен для преобразования XML-файлов, а такие вещи как работа с файловой системой - не совсем его сфера.


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

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

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

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

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


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

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


 




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


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

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