XML to CSV

S

Serena

Hi,

I'm just wondering if it is possible to get the output below by using
xslt. I can get solve the problem in which only one of the children of
the root node has a subtree (i.e only <b> has children) but not the
case where <c> and <d> have children as well.

Any advice will be greatly appreciated.

Thanks.

Input:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<a>a</a>
<b>
<bb>bb1</bb>
<bb>bb2</bb>
<bb>bb3</bb>
<bb>bb4</bb>
</b>
<c>
<cc>
<ccc>ccc1</ccc>
</cc>
<cc>
<ccc>ccc2</ccc>
</cc>
</c>
<d>
<dd>dd1</dd>
<dd>dd2</dd>
</d>
</root>

Output:

"a", "bb1", "ccc1", "dd1"
"a", "bb2", "ccc1", "dd1"
"a", "bb3", "ccc1", "dd1"
"a", "bb4", "ccc1", "dd1"
"a", "bb1", "ccc2", "dd1"
"a", "bb2", "ccc2", "dd1"
"a", "bb3", "ccc2", "dd1"
"a", "bb4", "ccc2", "dd1"
"a", "bb1", "ccc1", "dd2"
"a", "bb2", "ccc1", "dd2"
"a", "bb3", "ccc1", "dd2"
"a", "bb4", "ccc1", "dd2"
"a", "bb1", "ccc2", "dd2"
"a", "bb2", "ccc2", "dd2"
"a", "bb3", "ccc2", "dd2"
"a", "bb4", "ccc2", "dd2"
 
W

William Park

Serena said:
Hi,

I'm just wondering if it is possible to get the output below by using
xslt. I can get solve the problem in which only one of the children of
the root node has a subtree (i.e only <b> has children) but not the
case where <c> and <d> have children as well.

Any advice will be greatly appreciated.

Thanks.

Input:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<a>a</a>
<b>
<bb>bb1</bb>
<bb>bb2</bb>
<bb>bb3</bb>
<bb>bb4</bb>
</b>
<c>
<cc>
<ccc>ccc1</ccc>
</cc>
<cc>
<ccc>ccc2</ccc>
</cc>
</c>
<d>
<dd>dd1</dd>
<dd>dd2</dd>
</d>
</root>

Output:

"a", "bb1", "ccc1", "dd1"
"a", "bb2", "ccc1", "dd1"
"a", "bb3", "ccc1", "dd1"
"a", "bb4", "ccc1", "dd1"
"a", "bb1", "ccc2", "dd1"
"a", "bb2", "ccc2", "dd1"
"a", "bb3", "ccc2", "dd1"
"a", "bb4", "ccc2", "dd1"
"a", "bb1", "ccc1", "dd2"
"a", "bb2", "ccc1", "dd2"
"a", "bb3", "ccc1", "dd2"
"a", "bb4", "ccc1", "dd2"
"a", "bb1", "ccc2", "dd2"
"a", "bb2", "ccc2", "dd2"
"a", "bb3", "ccc2", "dd2"
"a", "bb4", "ccc2", "dd2"

You are doing every permutation of a, b, c, and d elements. In shell, I
would first store all the elements in arrays, like
a=( a )
b=( bb1 bb2 bb3 bb4 )
c=( ccc1 ccc2 )
d=( dd1 dd2 )
and then do "cross-product". Of course, the point of your homework is
how to extract those elements. :)

--
William Park <[email protected]>, Toronto, Canada
ThinFlash: Linux thin-client on USB key (flash) drive
http://home.eol.ca/~parkw/thinflash.html
BashDiff: Super Bash shell
http://freshmeat.net/projects/bashdiff/
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
474,001
Messages
2,570,254
Members
46,850
Latest member
VMRKlaus8

Latest Threads

Top