|
|
|
Помогите решить проблему вывода данных
|
|||
|---|---|---|---|
|
#18+
Проблема заключается в следующем: необходимо сформировать WordML документ, в котором будет выведена таблица. Исходные данные: xml-файл с данными (выборка из БД). К нему применяется xslt-шаблон. XML сфоримирован следующим образом, что структура дерева формируются из COM-объектов, которые связаны по какому-либо из праметров (например ID)... Для формирования таблицы нужно пробежаться по двум объектам, условно назовем их RootObject и ChildObject(элементы). (RootObject/ChildObject). В RootObject "данные о предпринимателях" - имеется аттрибут ID, а в ChildObject "лицензии предпринимателей (может быть несколько)" - аттрибут OfferID. Т.е. в ChildObject имеется также ID, название лицензии и OfferId предпренимателя (т .е. поле ID в RootObject). Вот таблица должна быть сформирована след. образом: привелу пример строки таблицы: 1-ый столбец: № п/п 2-ый столбец: Наименование лицензии 3-ый столбец: Все предпрениматели имеющие данную лицензию (лучше коенчно организовать в виде ненумерованного списка) Проблема заключается в том, что ChildObject присутствует избыточность, названия лицензии одинаковые, а разные ссылки (OfferId) на предпринимателей. Вот нужно как то избавиться от этой избыточности, чтобы не выводить одинакове названия лицензии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 13:40 |
|
||
|
Помогите решить проблему вывода данных
|
|||
|---|---|---|---|
|
#18+
Нууу, когда будешь выводить данные напиши проверку, на совпадение уже введеных значений с текущим, в зависимости от результата либо вводи либо преходи к следующему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 13:51 |
|
||
|
Помогите решить проблему вывода данных
|
|||
|---|---|---|---|
|
#18+
А что значит "уже введеных значений " ? надо ведь как то организовать тогда хранение. Всего существует 10 видов этих лицензий, конечно можно записать их все в переменные, но это будет тупо сделано! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 14:09 |
|
||
|
Помогите решить проблему вывода данных
|
|||
|---|---|---|---|
|
#18+
Тогда я че то вопроса не понял, сначала ты говоришь что тебе надо избавиться от избыточности и повторений, теперь ты говоришь что записей (лицензий) всего 10 штук. А про это "что значит "уже введеных значений " ?" -имелось ввиду то что к примеру у тебя есть xml документ где есть все (даже те какие не надо) записи, ты хочешь от них избавиться, вот и парсишь свой xml файл xsl'ским. А внутри xsl написано: К примеру - поэтому по русски :) Если Текущая запись равна предыдущей то ниче не делаем, иначе копируем ее в выходной документ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 14:37 |
|
||
|
Помогите решить проблему вывода данных
|
|||
|---|---|---|---|
|
#18+
Ну да, всего 10 штук.. в смысле разновидностей лизенции. Может быть к примеру 20 предпринимателей и каждый иметь все 10 лизенции. И в xml тогда выгружается 200 записей. (это в ChildObject). Т.е. ты предлагаешь сначала отсортировать данные , чтобы одинаковые лицензии располагались рядом, и потом сравнивать две соседние записи..? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2007, 11:23 |
|
||
|
Помогите решить проблему вывода данных
|
|||
|---|---|---|---|
|
#18+
Ну.... почти. К примеру мы имеем xml документ, где допустим текст в <number> - это номера лицензий <root> <number>AS</number> <number>AC</number> <number>AB</number> <number>AS</number> <number>AK</number> <number>At</number> </root> Примерно вот так выглядит сравнение значений в xsl <xsl:template match="//number"> <xsl:choose> <xsl:when test="count(//number[text()=current()/text()])=1"> <xsl:copy-of select="current()"/> </xsl:when> <xsl:otherwise> Сдесь надо подумать как вывести те что повторилиь, при этом токо один раз</xsl:otherwise> </xsl:choose> В результате этого примера ты получишь только уникальные номера лицензий , еще надо скопировать повторяющиеся только один раз, как .. пока не придумал (если често .. ломает :) ) Результат: <number>AC</number> <number>AB</number> <number>AK</number> <number>At</number> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2007, 12:44 |
|
||
|
Помогите решить проблему вывода данных
|
|||
|---|---|---|---|
|
#18+
Ага... пасибо..! мысль понял.. помогло! <xsl:when test="count(//number[text()=current()/text()])=1"> Только сравнивал не текстовое значение, а атрибуты элемента. И пришлось добавить условие для вывода первой записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2007, 17:28 |
|
||
|
|

start [/forum/topic.php?fid=14&msg=34363560&tid=1334426]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 490ms |

| 0 / 0 |
