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)
-> + Way to bundle up a project? (3)
-> + Type could not be found (7)
-> + Not able to import the copy bo... (2)
-> + Stylus Studio 10 does not vali... (3)
-> + How to merge table cells using... (2)
-> + Collapsible Groups (2)
-> + Apply-template problem (2)
-> + External Cascading Style Sheet... (2)
-> + Need help with XML mapping - P... (2)
-> + Convert image to base64 in xsl... (2)
-> + Automation (2)
-> - Changing Default Property valu... (1)
-> + Help in reading cdata using xs... (4)
-> + Ok, I can programatically conv... (2)
-> + How do I prevent the previewer... (2)
-> + Can I programatically convert ... (2)
-> + XML To Flat File - Reverse Eng... (3)
-> + Check for valid attribute valu... (3)
-> + Java.lang.OutOfMemory - when I... (3)
-> + How to convert text in EBCDIC ... (8)
-- Previous [721-740] [741-760] [761-780] Next
+ Website Feedback (249)
+ XSLT Help and Discussion (7625)
+ XQuery Help and Discussion (2017)
+ 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.