Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lotus Notes/Domino: Программирование
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.89/277: Рейтинг темы: голосов - 277, средняя оценка - 4.89
otyk86
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
#1

Dxl

11.05.2010, 12:27. Просмотров 49882. Ответов 37
Метки нет (Все метки)

Предыстория:
Я так часто натыкался на этом форуме на выражения типа «ДХЛ тебе в помощь…» и т.п., что не выдержал и решил таки ознакомиться с данной технологией. ;)
Так вот:
Господа, не были бы вы столь любезны «ткнуть меня носом» в полезные ресурсы по DXL?
Интересует всё, начиная с теории (желательно на русском) и заканчивая примерами практической реализации (желательно с описанием)...
Поделитесь кто что видел, поделитесь кто что знает.
Раздел хелпа «XML for Domino» не предлагать! ;)
Заранее благодарен!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2010, 12:27
Ответы с готовыми решениями:

Dxl R8 To R6
Делаю экспорт документа в DXL из восьмёрки. При импорте там же в восьмерке всё...

Переобразование Dxl
в Rich тексте лежит DXl <?xml version=1.0 encoding=utf-8 ?> <database...

Dxl -> Xml
Существуют ли какие-либо быстрые способы преобразования DXL в стандарный XML...

Символы В Dxl
Например, при экспорте символ {} меняется на {'}. Подскажите, где...

Dxl Importer
Всем привет! Вопрос. Вот кусок кода <!--shcode--><pre><code class=vb>Call...

37
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
11.05.2010, 12:45 #2
странный запрос...
звучит как - "научите меня водить ВАЗ 21111" ;)
нужно не ДХЛ учить, а ХМЛ - как технологию (т.е. со ср-вами работы и подходами к обработке)
0
otyk86
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
11.05.2010, 12:56 #3
To lmike
Да в том-то и дело, что вроде как «где газ, тормоз, сцепление, коробка передач находятся, уже изучил, уже даже знаю, как завестись, тронуться и ехать, но вот каково оно ехать именно на ВАЗе 21111, как там у него отрегулировано сцепление, как именно расположены передачи и т.п. хотелось бы узнать и попробовать». ;)
P.S. Т.е. интересует именно DXL.
0
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
11.05.2010, 13:20 #4
дык дело в том, что изучение сводится к просмотру ДТД, и готовых выгрузок
как и на авто - только поездив, сам, на конкретной модели преобретаешь специфичный опыт...
0
otyk86
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
11.05.2010, 13:33 #5
БИНГО!!! Вот меня и интересуют среди всего прочего "примеры практической реализации". Т.е. хотелось бы посмотреть конкретные примеры, начиная постановки "хочу/надо сделать то-то и то-то" и заканчивая "а вот я/он/они сделали это, использовав DXL вот так:" и код этого "вот так".
P.S. Ща доизучаю хелп + нарыл че-то на OpenNTF -- лед тронулся, господа присяжные заседатели...
0
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
11.05.2010, 13:48 #6
делал тупо подстановку файла в РТ и иконки...
делал выгрузку LAX, VTD для файлов
игрался с конвертацией РТ в UJAC (забросил - UJAC не развивается и не имеет границ для параграфа)
0
mvyush
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
11.05.2010, 13:52 #7
alik86
На затравку — определение наличия картинки в рт-поле. РТ-нафигатор их в упор не видит.
0
turumboy
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
11.05.2010, 13:54 #8
Цитата Сообщение от alik86
P.S. Т.е. интересует именно DXL.
имхо, dxl применяеца в двух случаях:
1. нужно достать данные из документа( вида , базы , короче - лотусового объекта ), которые невозможно( сложно ) получить через стандартный апи( @, LS ). Пример задачи - получение скриптом файла из file resourses.
2. и наоборот - хочеца впихнуть данные в объект, но нету штатного апи для впихивания. Пример задачи - убрать в бэкенде дурацкую зеленую рамку для ссылок в rt поле
В обоих случаях приходица приходица действовать эвристическим путем. ( Можно конечна выкурить dtd и найти решение эмпирически - но это не наш путь )
1. экспортируем документ в dxl, открываем его текстовым редактором и вдумчиво курим увиденное. Найти нужные данные - обычно не проблема. Поняв, где оно(искомые данные) живет - пишем выдирающий его скрипт. Путей выдираения - множество: strleft-rigth, xslt, разбор dom , реализация sax. Для случая file resource - получаем ресурс через notecollection, выгружаем в dxl, выдираем содержимое <filedata> , декодируем base64, финиш.
2. впихивание данных чуть сложнее. нужно фактически иметь два документа: исходный и целевой. Исходный обычно есть, а целевой часто можно собрать ручками в ui. Далее, играем в "найди 10 отличий" и садимся писать скрипт, преобразующий исходный документ в целевой...
При работе с элементами дизайна - все то же самое, плюс надо не забывать их подписывать после импорта.
В любом случае - чтоб набить руку - необходимо повыгружать различные объекты и посмотреть "что у ней внутре"
Примеры:
проверка наличия ровно одной картинки в rt-поле.
http://www-10.lotus.com/ldd/bpmpblog.nsf/d...alidation-image
импорт элементов дизайна с подписыванием
http://www-10.lotus.com/ldd/bpmpblog.nsf/d...nt&comments
0
turumboy
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
11.05.2010, 14:09 #9
В догонку: если на форме расположен обычный текст вперемешку с pass-thru html - дизайнер часто вставляет ненужные параграфы перед html содержимым.
переодически натыкаюсь на эти грабли, особенно часто вылезают при отрисовке на форме html-таблиц - перед таблицей добавляется пустой параграф и нет возможности его убрать. Решение - убрать лишний <par>, выгрузив форму в dxl.
0
hosm
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
11.05.2010, 14:21 #10
Как-то наткнулась еще на это сообщение о применении DXL
может, будет полезно ;)
0
ToxoRot
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
11.05.2010, 18:38 #11
моё практическое применение DXL
Анализатор - http://lotus.net.ua/homesite.nsf/0/DE279CD...22575FA00252AFE
0
otyk86
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
14.05.2010, 15:50 #12
Итак, если никто не против, продолжим, господа…
Захотелось мне реализовать такой примерчик:
Форма с двумя rt полями RTField1 и RTField2 и кнопкой. В поле RTField1 вставлена картинка (допустим 100х100рх). По нажатию на кнопку надо «впулить» эту же картинку, но уже уменьшенную (допустим до 50х50рх) в поле RTField2.

Как я понимаю, теоретически решение выглядит как-то так:
Экспортирую RTField1, подменяю picture width="100px" height="100px" на picture width="50px" height="50px" (может еще и item name="RTField1" на "RTField2" – в общем хз ) и результат импортирую в RTField2.
(сразу же смутило то, что в NotesDXLImporter в Possible output objects значится лишь NotesDatabase)
Но как?! Как это реализовать и реализуемо ли это вообще через DXL?
Если да, то подкиньте пожалуйста приблизительный код.

P.S. ToxaRat, Ваша ссылка нерабочая.
0
hosm
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
14.05.2010, 21:18 #13
Анализатор ToxaRat был выложен и на нашем форуме - Lotus Analyzer V1.4, но код там скрыт, так что вряд ли поможет разобраться с DXL.
Видать, с тем сайтом сегодня траблы...
0
Ktydo
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
15.05.2010, 13:10 #14
ну и в тему про XML тут -
0
turumboy
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
15.05.2010, 14:37 #15
Цитата Сообщение от alik86
Как я понимаю, теоретически решение выглядит как-то так:
Экспортирую RTField1, подменяю picture width="100px" height="100px" на picture width="50px" height="50px" (может еще и item name="RTField1" на "RTField2" – в общем хз ) и результат импортирую в RTField2.
(сразу же смутило то, что в NotesDXLImporter в Possible output objects значится лишь NotesDatabase)
Но как?! Как это реализовать и реализуемо ли это вообще через DXL?
Кнопка на форме наверно не очень правильно. Не надо наступать на все грабли одновременно. Опытный граблепроходчик знает, что на грабли необходимо наступать последовательно. И даже умное слово для этого процесса выдумали: декомпозиция.
Пусть будет DXL отдельно, а UI отдельно. Сначала разберитесь с экспортом-импортом в бэкенде, потом подключайте UI. Так что для начала кнопку рекомендую сделать во вьюхе( или вообще - отдельного агента )
По задаче: все правильно рассуждаете.
1. выгружаем документ в xml.
2. преобразуем файл( поток, если не хочеца выгружать на диск) к нужному нам виду
3. импортируем полученный файл(stream) обратно в NotesDatabase с параметром
notesDXLImporter.DocumentImportOption = DXLIMPORTOPTION_REPLACE_ELSE_IGNORE (5)
0
ToxoRot
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
16.05.2010, 13:22 #16
alik86
выгружать док лучше в stream а потом вам и реплейса хватит
0
otyk86
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
16.05.2010, 17:46 #17
C импортом/экспортом вроде разобрался.


Цитата Сообщение от turumbay
2. преобразуем файл( поток, если не хочеца выгружать на диск) к нужному нам виду
А эти преобразования вообще делаются в огороде NotesDOMParser/NotesSAXParser али нет?

Экспортнул я документ (в нем есть поле Subject = "тема1") в D:\filename.xml:

Код
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE document (View Source for full doctype...)>
<document xmlns=...>
..............
<item name="Subject" sign="false" seal="false" sealed="false" authors="false" names="false" readers="false" placeholder="false">
<text>тема1</text>
</item>
................
</document>
Теперь хочу подменить это поле на "тема2".
Мои действия?
0
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
16.05.2010, 17:55 #18
читайте pipelines в хэлпе
кусок:

Код
Sub Initialize
Dim session As NotesSession
Dim db As NotesDatabase
Dim nc As NotesNoteCollection
Dim exporter As NotesDXLExporter
Dim importer As NotesDXLImporter


Set session = New NotesSession
Set db = session.CurrentDatabase
Set nc = db.CreateNoteCollection(False)
nc.SelectDocuments = True
Call nc.BuildCollection

REM Set up importer to receive DXL piped from exporter
REM and to re-import the documents back into the
REM current database as copies.
Set exporter = session.CreateDXLExporter(nc)
наша вставка, styleSheet получаем где-то ещё;)
Set notesXSLTransformer = notesSession.CreateXSLTransformer(exporter , styleSheet)
вставка - завершена
Set importer = session.CreateDXLImporter(notesXSLTransformer, db)
exporter.Process
End Sub
ежели в цепочку вставить XSLT - получим желаемое
0
otyk86
0 / 0 / 0
Регистрация: 17.12.2008
Сообщений: 420
16.05.2010, 18:09 #19
Т.е. преобразования делаются в огороде NotesXSLTransformer и NotesDOMParser/NotesSAXParser тут вообще нипричем?
0
tmyky
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
16.05.2010, 18:21 #20
можно и ими - тока зачем (для вашего случая)


Set notesDXLImporter = notesSession.CreateDXLImporter( [ input ] , [ output ] )
Parameters
input
Optional. A string or an object of the following type:
NotesDOMParser (pipelines to a NotesDOMParser object)
NotesDXLExporter (pipelines the output from the NotesDXLExporter object)
NotesRichTextItem
NotesSAXParser (pipelines to a NotesSAXParser object)
NotesStream
NotesXSLTransformer (pipelines from the NotesXSLTransformer object)
See SetInput in the NotesXMLProcessor class for additional information.
0
16.05.2010, 18:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2010, 18:21

Dxl Export формы
Всем привет! Помогите пожалуйста решить следующую проблему: Задача состоит...

Вопрос По Выгрузке Dxl
Добрый день. Мучаюсь с выгрузкой dxl из lotus`a методом NotesDXLExporter....

Dxl из БД большого размера.
У меня есть база 5.8 гб, на ее основе создаю dxl файл,при его создании...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru