powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Незамысловатое меню.
12 сообщений из 12, страница 1 из 1
Незамысловатое меню.
    #34842946
Добрый день, господа.
Помогите разобраться. Мне необходимо заполнить меню. Заполнение посредством 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.
Заранее благодарю!
...
Рейтинг: 0 / 0
Незамысловатое меню.
    #34844583
ZanZibArgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не вижу вопроса, кроме как "как сделать?".
...
Рейтинг: 0 / 0
Незамысловатое меню.
    #34844895
Вопрос.. Наверно, для вас то что здесь представлено не является проблемой. Для меня есть проблема: я могу запихать в столбцы любые записи из xml-файла, но только когда знаю в какой столбец пихать. Здесь типы столбцов(завтрак, обед...) хранятся в том же xml. Вот и вопрос: как из одного файла и заполнить столбцы(указать какие блюда и куда вписывать), и потом в соответствии с этими столцами проставить значения строк(какое кол-во в какие блюда)?
Надеюсь, я более менее понятно выразился.
Заранее благодарю!
...
Рейтинг: 0 / 0
Незамысловатое меню.
    #34845714
Поясню еще. Я не знаю как поставить условие, что бы при заполнении строк проверялось: если значение атрибута равно значению столбца, то вносилось значение другого атрибута. Если бы столбцы были известны заранее, то да - без вопросов. А как сделать, если они заполняются динамически, из этого же xml.
Да, вопрос "КАК СДЕЛАТЬ?" или "каким оператором/связкой операторов это можно сделать?"
Если есть какие то мысли - предлагайте. Быть может вообще стоит изменить запрос.
...
Рейтинг: 0 / 0
Незамысловатое меню.
    #34846116
Kicel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос кажется очень похож на мой в соседнем топике. Только ситуация немного другая: я, зная как
сформировать структуру данных в базе и сделать отчет по 3 таблицам (в этом случае: Завтрак-Обед-Ужин+Таблица раскладка компонентов), не имею понятия как сформировать xml.
У меня задача состоит в том, чтобы пользователь мог выбрать любой набор (Завтрак-Обед-Ужин) и получил excel файл похожий на картинку с меню. Xml нужен собственно для загрузки его в Excel.
Если возражений нет то предлагаю автору топика объединить усилия в решении.
...
Рейтинг: 0 / 0
Незамысловатое меню.
    #34846225
Возражений нет, тем более что активность на форуме небольшая, а время идет :)
Дело в том, что я формирую xml строку запросом в mssql2005 при помощи параметра for xml.
У Вас, я так понимаю, нечто другое.. Проблема в формировании xml файла из датасета? То есть из базы запросом выбираются необходимые пользователю данные, помещаются в датасет, а дальше необходимо как то сформировать xml? Быть может устроит мой вариант - когда в приложение будет передаваться уже готовая xml строка?
...
Рейтинг: 0 / 0
Незамысловатое меню.
    #34846290
По ходу разбора проблемы появился другой вопрос: как можно в xsl реализовать подобие цикла. Что бы зная количество элементов(допустим оно будет присылаться и равно n) можно было объявить n переменных и засунуть поочередно в них (с 1 и до n) значения одного и того же атрибута всех элементов(с 1 и до n). Например: в xml есть список людей, у каждого человека есть атрибуты имени, фамилии и отчества. Так вот если xml будет хранить информацию о 4х людях, то в нем будет содержаться какой то тег с значением "4" и будет создаваться 4 переменных, где в 1ю внесется имя первого, во вторую - имя второго и так далее...
...
Рейтинг: 0 / 0
Незамысловатое меню.
    #34847354
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Папуша ДмитрийДля меня есть проблема: я могу запихать в столбцы любые записи из xml-файла, но только когда знаю в какой столбец пихать. Здесь типы столбцов(завтрак, обед...) хранятся в том же xml.смотри сюда и делай аналогично http://www.sql.ru/forum/actualthread.aspx?tid=406760
...
Рейтинг: 0 / 0
Незамысловатое меню.
    #34852222
Kicel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Свою задачу я решил следующим образом:
1. создал датасет с таблицами (в Вашем варианте это колонки из примера)
2. передаю датасет в функцию где генерируется xml.

строка формируется таким образом: количество записей одинаковое для всех таблиц. берется таблица(n) и значение каждой колонки используется как значение поля для xml. и так до конца списка колонок таблицы. потом другая таблица. затем аналогично формируется следующая строка.
Возможно несколько сумбурно объяснил. Собственно это решение приходило в голову в самом начале.
Думаю что есть более красивое: например обрабатывать целиком таблицу за таблицей, а потом "развернуть" полученное по горизонтали как-нибудь. В этом случае таблицы могут иметь разное количество записей.
...
Рейтинг: 0 / 0
Незамысловатое меню.
    #34865910
Блин, ребята, что то я совсем в тупик зашел.
Напишу, до чего я дошел в своих мыканьях, а вы уж осудите..

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

Имеем несколько элеметнов, например:

рут
продукт
<название_продукта>продукт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.
Быть может приведенный мною способ избыточен или порусски крив? Тогда любой совет буду рассматривать как огромную помощь.
...
Рейтинг: 0 / 0
Незамысловатое меню.
    #34865914
maXmo, благодарю за ссылку. Оттуда я почерпнул много нового, но я не очень понял, как это может помочь в данном случае. Может быть и может, не отрицаю, но.. я не углядел.
...
Рейтинг: 0 / 0
Незамысловатое меню.
    #34868791
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там показано, как выбирать определённое поле, заданное в хмлнике, а не заранее.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Незамысловатое меню.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]