|
|
|
Незамысловатое меню.
|
|||
|---|---|---|---|
|
#18+
Добрый день, господа. Помогите разобраться. Мне необходимо заполнить меню. Заполнение посредством XML+XSL. XML-строка формируется в базе запросом(MSSQL2005). Вот отрывок из XML-файла. <root> - <row> <food_name>Мука пшеничная</food_name> <bludo_type>Обед</bludo_type> <bludo_name>Драники</bludo_name> <food_kol_vo>4.00</food_kol_vo> </row> - <row> <food_name>Мука пшеничная</food_name> <bludo_type>Ужин</bludo_type> <bludo_name>Драники</bludo_name> <food_kol_vo>4.00</food_kol_vo> </row> - <row> <food_name>Мясо</food_name> <bludo_type>Обед</bludo_type> <bludo_name>Зразы</bludo_name> <food_kol_vo>7.00</food_kol_vo> </row> - <row> <food_name>Мясо</food_name> <bludo_type>Завтрак</bludo_type> <bludo_name>Зразы</bludo_name> <food_kol_vo>7.00</food_kol_vo> </row> </root> Скрин того, что нужно получить прикреплен ниже. В чем лично для меня проблема.. В том что нужно для каждого блока определять в какой столбец(то есть для какого блюда) его вписывать. Быть может, для удобства следует формировать другую строку? Это как бы простейший уже реализованный запрос. Если есть предложения я буду только рад. Однако, главный вопрос все равно - как это сделать в xsl. Заранее благодарю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 10:54 |
|
||
|
Незамысловатое меню.
|
|||
|---|---|---|---|
|
#18+
не вижу вопроса, кроме как "как сделать?". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 16:45 |
|
||
|
Незамысловатое меню.
|
|||
|---|---|---|---|
|
#18+
Вопрос.. Наверно, для вас то что здесь представлено не является проблемой. Для меня есть проблема: я могу запихать в столбцы любые записи из xml-файла, но только когда знаю в какой столбец пихать. Здесь типы столбцов(завтрак, обед...) хранятся в том же xml. Вот и вопрос: как из одного файла и заполнить столбцы(указать какие блюда и куда вписывать), и потом в соответствии с этими столцами проставить значения строк(какое кол-во в какие блюда)? Надеюсь, я более менее понятно выразился. Заранее благодарю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 18:34 |
|
||
|
Незамысловатое меню.
|
|||
|---|---|---|---|
|
#18+
Поясню еще. Я не знаю как поставить условие, что бы при заполнении строк проверялось: если значение атрибута равно значению столбца, то вносилось значение другого атрибута. Если бы столбцы были известны заранее, то да - без вопросов. А как сделать, если они заполняются динамически, из этого же xml. Да, вопрос "КАК СДЕЛАТЬ?" или "каким оператором/связкой операторов это можно сделать?" Если есть какие то мысли - предлагайте. Быть может вообще стоит изменить запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 10:01 |
|
||
|
Незамысловатое меню.
|
|||
|---|---|---|---|
|
#18+
Вопрос кажется очень похож на мой в соседнем топике. Только ситуация немного другая: я, зная как сформировать структуру данных в базе и сделать отчет по 3 таблицам (в этом случае: Завтрак-Обед-Ужин+Таблица раскладка компонентов), не имею понятия как сформировать xml. У меня задача состоит в том, чтобы пользователь мог выбрать любой набор (Завтрак-Обед-Ужин) и получил excel файл похожий на картинку с меню. Xml нужен собственно для загрузки его в Excel. Если возражений нет то предлагаю автору топика объединить усилия в решении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 11:38 |
|
||
|
Незамысловатое меню.
|
|||
|---|---|---|---|
|
#18+
Возражений нет, тем более что активность на форуме небольшая, а время идет :) Дело в том, что я формирую xml строку запросом в mssql2005 при помощи параметра for xml. У Вас, я так понимаю, нечто другое.. Проблема в формировании xml файла из датасета? То есть из базы запросом выбираются необходимые пользователю данные, помещаются в датасет, а дальше необходимо как то сформировать xml? Быть может устроит мой вариант - когда в приложение будет передаваться уже готовая xml строка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 12:01 |
|
||
|
Незамысловатое меню.
|
|||
|---|---|---|---|
|
#18+
По ходу разбора проблемы появился другой вопрос: как можно в xsl реализовать подобие цикла. Что бы зная количество элементов(допустим оно будет присылаться и равно n) можно было объявить n переменных и засунуть поочередно в них (с 1 и до n) значения одного и того же атрибута всех элементов(с 1 и до n). Например: в xml есть список людей, у каждого человека есть атрибуты имени, фамилии и отчества. Так вот если xml будет хранить информацию о 4х людях, то в нем будет содержаться какой то тег с значением "4" и будет создаваться 4 переменных, где в 1ю внесется имя первого, во вторую - имя второго и так далее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 12:11 |
|
||
|
Незамысловатое меню.
|
|||
|---|---|---|---|
|
#18+
Папуша ДмитрийДля меня есть проблема: я могу запихать в столбцы любые записи из xml-файла, но только когда знаю в какой столбец пихать. Здесь типы столбцов(завтрак, обед...) хранятся в том же xml.смотри сюда и делай аналогично http://www.sql.ru/forum/actualthread.aspx?tid=406760 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 16:32 |
|
||
|
Незамысловатое меню.
|
|||
|---|---|---|---|
|
#18+
Свою задачу я решил следующим образом: 1. создал датасет с таблицами (в Вашем варианте это колонки из примера) 2. передаю датасет в функцию где генерируется xml. строка формируется таким образом: количество записей одинаковое для всех таблиц. берется таблица(n) и значение каждой колонки используется как значение поля для xml. и так до конца списка колонок таблицы. потом другая таблица. затем аналогично формируется следующая строка. Возможно несколько сумбурно объяснил. Собственно это решение приходило в голову в самом начале. Думаю что есть более красивое: например обрабатывать целиком таблицу за таблицей, а потом "развернуть" полученное по горизонтали как-нибудь. В этом случае таблицы могут иметь разное количество записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2007, 03:35 |
|
||
|
Незамысловатое меню.
|
|||
|---|---|---|---|
|
#18+
Блин, ребята, что то я совсем в тупик зашел. Напишу, до чего я дошел в своих мыканьях, а вы уж осудите.. Если отбросить пока то чем это нужно реализовать и хотя бы решить с алгоритмом реализации, то вот какое решение вижу я. Имеем несколько элеметнов, например: рут продукт <название_продукта>продукт1</название_продукта> <номер_столбца>1</номер_столбца> <колво>колво1</колво> /продукт продукт <название_продукта> продукт1 </название_продукта> <номер_столбца>2</номер_столбца> <колво>колво2</колво> /продукт /рут -- в самом меню это должно быть запихано в одну строку, где строка - это продукт1, а значения поставлены под блюдами 1 и 2. продукт <название_продукта>продукт2</название_продукта> <номер_столбца>2</номер_столбца> <колво>колво1</колво> /продукт продукт <название_продукта>продукт3</название_продукта> <номер_столбца>3</номер_столбца> <колво>колво3</колво> /продукт --еще 2 строки.. Пусть мы можем получить в отдельных тегах значение всех строк(i=3)и всех столбцов(тоже j=3) Далее делаем цикл. к=1 --первая строка n=1 --первый столбец пока к <= i делаем @продукт = xsl:value-of select="рут/продукт/название_продукта" --получаем название продукта для к-ой строки xsl:for-each select="рут/продукт/" = @продукт --условие заполнения этой строки <tr> пока n <= j делаем если n = xsl:value-of select="рут/продукт/номер_столбца" тогда <td>xsl:value-of select="рут/продукт/колво</td> иначе <td>пробел</td> n+1 </tr> k+1 Вобщем.. хотел как проще, а получил как всегда. Надеюсь я понятно объяснил. Дело в том, что пока в xsl я совсем не знаток. Поэтому, не сочтите за наглость, подскажите - как это реализовать на xsl-e. Быть может приведенный мною способ избыточен или порусски крив? Тогда любой совет буду рассматривать как огромную помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2007, 17:08 |
|
||
|
Незамысловатое меню.
|
|||
|---|---|---|---|
|
#18+
maXmo, благодарю за ссылку. Оттуда я почерпнул много нового, но я не очень понял, как это может помочь в данном случае. Может быть и может, не отрицаю, но.. я не углядел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2007, 17:09 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=14&tid=1334126]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 149ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...