XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
- Stylus Studio Technical Forum (14621)
-> - Stylus Studio - Registrar en o... (1)
-> + Stylus Studio - Registrar en o... (2)
-> + Can a pipeline send a file by ... (2)
-> + After Updateing WIN10 to WIN11... (12)
-> + Where do I add the custom java... (3)
-> + Where is the Diagram tab? (5)
-> + Applying XSLT to Word DOCX/XML (2)
-> - CSV conversion via ConvertToXM... (1)
-> + Text symbols in SS not same as... (4)
-> + Exposing xquery as webservice ... (6)
-> + Syntax Identifier (2)
-> + Saving a Converted XML as an X... (5)
-> + Output document cannot be pars... (4)
-> - Archiving output from conversi... (1)
-> + EDIFACT guideline from Stylus ... (3)
-> + CSV file putting all the data ... (5)
-> + Can't install Home version 64b... (5)
-> + presale - Can I covers this sc... (5)
-> + Problem with UNB (5)
-> + Splitting EDIFACT files pipeli... (4)
-- [1-20] [21-40] [41-60] Next
+ Website Feedback (249)
+ XSLT Help and Discussion (7625)
+ XQuery Help and Discussion (2016)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
Peter RobertSubject: Change format of XML output for custom flat file conversion?
Author: Peter Robert
Date: 06 Jul 2009 07:23 AM
Hi everyone,
This is my first post here, so please don't hit me if I chose the wrong thread..

I'm currently working on a complex flat file conversion to XML (combined with a following xQuery), but I first have one questions regarding the output format of the conversion.

How can I avoid the output structure of
<region>
<row_NAME1>
<field>N1</field>
<field_NAME1>Peter</field_NAME1>
</row_NAME1>
</region>

for fixed width-structure, but instead have the values

<region>
<NAME1>Peter</NAME1> and omitting the complex structure of row, field, etc.

To explain in examples:

LHDAB 1011609010 D

is ok to output
<LETTERHEAD>
<field>LH</field>
<DOCTYPE>DAB</DOCTYPE>
<CUSTNO>101160901</CUSTNO>
<SUFFIX>0</SUFFIX>
<COUNTRY>D</COUNTRY>
</LETTERHEAD>

although I don't need the <field>LH</field>.

But then, the file continues with

N1Herr
N2Werner Lückner
A1Wiesestr. 68
A232052 Herford
A3
A4
LD#SALSTSehr geehrter Herr Lückner
LD#TITSTHerr
LD#PSTST
LD#PFXST
LD#FNMSTWerner
LD#NM1STLückner

which ideally should result in something like

<ADDRESSDETAILS>
<N1>Herr</N1>
<N2>Werner Lückert</N2>
<A1>...</A1>
...
</ADDRESSDETAILS>

and followed by
<LETTERDETAILS>
<#SALST>Sehr geehrter Herr Lückner</#SALST>
<#TITST>Herr</#TITST>
<#PSTST/>
<#PFXST/>
<#FNMST>Werner</#FNMST>
<#NM1ST>Lückner</#NM1ST>
....
</LETTERDETAILS

The current output of the Conversion is too poor to really work with it, IMHO.

Can someone please give me a hint how to achieve this in a conversion, and if this is not possible, how to do it with a xquery.

With best regards,
Peter


Unknownconversion_plus_source_sample.zip
CONV file plus source data ZIP

Postnext
Peter RobertSubject: Change format of XML output for custom flat file conversion?
Author: Peter Robert
Date: 06 Jul 2009 09:06 AM
I forgot to show the xquery code I currently use:

declare function local:getOthers($item) {
let $nextItem := $item/following-sibling::*[local-name()="Letterhead"][1]
for $related in $item/following-sibling::*[local-name()!="Letterhead"]
where if($nextItem) then $related << $nextItem else true()
return $related
};
declare option ddtek:serialize "omit-xml-declaration=no";


<LETTERS>
{
for $Letterheads in /root/Letterhead
return
<LETTER>
{
$Letterheads
}
{
for $Others in local:getOthers($Letterheads)
return
$Others
}
</LETTER>
}
</LETTERS>

This helps me to separate the elements letter by letter, as the end of a letter is only marked by the beginning of a new Letterhead.
But apart from this, the result is odd.

Thanks
Peter

Posttop
(Deleted User) Subject: Change format of XML output for custom flat file conversion?
Author: (Deleted User)
Date: 08 Jul 2009 06:15 AM
Hi Peter,
a way to shape the XML in the requested format is this:

<LETTERS>
{
for $Letterheads in /root/Letterhead
return
<LETTER>
<LETTERHEAD>{$Letterheads/Typ,$Letterheads/Kundennummer,$Letterheads/Suffix,$Letterheads/Country}</LETTERHEAD>
{
let $Others := local:getOthers($Letterheads)
return
(
<ADDRESSDETAILS>{$Others/Anrede,$Others/Name,$Others/Strasse,$Others/Ort}</ADDRESSDETAILS>,
<LETTERDETAILS>{$Others/SALUTATION_FORMULA,$Others/TITLE,$Others/PSTST,$Others/FIRSTNAME,$Others/NAME1}</LETTERDETAILS>
)
}
</LETTER>
}
</LETTERS>

Hope this helps,
Alberto

   
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.