CSV-> xml,用于消除不想要的列

时间:2014-02-04 15:24:38

标签: xml xslt tsv

我在下面有这个xml。它是转换为xml的TSV文件。我必须删除一些列。这些列在

中定义
<xsl:param name="notNeeded">'size 1', 'Height 1', 'Peak Area 1'</xsl:param>

我必须使用此参数中的项目来消除列。我也把愿望附加出来。我需要根据“样本文件”C i =“0”从第i行“1”开始分组。

然后我必须根据此参数删除一些列。然后为每个组添加标头。请查看欲望输出。我的xsl生成错误。

-----输入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">U2FtcGxlIEZpbGUJU2FtcGxlIE5hbWUJRHllCVNpemUgMQlTaXplIDIJSGVpZ2h0IDEJSGVpJUgpOVENfMjAxNC0wMS0yMV9DMDEuZnNhCU5UQwlSCk5UQ18yMDE0LTAxLTIxX0MwMS5mc2EJTlRDCVIK</Attachment>
</Attachments>
</Message>

- 我的xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
  <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>

----欲望输出

<?xml version="1.0" encoding="UTF-8"?>
<Records xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <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="5">2146</C>
          <C i="6">1883</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-1006_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-1006_100CTRL-NEW4-LOT_2014-01-21_G06.fsa"/>
    </Attachments>
  </Message>
</Records>

1 个答案:

答案 0 :(得分:0)

我认为通过将xsl:param括在括号中将<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes"/> <xsl:strip-space elements="*"/> <xsl:param name="notNeeded" select="('Size 1', 'Height 1', 'Peak Area 1')"/> <xsl:variable name="notNeededIDs" select="//R[@i='0']/C[.=$notNeeded]/@i"/> <xsl:variable name="dt" select="current-dateTime()"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="/*"> <Records> <xsl:for-each-group select="Data/Data/R[not(position()=1)]" group-by="C[@i='0']"> <Message> <xsl:apply-templates select="/*/Header"/> <Data> <Data> <xsl:apply-templates select="/*/Data/Data/R[position()=1]"/> <xsl:apply-templates select="current-group()"/> </Data> </Data> <xsl:apply-templates select="/*/Attachments"> <xsl:with-param name="filename" select="C[@i=0]" tunnel="yes"/> </xsl:apply-templates> </Message> </xsl:for-each-group> </Records> </xsl:template> <xsl:template match="R[not(position()=1)]"> <R i="{position()}"> <xsl:apply-templates/> </R> </xsl:template> <xsl:template match="Attachment"> <xsl:param name="filename" tunnel="yes"/> <Attachment> <xsl:apply-templates select="@*"/> <xsl:attribute name="Name" select="concat(substring-before(@Name,'.'),'-',format-dateTime($dt,'[M01]-[D01]-[Y0001]-[H01][m01]'),'_',$filename)"/> </Attachment> </xsl:template> <xsl:template match="C[@i=$notNeededIDs]"/> </xsl:stylesheet> 转换为序列可能会更容易。

这是一个例子......

XSLT 2.0

<Records>
   <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="4">Size 2</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="4">148.3</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="4"/>
               <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="4">279.17</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="4">325.37</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="4">131.51</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="4">178.88</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="4"/>
               <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="4">283.97</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="4">347.26</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="4"/>
               <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="4"/>
               <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="4"/>
               <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="4">294.51</C>
               <C i="6">1883</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="4">111.87</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="4">155.35</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="4">234.26</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-1216_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="4">Size 2</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="4">148.4</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="4"/>
               <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="4">279.26</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="4">325.44</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="4">131.63</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="4">179.03</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="4"/>
               <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="4">283.99</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="4">347.32</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="4"/>
               <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="4"/>
               <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="4"/>
               <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="4">294.59</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="4">111.93</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="4">155.5</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="4">234.36</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-1216_100CTRL-NEW4-LOT_2014-01-21_G06.fsa"/>
      </Attachments>
   </Message>
</Records>

XML输出

C/@i

修改

如果您想更改<xsl:template match="C"> <C> <xsl:attribute name="i"> <xsl:number count="C[not(@i=$notNeededIDs)]"/> </xsl:attribute> <xsl:apply-templates/> </C> </xsl:template> 的编号,请添加此模板:

C

这将输出您在评论中要求的 <R i="0"> <C i="1">Sample File</C> <C i="2">Sample Name</C> <C i="3">Dye</C> <C i="4">Size 2</C> <C i="5">Height 2</C> <C i="6">Peak Area 2</C> </R> 元素:

{{1}}