DXLExport, XSLTransform для Web-service

  • Автор темы Автор темы Eugen
  • Дата начала Дата начала
И вот после всего этого кто-то ещё будет говорить, что DXLExporter - это правильный подход что бы сформировать простенький XML заранее известной структуры?
Это не только по DXLExporter'у такое. В Лотусе на каждый чих свои траблы и свои методы обхода.
 
Так расссуждать, мы договоримся до того, что формы следует "рисовать" в XML и загружать их в базу через DXL, а делать их в LDD - дурной тон.
именно до этого и договорились - см. xPages.
И да - дизайнер форм и код в них - тихий ужас. Эту часть, индусы, специально создавали для быдлокода, я так понимаю :)
В вашей организации есть специальные XML разработчики, которые будут делать это?
незная хмл создавать его вручную? ;) Мне базовых знаний вполне хватает
А мне кажтся, в данном случае, для создания XSL требуются весьма нетривиальные знания не просто XSL, а специального XSL-FO. И опять же см. вопрос выше - "В вашей организации есть специальные XML разработчики..."
мне оно нетривиальным не кажется...
ну если только программисту незнакомы слова рекурсия, xpath, и невнимательное отношение к тегам :)

Добавлено:
Это смотря какие задачи перед собой ставить. Одно дело - чисто спортивный интерес, другое - сделать вовремя и чтоб работало.
а потом переделывать код - потому что надо внести изменения, расширить возможности... и так разпицот
 
И да - дизайнер форм и код в них - тихий ужас. Эту часть, индусы, специально создавали для быдлокода, я так понимаю :)
Ну кое что в дизайнере форм всё-таки лучше - при клике по элементу, слева сразу видишь его код, а не прыгаешь как дурень по вкладкам и не жмакая дополнительно кнопки.
 
Ну кое что в дизайнере форм всё-таки лучше - при клике по элементу, слева сразу видишь его код, а не прыгаешь как мир по вкладкам и не жмакая дополнительно кнопки.
там вовсе не д.б. кода - вызов калбэков на события, сами ф-ции в либах
пример - кастомные элементы в xPages, можно не "прыгать" а просто поправить хмл, а из элементов - собираем форму
разделение труда опятьже
 
незная хмл создавать его вручную? Мне базовых знаний вполне хватает
Вот я к тому и клоню - всё равно все самому править придётся если что. Так какая разница в XML или LS?
мне оно нетривиальным не кажется...
Завидую...
А вы его чем пишите? Есть какой-то вменяемый бесплатный редактор? Или всё только за деньги?
 
Есть еще попутный вопрос. Нужно изменить значение нода и сохраненный dxl записать в файл.
Чем бы это сделать?
NotesDOMParser в принципе позволяет изменить значение, но как потом это все записать в файл?
 
NotesDOMParser в принципе позволяет изменить значение, но как потом это все записать в файл?
например постпроцесс

Добавлено:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">кусок кода, либу (вродить где-то выкладывал)</div></div><div class="sp-body"><div class="sp-content">
Код:
		Call transformer.SetStylesheet(xslt)
Call transformer.SetOutput(XML_out)
Set out_obj=transformer'для будущих вариантов обработки

If Not DOM_off Then
'включаем в цепочку DOM parser - для обработки в PostParse
Dim docDOM As NotesDOMParser
Set docDOM=ses.CreateDOMParser
Call docDOM.SetOutput(out_obj)
On Event PostDOMParse From docDOM Call postParse
Set out_obj=docDOM'для будущих вариантов обработки
End If
.......

Private Sub postParse(xml As NotesDOMParser)
......
Call xml.Serialize
Quit:
Exit Sub
ErrH:
RaiseError
Resume Quit
End Sub
в постпарсе Call xml.Serialize !
либо VTD XML (java)
 
Коллеги, а мы сейчас всё ещё обсуждаем тот случай когда надо в web-service в качестве параметра передать набор данных в XML или это уже чисто теоретические изыскания пошли?
Как там у автора темы, получилось с web-сервисом?
 
Коллеги, а мы сейчас всё ещё обсуждаем тот случай когда надо в web-service в качестве параметра передать набор данных в XML или это уже чисто теоритичесие изыскания пошли? Как там у автора темы, получилось с web-сервисом?

2 трансформера запустить удалось, передавать в web-service xml тоже вроде получается(правда это пока никак не взаимосвязано). Сейчас разгребаюсь с XSLT.
 
Не помню, спрашивал уже или нет:
dxl по-умолчанию выгружается в соответствии с dtd. Возможно ли его выгрузить в соответствии с xsd?
 
Сейчас столкнулся с такой проблемой: в oxigen трансформация проходит нормально, а лотус ругается на синтаксис. Как такое может быть? Есть ли какое нибудь описание лотусового xml парсера?
 
Сейчас столкнулся с такой проблемой: в oxigen трансформация проходит нормально, а лотус ругается на синтаксис. Как такое может быть? Есть ли какое нибудь описание лотусового xml парсера?
Кодировки, специфичные расширения, недоступность путей к файлам, корявые нэймспейсы, переполнение встроенного в парсер календаря майя...

P.S. Сообщение об ошибке могло бы помочь неравнодушным участникам форума разобраться в вашей проблеме не играя в угадайку...

P.P.S. В рамках игры в угадайку я бы "поставил" на кодировки - убедитесь что все потоки в одной кодировке. В случае использования пайпов - промежуточные результаты тоже согласовываться по кодировке. В том числе стоит обратить внимание на параметр <xsl:output encoding="...">
 
lmike
Спасибо. Разобрался. Напутал порядок вызова методов :)


Сегодня столкнулся вот с какой проблемой :)
Есть документ. Он рендерится в RT-поле временного документа.
Далее временный документ экспортируется в xml.
Экспорт проходит нормально, но результат ни в одни ворота не лезет :(
В XML получаю служебную инфу документа и
<!--shcode--><pre><code class='xml'><item name='Body'>
<rawitemdata type='1'>
ТУТ ВСЯКИЙ БРЕД ПОХОЖИЙ НА BASE64
</rawitemdata></item>[/CODE]
Никаких данных из других полей нет вообще :(
Что может приводить к такому результату?
Код:
notesDXLExporter.RichTextOption
Не помогает :(
 
Экспорт проходит нормально, но результат ни в одни ворота не лезет :(
Для корректного результата:
1. Док д.б. сохранён, к сожалению...
2. Док должен быть взять из базы заново, а не из UI; т.к. в этих двух случаях для RT может генериться разный xml.
 
Для корректного результата:
1. Док д.б. сохранён, к сожалению...
2. Док должен быть взять из базы заново, а не из UI; т.к. в этих двух случаях для RT может генериться разный xml.
Да в том-то и дело. Документ сохранен и все работает без UI.
Пока еще не нашел зависимости, но некоторые документы экспортируются нормально.
Возможно какие-то параметры формы могут влиять? сегодня буду "играться"
 
В продолжение моего поста
Фуф... наигрался!!!!!!!!!!!!!!!!
Нашел два фичебага, которые приводят к такому виду XML :)
1. документ не должен содержать поля типа Rich Text Lite
2. свойство FieldHint у полей должно быть пустым.


Возможно есть еще какие-то особенности, но я пока больше ничего не нашел
 
Вот получил xml с помошью CreateDXLImporter
Кто-то может напи сать простой примерчик xsl файла , чтобы вытянуть 1 поле с помошью CreateXSLTransformer с такого лотусового XML:


<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE document SYSTEM 'xmlschemas/domino_7_0_3.dtd'>
<document xmlns='http://www.lotus.com/dxl' version='7.0' maintenanceversion='3.0'
replicaid='C2257CA222222225DA3' form='fmejved'>
<noteinfo noteid='9b2' unid='A3CB3E71C222222222B5003ADA43' sequence='13'>
<item name='fxml'><text>01231233</text></item>
<item name='ЗАГОЛОВОК'><text>О сокращении сотрудников )))</text></item>
.....
</document>

Мой вариант не правильный:

<?xml version="1.0"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ldn="http://www.lotus.com/dxl" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">
<xsl:template match="ldn:item">
<xsl:variable name="fname" select="ldn:ЗАГОЛОВОК/ldn:text/@name"/>
<xsl:variable name="fname" select="ldn:fxml/ldn:text/@name"/>
</xsl:stylesheet>
 
Вот получил xml с помошью CreateDXLImporter
Кто-то может напи сать простой примерчик xsl файла , чтобы вытянуть 1 поле с помошью CreateXSLTransformer с такого лотусового XML:


<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE document SYSTEM 'xmlschemas/domino_7_0_3.dtd'>
<document xmlns='http://www.lotus.com/dxl' version='7.0' maintenanceversion='3.0'
replicaid='C2257CA222222225DA3' form='fmejved'>
<noteinfo noteid='9b2' unid='A3CB3E71C222222222B5003ADA43' sequence='13'>
<item name='fxml'><text>01231233</text></item>
<item name='ЗАГОЛОВОК'><text>О сокращении сотрудников )))</text></item>
.....
</document>
<!--shcode--><pre><code class='xml'><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/document">
<xsl:value-of select="item[@name='ЗАГОЛОВОК']/text"/>
</xsl:template>
</xsl:stylesheet>[/CODE]
 
seoman2 прогресс...
значит по-порядку - я пример дал для получения XML-FO - т.е. для FOP
turumbay набросал вариант для просто файла ХМЛ, по-правильному - там нет нэймспэса от нотусни (а должен быть)

в моем шаблоне это было...
для ноды "Заголовок" где-то так буить:<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"xsl"</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='xml'><?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="ldn"
version="1.0"
xmlns:ldn="http://www.lotus.com/dxl">
<xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes"/>
<!-- ================= -->
<!-- omit other nodes -->
<!-- ================= -->
<xsl:template match="ldn:document/*[name()!='item']"/>

<!-- ========================= -->
<!-- root element: document -->
<!-- ========================= -->
<xsl:template match="ldn:document">
<!-- создание рутового элемента - от контекста (я не знаю стр-ры валидного выходного дока) -->
<NewXMLNode>
<xsl:apply-templates select="ldn:item"/>
</NewXMLNode>
</xsl:template>
<!-- ========================= -->
<!-- child element: item -->
<!-- ========================= -->
<xsl:template match="ldn:item">
<xsl:if test="@name='ЗАГОЛОВОК'">
<!--<xsl:element name="{@name}"><xsl:value-of select="." /></xsl:element>-->
<xsl:apply-templates select="ldn:text"/>
<!--<mobilephone><xsl:value-of select="." /></mobilephone>-->
</xsl:if>
</xsl:template>
<!--
<xsl:template match="ldn:item[@name='mobilephone']">
<mobilephone><xsl:value-of select="." /></mobilephone>
</xsl:template>
<xsl:template match="ldn:item[@name!='mobilephone']"/>
-->
</xsl:stylesheet>[/CODE]можно и проще - по типу как у turumbay взять просто ноду по XPath, но на мой взгляд - наращивать будет сложнее
закоменчены варианты различных подстановок (в т.ч. имени из оригинального ХМЛ)
в сэмпле втупую создана рутовая нода NewXMLNode, результат:<!--shcode--><pre><code class='xml'><?xml version="1.0" encoding="utf-8"?>
<NewXMLNode>О сокращении сотрудников )))</NewXMLNode>[/CODE]
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!