![]() |
|
Модераторы: diadiavova |
![]()
|
|
| batigoal |
|
||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Такая задача. Есть XML-документ такого плана:
Необходимо сделать преобразование, которое сконкатенирует значение узлов node, НО! только до тех пор, пока не будет превышена максимальная длина строки. Т.е. если мы положим максимальную длину строки, например, 14 символов, то на выходе должно быть вот такое:
без третьего элемента. Если бы xsl:variable был "настоящей" переменной, то все было бы ясно, но как обойтись без этого - не понимаю. Это сообщение отредактировал(а) batigoal - 9.1.2007, 11:47 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||
|
|||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 7 Всего: 110 |
можно попробовать так:
Добавлено @ 12:10 т.е. выводим первый элемент и остальные, если нужно для остальных применяем то же самое правило... Добавлено @ 12:10 (правда, насчёт функции length не уверен, а в спецификацию лезть лень Добавлено @ 12:11 P.S. не тестировал -------------------- qqq |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
maxim1000, идея вроде понятна, спасибо.
Получается очень жестко, блин. Я подозреваю, это будет медленно работать а нам производительность важна. Попробую перенести это преобразование в Java-часть. Добавлено @ 12:27
string-length() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 7 Всего: 110 |
а почему? -------------------- qqq |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Реальный документ более сложен, чем я привел тут, и для вычисления каждого текстового элемента тоже приходится выполнять некоторые операции. При использовании предложенного подхода, еще будет применяться рекурсивное применение шаблона. Я не экспериментировал, но, я полагаю, при обработке файла большого размера, с большим количеством рекурсивных вызовов, скорость упадет. Добавлено @ 13:45 В любом случае, проэкспериментировать можно. Это сообщение отредактировал(а) batigoal - 9.1.2007, 13:45 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 7 Всего: 110 |
сама по себе рекурсия, особенно хвостовая, вполне может быть и непрожорливой к ресурсам
хот, конечно, всё от реализации зависит... -------------------- qqq |
|||
|
||||
| batigoal |
|
||||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Выкладываю конечный вариант (немного избыточный, из-за моих экспериментов).
Исходный XML содержит имена и фамилии актеров. Необходимо "склеить" фктеров в одну строку с ограниченной длиной. Исходный XML:
Преобразование:
Результат:
Во втором случае последний актер опущен, т.к. результирующая строка была бы слишком велика. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||||
|
|||||||
![]()
|
| Правила форума "XML/XSLT" | |
|
|
Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась. Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение. Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел Желаем удачи в Вашем деле! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | XML, XSL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |