Previous Entry | Next Entry

Programmer's Challenge Solved

  • Mar. 7th, 2007 at 7:18 PM
geek, smart, geeky girl
Remember this?


Remember the xml code? Dave ,[info]csixty4, suggested some for-each statements. I played around with it for a few hours and was finally able to grab the pattern and output I desired. I'll share the results for any google surfers!

Here it is sample.xml:

<?xml version= 1.0 encoding= UTF-8 ?>

<root>

<parent>

<tagA>parent 1 data A</tagA>

<tagB>parent 1 data B</tagB>



<child>

<tag1>child 1 data 1</tag1>

<tag2>child 1 data 2</tag2>

<tag3>child 1 data 3</tag3>

</child>

<child>

<tag1>child 2 data 1</tag1>

<tag2>child 2 data 2</tag2>

<tag3>child 2 data 3</tag3>

</child>

<child>

<tag1>child 3 data 1</tag1>

<tag2>child 3 data 2</tag2>

<tag3>child 3 data 3</tag3>

</child>

<child>

<tag1>child 4 data 1</tag1>

<tag2>child 4 data 2</tag2>

<tag3>child 4 data 3</tag3>

</child>

</parent>

<parent>

<tagA>parent 2 data A</tagA>

<tagB>parent 2 data B</tagB>



<child>

<tag1>child 1 data 1</tag1>

<tag2>child 1 data 2</tag2>

<tag3>child 1 data 3</tag3>

</child>

<child>

<tag1>child 2 data 1</tag1>

<tag2>child 2 data 2</tag2>

<tag3>child 2 data 3</tag3>

</child>

<child>

<tag1>child 3 data 1</tag1>

<tag2>child 3 data 2</tag2>

<tag3>child 3 data 3</tag3>

</child>

<child>

<tag1>child 4 data 1</tag1>

<tag2>child 4 data 2</tag2>

<tag3>child 4 data 3</tag3>

</child>

</parent>

</root>"

Here is the Transformation XSLT sample.xsl

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text"/>

<xsl:strip-space elements="*"/>

<xsl:template match="/">

<xsl:for-each select="root/parent">

<xsl:for-each select="child">

<xsl:value-of select="../tagA" />|<xsl:value-of select="../tagB" />|<xsl:value-of select="tag1" />|<xsl:value-of select="tag2" />|<xsl:value-of select="tag3" /><xsl:value-of select="tag9" /><xsl:text>

</xsl:text>

</xsl:for-each>

</xsl:for-each>

</xsl:template>

</xsl:stylesheet>

Here is the output file sample.txt

parent 1 data A|parent 1 data B|child 1 data 1|child 1 data 2|child 1 data 3

parent 1 data A|parent 1 data B|child 2 data 1|child 2 data 2|child 2 data 3

parent 1 data A|parent 1 data B|child 3 data 1|child 3 data 2|child 3 data 3

parent 1 data A|parent 1 data B|child 4 data 1|child 4 data 2|child 4 data 3

parent 2 data A|parent 2 data B|child 1 data 1|child 1 data 2|child 1 data 3

parent 2 data A|parent 2 data B|child 2 data 1|child 2 data 2|child 2 data 3

parent 2 data A|parent 2 data B|child 3 data 1|child 3 data 2|child 3 data 3

parent 2 data A|parent 2 data B|child 4 data 1|child 4 data 2|child 4 data 3