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)
-> + Limited choice of XSL elements... (2)
-> + Single Source Publishing? (3)
-> - Stylus Stodio License (1)
-> - Stylus Stodio License (1)
-> + relax ng (3)
-> + having problem converting csv ... (8)
-> + error when selecting items fro... (2)
-> + CSV File to XML (3)
-> + Software registration - How to... (4)
-> - Software registration - How to... (1)
-> + .Net Saxon not supported by th... (2)
-> + How do I extend the Evaluation... (2)
-> + dst file (4)
-> - Flat File Custom XML conversio... (4)
-> ->Flat File Custom XML conv...
-> ->Flat File Custom XML conv...
-> ->Flat File Custom XML conv...
-> + converting ascii file to xml f... (2)
-> + Evaluation Copy of Stylus Stud... (8)
-> + Batch process for soap (4)
-> + Strange error when running gen... (5)
-> + Merge Files (2)
-> + Convert cvs to XML (2)
-- Previous [481-500] [501-520] [521-540] 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
Stanley BowlingSubject: Flat File Custom XML conversion help
Author: Stanley Bowling
Date: 28 Sep 2010 12:59 PM
Hello,

I am reposting this in the correct section.

We have a flat file coming from our source system which represents child nodes as new lines in the same file. The child nodes can be identified by the first two characters of the line.
I need help to get the child nodes attached to the parent xml node. Can you help me figure out how this can be done. I have attached an example and the progress so far.

As in the example attached, the contact is displayed outside the customer,
<Customer>
<Type>A</Type>
<Number>1000</Number>
<FirstName>Casey</FirstName>
<LastName>Adams</LastName>
</Customer>
<Contact>
<ContactType>#C</ContactType>
<Number>585-433-1233</Number>
</Contact>
<Customer>...
I require the contact region to display as a child of customer like this.
<Customer>
<Type>A</Type>
<Number>1000</Number>
<FirstName>Casey</FirstName>
<LastName>Adams</LastName>
<Contact>
<ContactType>#C</ContactType>
<Number>585-433-1233</Number>
</Contact>
</Customer>
<Customer>...


Documentdemo(1).txt


DocumentDemo(1).conv


DocumentDemo(1).xml

Postnext
Ivan PedruzziSubject: Flat File Custom XML conversion help
Author: Ivan Pedruzzi
Date: 29 Sep 2010 12:35 AM
Hi Stanley,

You will need to post process the result, here one of possible solution using XQuery 1.1

Hope this helps
Ivan

<root>{
for tumbling window $items in /root/*
start $start when $start/self::Customer
end next $next when $next[self::Customer]
return
<customer>{
$start/*,
<Contacts>{
subsequence($items, 2)
}</Contacts>
}</customer>
}</root>


Postnext
Stanley BowlingSubject: Flat File Custom XML conversion help
Author: Stanley Bowling
Date: 29 Sep 2010 09:34 AM
Ivan,

Thanks for your quick reply. Your xquery does give the right results, however there is one more tweak I need. The xquery fills the contacts based on all items from subsequence($items, 2), however there may be a <note> or <comment> mixed in. Let me show this in an example.

<?xml version="1.0" encoding="utf-8"?>
<root>
<Customer>
<Type>A</Type>
<Number>1000</Number>
<FirstName>Casey</FirstName>
<LastName>Adams</LastName>
</Customer>
<Notes>
<Text>An example note</Text>
</Notes>
<Contact>
<ContactType>#C</ContactType>
<Number>585-433-1233</Number>
</Contact>
<Contact>
<ContactType>#C</ContactType>
<Number>111-111-1122</Number>
</Contact>
<Contact>
<ContactType>#C</ContactType>
<Number>222-333-4444</Number>
</Contact>
<Customer>
<Type>A</Type>
<Number>1001</Number>
<FirstName>William</FirstName>
<LastName>Test</LastName>
</Customer>
<Customer>
<Type>A</Type>
<Number>1002</Number>
<FirstName>Mary</FirstName>
<LastName>Troyer</LastName>
</Customer>
<Contact>
<ContactType>#C</ContactType>
<Number>777-777-7777</Number>
</Contact>
<Comments>
<Text>An example comment</Text>
</Comments>
</root>

The first customer has Notes located at position 2 and the third customer has Comments at position 3.

Can you help me figure out how to query/extract the items into the correct area.

Thanks again,
Stanley

Posttop
Ivan PedruzziSubject: Flat File Custom XML conversion help
Author: Ivan Pedruzzi
Date: 01 Oct 2010 01:17 AM

Assuming that you want comment and note inside customer

<root>{
for tumbling window $items in /root/*
start $start when $start/self::Customer
end next $next when $next[self::Customer]
return
<customer>{
$start/*,
subsequence($items, 2)[local-name()!='Contact'],
<Contacts>{
subsequence($items, 2)[local-name()='Contact']
}</Contacts>
}</customer>
}</root>

   
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.