CSV->xml, how to eliminate columns

20 views
Skip to first unread message

Ali

unread,
Feb 4, 2014, 12:37:15 AM2/4/14
to xs...@googlegroups.com

I have this xml. It is actually a tab delimited file converted to xml. < R i="0" > contains the column heading and C=1 to C=8 are columns.

I need to eliminate for example "Size 1" and "Height 1" and create an xml output. I only want to eliminate Size 1 and Height 1 from each row and keep the rest.

Can you please help?


<Message>
<Header/>
<Data>
    <Data>
        <R i="0">
            <C i="0">Sample File</C>
            <C i="1">Sample Name</C>
            <C i="2">Dye</C>
            <C i="3">Size 1</C>
            <C i="4">Size 2</C>
            <C i="5">Height 1</C>
            <C i="6">Height 2</C>
            <C i="7">Peak Area 1</C>
            <C i="8">Peak Area 2</C>
        </R>
        <R i="1">
            <C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
            <C i="1">100CTRL-NEW3-LOT</C>
            <C i="2">B</C>
            <C i="3">143.84</C>
            <C i="4">148.3</C>
            <C i="5">3331</C>
            <C i="6">2024</C>
            <C i="7">30513</C>
            <C i="8">18020</C>
        </R>
        <R i="2">
            <C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
            <C i="1">100CTRL-NEW3-LOT</C>
            <C i="2">B</C>
            <C i="3">204.1</C>
            <C i="4"/>
            <C i="5">4461</C>
            <C i="6"/>
            <C i="7">40664</C>
            <C i="8"/>
        </R>
    </Data>
</Data>
</Message>

Ali

unread,
Feb 4, 2014, 1:09:00 AM2/4/14
to xs...@googlegroups.com
Also 

I have the un-wanted columns defined in xsl:param. For example not needed columns are defined as – 
<xsl:param name="notNeeded">'size 1', 'Height 1', 'and so on'</xsl:param>
I know I have to iterate over these params and eliminate columns based on these params.  How would I go about doing that?  Thanks.

dshcs

unread,
Feb 4, 2014, 8:05:26 AM2/4/14
to xs...@googlegroups.com
Ali:  The below transform seems to work.  It uses a Result Tree Fragment (RTF) to hold the list of columns to be removed.  It also uses the Microsoft node-set function.  You should be able to pass the RTF in as a parameter.
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt">
  <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
  <!-- xsl:param name="notNeeded">'size 1', 'Height 1', 'and so on'</xsl:param -->
  <xsl:variable name="rtfUnused1">
    <value>Dye</value>
    <value>Size 1</value>
  </xsl:variable>
  <xsl:variable name="nsUnused1" select="msxsl:node-set($rtfUnused1)"/>
  <xsl:variable name="rtfUnused2">
    <xsl:for-each select="/Message/Data/Data/R[@i=0]/C[text() = $nsUnused1/value]">
      <value><xsl:value-of select="@i"/></value>
    </xsl:for-each>
  </xsl:variable>
  <xsl:variable name="nsUnused2" select="msxsl:node-set($rtfUnused2)"/>
  <xsl:template match="/">
    <xsl:message><xsl:text>rtfUnused1=</xsl:text><xsl:copy-of select="$rtfUnused1"/></xsl:message>
    <xsl:message><xsl:text>rtfUnused2=</xsl:text><xsl:copy-of select="$rtfUnused2"/></xsl:message>
    <xsl:copy><xsl:apply-templates select="@* | node()"/></xsl:copy>
  </xsl:template>
  <!-- If several templates have the same priority, the last in the style sheet is chosen -->
  <xsl:template match="@* | node()"> <!-- / move above for message -->
    <xsl:copy>
      <!--xsl:apply-templates select="@* | *[name() != 'C' or (name() = 'C' and @i = $nsUnused2/value)]"/-->
      <xsl:apply-templates select="@* | *[name() != 'C' or (name() = 'C' and not(@i = $nsUnused2/value))]"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

dshcs

unread,
Feb 4, 2014, 8:10:00 AM2/4/14
to xs...@googlegroups.com
Oops, forgot the to include the text and the results, so update one line in the XSL
      <xsl:apply-templates select="@* | *[name() != 'C' or (name() = 'C' and not(@i = $nsUnused2/value))] | text()"/>
 
and the results are
 
<Message>
<Header />

<Data>
    <Data>
        <R i="0">
            <C i="0">Sample File</C>
            <C i="1">Sample Name</C>
            <C i="4">Size 2</C>
            <C i="5">Height 1</C>
            <C i="6">Height 2</C>
            <C i="7">Peak Area 1</C>
            <C i="8">Peak Area 2</C>
        </R>
        <R i="1">
            <C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
            <C i="1">100CTRL-NEW3-LOT</C>
            <C i="4">148.3</C>
            <C i="5">3331</C>
            <C i="6">2024</C>
            <C i="7">30513</C>
            <C i="8">18020</C>
        </R>
        <R i="2">
            <C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
            <C i="1">100CTRL-NEW3-LOT</C>

Ali

unread,
Feb 4, 2014, 11:00:40 AM2/4/14
to xs...@googlegroups.com
Thank you.  I am using Altova and don't know how to perform node-set function.  Please see my input and desire output.  I tried zsl, but no working.  I will also see what is the logic inyour transformation.

First I have to group based on "Sample File" in row @i="1" and then eliminate some column.  Any more help is appreciated.  Thanks.
input xml.

<?xml version="1.0" encoding="UTF-8"?>
<Message>
<Header>
<Id>ID:10.181.239.196-143b86d264f-11:3</Id>
<Instance>DataMarshalerBC</Instance>
<Source>SMX</Source>
<Destination>DMI</Destination>
<Date>2014-01-22</Date>
<Time>14:19:23</Time>
<Status>ok</Status>
</Header>
<Data>
<Data>
<R i="0">
<C i="0">Sample File</C>
<C i="1">Sample Name</C>
<C i="2">Dye</C>
<C i="3">Size 1</C>
<C i="4">Size 2</C>
<C i="5">Height 1</C>
<C i="6">Height 2</C>
<C i="7">Peak Area 1</C>
<C i="8">Peak Area 2</C>
</R>
<R i="1">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">B</C>
<C i="3">143.84</C>
<C i="4">148.3</C>
<C i="5">3331</C>
<C i="6">2024</C>
<C i="7">30513</C>
<C i="8">18020</C>
</R>
<R i="2">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">B</C>
<C i="3">204.1</C>
<C i="4"/>
<C i="5">4461</C>
<C i="6"/>
<C i="7">40664</C>
<C i="8"/>
</R>
<R i="3">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">B</C>
<C i="3">275.08</C>
<C i="4">279.17</C>
<C i="5">2231</C>
<C i="6">1875</C>
<C i="7">25634</C>
<C i="8">21248</C>
</R>
<R i="4">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">B</C>
<C i="3">321.22</C>
<C i="4">325.37</C>
<C i="5">2127</C>
<C i="6">2142</C>
<C i="7">23397</C>
<C i="8">23857</C>
</R>
<R i="5">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">G</C>
<C i="3">127.46</C>
<C i="4">131.51</C>
<C i="5">2677</C>
<C i="6">2786</C>
<C i="7">27264</C>
<C i="8">28037</C>
</R>
<R i="6">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">G</C>
<C i="3">170.9</C>
<C i="4">178.88</C>
<C i="5">4934</C>
<C i="6">4037</C>
<C i="7">42072</C>
<C i="8">34893</C>
</R>
<R i="7">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">G</C>
<C i="3">232.28</C>
<C i="4"/>
<C i="5">3742</C>
<C i="6"/>
<C i="7">38389</C>
<C i="8"/>
</R>
<R i="8">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">G</C>
<C i="3">275.87</C>
<C i="4">283.97</C>
<C i="5">1787</C>
<C i="6">1695</C>
<C i="7">18903</C>
<C i="8">18359</C>
</R>
<R i="9">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">G</C>
<C i="3">315.38</C>
<C i="4">347.26</C>
<C i="5">2739</C>
<C i="6">2974</C>
<C i="7">30863</C>
<C i="8">34536</C>
</R>
<R i="10">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">Y</C>
<C i="3">125.27</C>
<C i="4"/>
<C i="5">3781</C>
<C i="6"/>
<C i="7">31934</C>
<C i="8"/>
</R>
<R i="11">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">Y</C>
<C i="3">174.49</C>
<C i="4"/>
<C i="5">2771</C>
<C i="6"/>
<C i="7">25628</C>
<C i="8"/>
</R>
<R i="12">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">Y</C>
<C i="3">229.7</C>
<C i="4"/>
<C i="5">2876</C>
<C i="6"/>
<C i="7">34418</C>
<C i="8"/>
</R>
<R i="13">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">Y</C>
<C i="3">282.16</C>
<C i="4">294.51</C>
<C i="5">2146</C>
<C i="6">1883</C>
<C i="7">22297</C>
<C i="8">19944</C>
</R>
<R i="14">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">R</C>
<C i="3">106.27</C>
<C i="4">111.87</C>
<C i="5">735</C>
<C i="6">775</C>
<C i="7">7736</C>
<C i="8">8334</C>
</R>
<R i="15">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">R</C>
<C i="3">142.23</C>
<C i="4">155.35</C>
<C i="5">1732</C>
<C i="6">1855</C>
<C i="7">16635</C>
<C i="8">18043</C>
</R>
<R i="16">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">R</C>
<C i="3">222.2</C>
<C i="4">234.26</C>
<C i="5">841</C>
<C i="6">908</C>
<C i="7">8852</C>
<C i="8">10032</C>
</R>
<R i="17">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">B</C>
<C i="3">143.93</C>
<C i="4">148.4</C>
<C i="5">2410</C>
<C i="6">1938</C>
<C i="7">23621</C>
<C i="8">18176</C>
</R>
<R i="18">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">B</C>
<C i="3">204.16</C>
<C i="4"/>
<C i="5">3561</C>
<C i="6"/>
<C i="7">33659</C>
<C i="8"/>
</R>
<R i="19">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">B</C>
<C i="3">275.09</C>
<C i="4">279.26</C>
<C i="5">2504</C>
<C i="6">1468</C>
<C i="7">29866</C>
<C i="8">17302</C>
</R>
<R i="20">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">B</C>
<C i="3">321.35</C>
<C i="4">325.44</C>
<C i="5">2219</C>
<C i="6">1497</C>
<C i="7">25532</C>
<C i="8">17143</C>
</R>
<R i="21">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">G</C>
<C i="3">127.56</C>
<C i="4">131.63</C>
<C i="5">2738</C>
<C i="6">2537</C>
<C i="7">28168</C>
<C i="8">26153</C>
</R>
<R i="22">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">G</C>
<C i="3">170.99</C>
<C i="4">179.03</C>
<C i="5">3279</C>
<C i="6">4116</C>
<C i="7">29363</C>
<C i="8">37174</C>
</R>
<R i="23">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">G</C>
<C i="3">232.34</C>
<C i="4"/>
<C i="5">3286</C>
<C i="6"/>
<C i="7">35270</C>
<C i="8"/>
</R>
<R i="24">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">G</C>
<C i="3">275.94</C>
<C i="4">283.99</C>
<C i="5">1535</C>
<C i="6">1599</C>
<C i="7">16956</C>
<C i="8">17538</C>
</R>
<R i="25">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">G</C>
<C i="3">315.43</C>
<C i="4">347.32</C>
<C i="5">1997</C>
<C i="6">2355</C>
<C i="7">23585</C>
<C i="8">28572</C>
</R>
<R i="26">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">Y</C>
<C i="3">125.33</C>
<C i="4"/>
<C i="5">4260</C>
<C i="6"/>
<C i="7">37630</C>
<C i="8"/>
</R>
<R i="27">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">Y</C>
<C i="3">174.65</C>
<C i="4"/>
<C i="5">2565</C>
<C i="6"/>
<C i="7">24491</C>
<C i="8"/>
</R>
<R i="28">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">Y</C>
<C i="3">229.65</C>
<C i="4"/>
<C i="5">2730</C>
<C i="6"/>
<C i="7">34175</C>
<C i="8"/>
</R>
<R i="29">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">Y</C>
<C i="3">282.2</C>
<C i="4">294.59</C>
<C i="5">1642</C>
<C i="6">1595</C>
<C i="7">17824</C>
<C i="8">17567</C>
</R>
<R i="30">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">R</C>
<C i="3">106.29</C>
<C i="4">111.93</C>
<C i="5">841</C>
<C i="6">772</C>
<C i="7">8781</C>
<C i="8">8332</C>
</R>
<R i="31">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">R</C>
<C i="3">142.34</C>
<C i="4">155.5</C>
<C i="5">1517</C>
<C i="6">1444</C>
<C i="7">15193</C>
<C i="8">14526</C>
</R>
<R i="32">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">R</C>
<C i="3">222.29</C>
<C i="4">234.36</C>
<C i="5">808</C>
<C i="6">652</C>
<C i="7">8697</C>
<C i="8">6948</C>
</R>
</Data>
</Data>
<Attachments>
<Attachment Encoding="base64" Location="element" Name="Combined_GenotypesTable.txt">U2FtcGxlIEZpbGUJU2FtcGxlIE5hbWUJRHllCVNpemUgMQlTaXplIDI
JSGVpZ2h0IDEJSGVpJUgpOVENfMjAxNC0wMS0yMV9DMDEuZnNhCU5UQwlSCk5UQ18yMDE0LTAxLTIxX0MwMS5mc2EJTlRDCVIK</Attachment>
</Attachments>
</Message>
------------------------------------- Desire Output -------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<Message>
<Header>
<Id>ID:10.181.239.196-143b86d264f-11:3</Id>
<Instance>DataMarshalerBC</Instance>
<Source>SMX</Source>
<Destination>DMI</Destination>
<Date>2014-01-22</Date>
<Time>14:19:23</Time>
<Status>ok</Status>
</Header>
<Data>
<Data>
<R i="0">
<C i="0">Sample File</C>
<C i="1">Sample Name</C>
<C i="2">Dye</C>
<C i="5">Height 1</C>
<C i="6">Height 2</C>
<C i="8">Peak Area 2</C>
</R>
<R i="1">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">B</C>
<C i="5">3331</C>
<C i="6">2024</C>
<C i="8">18020</C>
</R>
<R i="2">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">B</C>
<C i="5">4461</C>
<C i="6"/>
<C i="8"/>
</R>
<R i="3">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">B</C>
<C i="5">2231</C>
<C i="6">1875</C>
<C i="8">21248</C>
</R>
<R i="4">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">B</C>
<C i="5">2127</C>
<C i="6">2142</C>
<C i="8">23857</C>
</R>
<R i="5">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">G</C>
<C i="5">2677</C>
<C i="6">2786</C>
<C i="8">28037</C>
</R>
<R i="6">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">G</C>
<C i="5">4934</C>
<C i="6">4037</C>
<C i="8">34893</C>
</R>
<R i="7">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">G</C>
<C i="5">3742</C>
<C i="6"/>
<C i="8"/>
</R>
<R i="8">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">G</C>
<C i="5">1787</C>
<C i="6">1695</C>
<C i="8">18359</C>
</R>
<R i="9">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">G</C>
<C i="5">2739</C>
<C i="6">2974</C>
<C i="8">34536</C>
</R>
<R i="10">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">Y</C>
<C i="5">3781</C>
<C i="6"/>
<C i="8"/>
</R>
<R i="11">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">Y</C>
<C i="5">2771</C>
<C i="6"/>
<C i="8"/>
</R>
<R i="12">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">Y</C>
<C i="5">2876</C>
<C i="6"/>
<C i="8"/>
</R>
<R i="13">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">Y</C>
<C i="3">282.16</C>
<C i="4">294.51</C>
<C i="5">2146</C>
<C i="6">1883</C>
<C i="7">22297</C>
<C i="8">19944</C>
</R>
<R i="14">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">R</C>
<C i="5">735</C>
<C i="6">775</C>
<C i="8">8334</C>
</R>
<R i="15">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">R</C>
<C i="5">1732</C>
<C i="6">1855</C>
<C i="8">18043</C>
</R>
<R i="16">
<C i="0">100CTRL-NEW3-LOT_2014-01-21_D06.fsa</C>
<C i="1">100CTRL-NEW3-LOT</C>
<C i="2">R</C>
<C i="5">841</C>
<C i="6">908</C>
<C i="8">10032</C>
</R>
</Data>
</Data>
<Attachments>
<Attachment Encoding="base64" Location="element" Name="Combined_GenotypesTable-02-04-2014-1055_100CTRL-NEW3-LOT_2014-01-21_D06.fsa"/>
</Attachments>
</Message>
<Message>
<Header>
<Id>ID:10.181.239.196-143b86d264f-11:3</Id>
<Instance>DataMarshalerBC</Instance>
<Source>SMX</Source>
<Destination>DMI</Destination>
<Date>2014-01-22</Date>
<Time>14:19:23</Time>
<Status>ok</Status>
</Header>
<Data>
<Data>
<R i="0">
<C i="0">Sample File</C>
<C i="1">Sample Name</C>
<C i="2">Dye</C>
<C i="5">Height 1</C>
<C i="6">Height 2</C>
<C i="8">Peak Area 2</C>
</R>
<R i="1">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">B</C>
<C i="5">2410</C>
<C i="6">1938</C>
<C i="8">18176</C>
</R>
<R i="2">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">B</C>
<C i="5">3561</C>
<C i="6"/>
<C i="8"/>
</R>
<R i="3">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">B</C>
<C i="5">2504</C>
<C i="6">1468</C>
<C i="8">17302</C>
</R>
<R i="4">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">B</C>
<C i="5">2219</C>
<C i="6">1497</C>
<C i="8">17143</C>
</R>
<R i="5">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">G</C>
<C i="5">2738</C>
<C i="6">2537</C>
<C i="8">26153</C>
</R>
<R i="6">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">G</C>
<C i="5">3279</C>
<C i="6">4116</C>
<C i="8">37174</C>
</R>
<R i="7">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">G</C>
<C i="5">3286</C>
<C i="6"/>
<C i="8"/>
</R>
<R i="8">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">G</C>
<C i="5">1535</C>
<C i="6">1599</C>
<C i="8">17538</C>
</R>
<R i="9">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">G</C>
<C i="5">1997</C>
<C i="6">2355</C>
<C i="8">28572</C>
</R>
<R i="10">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">Y</C>
<C i="5">4260</C>
<C i="6"/>
<C i="8"/>
</R>
<R i="11">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">Y</C>
<C i="5">2565</C>
<C i="6"/>
<C i="8"/>
</R>
<R i="12">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">Y</C>
<C i="5">2730</C>
<C i="6"/>
<C i="8"/>
</R>
<R i="13">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">Y</C>
<C i="5">1642</C>
<C i="6">1595</C>
<C i="8">17567</C>
</R>
<R i="14">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">R</C>
<C i="5">841</C>
<C i="6">772</C>
<C i="8">8332</C>
</R>
<R i="15">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">R</C>
<C i="5">1517</C>
<C i="6">1444</C>
<C i="8">14526</C>
</R>
<R i="16">
<C i="0">100CTRL-NEW4-LOT_2014-01-21_G06.fsa</C>
<C i="1">100CTRL-NEW4-LOT</C>
<C i="2">R</C>
<C i="5">808</C>
<C i="6">652</C>
<C i="8">6948</C>
</R>
</Data>
</Data>
<Attachments>
<Attachment Encoding="base64" Location="element" Name="Combined_GenotypesTable-02-04-2014-1055_100CTRL-NEW4-LOT_2014-01-21_G06.fsa"/>
</Attachments>
</Message>
</Records>

Ali

unread,
Feb 4, 2014, 11:05:31 AM2/4/14
to xs...@googlegroups.com
My XSL

<?xml version="1.0" encoding="UTF-8"?>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="notNeeded">'size 1', 'Height 1', 'Peak Area 1'</xsl:param>
<xsl:variable name="NotNeededColumns" select="tokenize($notNeeded, ',')"/>
<xsl:key name="header" match="C[parent::R/@i='0']" use="@i" />
<xsl:variable name="folder" select="substring-before(//Attachments/Attachment/@Name, '.')"/>
<xsl:variable name="d" select="current-dateTime()"/>
<xsl:template match="Message">
<Records>
<xsl:variable name="columnHeader" select="Data/Data/R[@i = 0]"/>
<xsl:variable name="data" select="//Data/R[@i &gt; 0]"/>
<xsl:for-each-group select="$data" group-by="C[@i = 0]">
<xsl:variable name="filename" select="C[@i = 0]"/>
<Message>
<Header>
<Id>ID:10.181.239.196-143b86d264f-11:3</Id>
<Instance>DataMarshalerBC</Instance>
<Source>SMX</Source>
<Destination>DMI</Destination>
<Date>2014-01-22</Date>
<Time>14:19:23</Time>
<Status>ok</Status>
</Header>
<Data>
<Data>
<xsl:copy-of select="$columnHeader"/>
<xsl:for-each select="current-group()">
<xsl:element name="R">
<xsl:attribute name="i" select="position()"/>
<xsl:for-each select="$NotNeededColumns">
<xsl:copy-of select="R/C[key('header', @i) != $NotNeededColumns[1]]"/>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</Data>
</Data>
<Attachments>
<xsl:element name="Attachment">
<xsl:attribute name="Encoding" select="'base64'"/>
<xsl:attribute name="Location" select="'element'"/>
<xsl:attribute name="Name" select="concat($folder, '-', format-dateTime($d, '[M01]-[D01]-[Y0001]-[H01][m01]'), '_', $filename)"/>
</xsl:element>
</Attachments>
</Message>
</xsl:for-each-group>
</Records>
</xsl:template>
<xsl:template match="Header"/>
</xsl:stylesheet>


On Tuesday, February 4, 2014 12:37:15 AM UTC-5, Ali wrote:
Reply all
Reply to author
Forward
0 new messages