xslt创建自定义分组

时间:2015-12-23 15:17:57

标签: xslt

我有一个xslt问题。下面是我需要转换的示例XML文件。有384个节点。在这个XML中,我需要制作96个由

组成的节点
@i=2
@i=3
@i=26

然后

@i=4
@i=5
@i=28 

等等 所以节点中的第三个@i偏移24,例如

<sample input_pos="A01">
        <group pos="0">
            <Quant1 WellID="A1">98.264</Quant1>
            <Quant2 WellID="A2">251.789</Quant2>
            <Quant3 WellID="B1">95.073</Quant3>
        </group>
    </sample>
    <sample input_pos="B01">
        <group pos="1">
            <Quant1 WellID="A5">402.521</Quant1>
            <Quant2 WellID="A6">1125.667</Quant2>
            <Quant3 WellID="B5">122.02</Quant3>
        </group>
    </sample>

我已经完成了xslt并且输出不正确。你能帮忙吗?提前谢谢。

XSLT

<?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" exclude-result-prefixes="#all"/>
    <xsl:param name="GroupSize" select="4"/>
    <xsl:param name="PlateSize" select="8"/>
    <xsl:template match="Message">
        <xsl:apply-templates select="Data/Data"/>
    </xsl:template>
    <xsl:template match="Data">
        <!-- xsl:value-of select="for $n in fn:string-to-codepoints('A') to fn:string-to-codepoints('H') return fn:codepoints-to-string($n)"/ -->
        <xsl:variable name="wells" select="R[@i = 2]"/>
        <xsl:variable name="numbers" select="R[@i = 3]"/>
        <xsl:variable name="plateMap">
            <platemap>
                <xsl:for-each-group select="R[@i = 3]/C[@i > 1]" group-by="(position() - 1) idiv $GroupSize">
                    <group>
                        <xsl:attribute name="pos" select="position() - 1"/>
                        <xsl:variable name="Quant" select="current-group()"/>
                        <!-- xsl:sequence select="current-group()[1]"/ -->
                        <Quant1>
                            <xsl:attribute name="WellID" select="$wells/C[@i = $Quant[1]/@i]"/>
                            <!-- xsl:attribute name="WellID" select="$wells/C[@i = ]"/ -->
                            <xsl:value-of select="current-group()[1]"/>
                        </Quant1>
                        <Quant2>
                            <xsl:attribute name="WellID" select="$wells/C[@i = $Quant[2]/@i]"/>
                            <xsl:value-of select="current-group()[2]"/>
                        </Quant2>
                        <xsl:for-each select="current-group()">
                            <xsl:if test="position() = 1">
                                <Quant3>
                                    <xsl:attribute name="WellID" select="$wells/C[@i = ($Quant[1]/@i + 24)]"/>
                                    <xsl:variable name="offset" select="./@i + 24"/>
                                    <xsl:value-of select="$numbers/C[@i = $offset]"/>
                                </Quant3>
                                <Quant4>
                                    <xsl:attribute name="WellID" select="$wells/C[@i = ($Quant[1]/@i + 25)]"/>
                                    <xsl:variable name="offset" select="./@i + 25"/>
                                    <xsl:value-of select="$numbers/C[@i = $offset]"/>
                                </Quant4>
                            </xsl:if>
                        </xsl:for-each>
                    </group>
                </xsl:for-each-group>
            </platemap>
        </xsl:variable>
        <platemap>
            <xsl:for-each-group select="$plateMap/platemap/group" group-by="(position() - 1) idiv $PlateSize">
                <xsl:variable name="groupPos" select="position()"/>
                <xsl:variable name="row">A B C D E F G H</xsl:variable>
                <xsl:for-each select="current-group()">
                    <sample>
                        <xsl:variable name="p" select="position()"/>
                        <xsl:attribute name="input_pos" select="if($groupPos &lt; 10) then concat(tokenize($row, ' ')[$p], '0', $groupPos) else (concat(tokenize($row, ' ')[$p], $groupPos))"/>
                        <xsl:copy-of select="."/>
                    </sample>
                </xsl:for-each>
            </xsl:for-each-group>
        </platemap>
    </xsl:template>
</xsl:stylesheet>

输出应该如下所示。该板有384孔,结果应该是96孔,每个有3个结果。

Quant1  Quant2  Quant3
98.264  251.789 95.073
167.377 168.763 167.112
77.255  79.599  73.96
152.114 148.136 140.031
91.622  93.167  95.29
71.646  71.701  72.542
168.188 162.044 170.885
114.21  120.113 118.792
456.882 800.867 121.934
62.233  59.716  62.167
194.109 192.292 192.454
143.53  137.407 145.424
96.578  91.536  93.102
175.094 174.416 175.624
174.282 173.46  177.115
87.466  87.785  83.707
402.521 1125.667    122.02
71.789  73.824  72.51
161.254 161.829 155.221
2.659   2.515   3.787
150.295 144.275 152.096
167.246 168.692 172.031
118.667 121.618 120.573
118.164 117.511 118.586
135.531 144.322 137.248
132 128.993 130.413
83.873  81.339  85.79
123.114 118.523 122.603
131.378 125.119 131.012
170.327 168.509 177.21
110.104 105.967 114.131
118.692 118.782 115.641
96.925  94.017  92.619
122.594 121.069 117.306
65.148  67.914  64.73
190.988 191.066 189.912
125.056 122.41  121.009
231.151 219.915 226.702
124.337 126.589 131.849
121.788 120.187 115.018
94.072  91.234  92.794
88.343  87.554  87.132
124.41  113.577 119.848

我修改了xml更容易 实际上第四个结果没有显示在输出中。 这用于基因测试,其中患者有4口井。但是分析仪只读了3口井。

so
@i=2, @i=3, @i=26, @i=27 in one group
@i=4, @i=5, @i=28, @i=29 in one group
Therefore @i=26, @i=27 and @i=28, @i=29 cannot be in other groups.

如果你看看输出,第一列和第二列是彼此相邻的,但第三列总是离第一列24个位置。 下面是对我的xsl起作用的整个xml。

<?xml version="1.0" encoding="UTF-8"?>
<Message>
    <Header>
        <Id>ID:172.27.65.115-151c82bbb14-3:0</Id>
        <Instance>DataMarshalerBC</Instance>
        <Source>SMX</Source>
        <Destination>DMI</Destination>
        <Date>2015-12-22</Date>
        <Time>06:03:58</Time>
        <Status>ok</Status>
    </Header>
    <Data>
        <Data>
            <R i="0">
                <C i="0">##BLOCKS= 1</C>
            </R>
            <R i="1">
                <C i="0">Plate:</C>
                <C i="1">Plate1</C>
                <C i="2">1.3</C>
                <C i="3">TimeFormat</C>
                <C i="4">Endpoint</C>
                <C i="5">Fluorescence</C>
                <C i="6">FALSE</C>
                <C i="7">Raw</C>
                <C i="8">FALSE</C>
                <C i="9">1</C>
                <C i="10"/>
                <C i="11"/>
                <C i="12"/>
                <C i="13"/>
                <C i="14"/>
                <C i="15">1</C>
                <C i="16">530 </C>
                <C i="17">1</C>
                <C i="18">24</C>
                <C i="19">384</C>
                <C i="20">485 </C>
                <C i="21">Automatic</C>
                <C i="22">530 </C>
                <C i="23"/>
                <C i="24"/>
                <C i="25">6</C>
                <C i="26"/>
                <C i="27"/>
                <C i="28"/>
                <C i="29">1</C>
                <C i="30">16</C>
                <C i="31"/>
                <C i="32"/>
            </R>
            <R i="2">
                <C i="0"/>
                <C i="1">Temperature(¡C)</C>
                <C i="2">A1</C>
                <C i="3">A2</C>
                <C i="4">A3</C>
                <C i="5">A4</C>
                <C i="6">A5</C>
                <C i="7">A6</C>
                <C i="8">A7</C>
                <C i="9">A8</C>
                <C i="10">A9</C>
                <C i="11">A10</C>
                <C i="12">A11</C>
                <C i="13">A12</C>
                <C i="14">A13</C>
                <C i="15">A14</C>
                <C i="16">A15</C>
                <C i="17">A16</C>
                <C i="18">A17</C>
                <C i="19">A18</C>
                <C i="20">A19</C>
                <C i="21">A20</C>
                <C i="22">A21</C>
                <C i="23">A22</C>
                <C i="24">A23</C>
                <C i="25">A24</C>
                <C i="26">B1</C>
                <C i="27">B2</C>
                <C i="28">B3</C>
                <C i="29">B4</C>
                <C i="30">B5</C>
                <C i="31">B6</C>
                <C i="32">B7</C>
                <C i="33">B8</C>
                <C i="34">B9</C>
                <C i="35">B10</C>
                <C i="36">B11</C>
                <C i="37">B12</C>
                <C i="38">B13</C>
                <C i="39">B14</C>
                <C i="40">B15</C>
                <C i="41">B16</C>
                <C i="42">B17</C>
                <C i="43">B18</C>
                <C i="44">B19</C>
                <C i="45">B20</C>
                <C i="46">B21</C>
                <C i="47">B22</C>
                <C i="48">B23</C>
                <C i="49">B24</C>
                <C i="50">C1</C>
                <C i="51">C2</C>
                <C i="52">C3</C>
                <C i="53">C4</C>
                <C i="54">C5</C>
                <C i="55">C6</C>
                <C i="56">C7</C>
                <C i="57">C8</C>
                <C i="58">C9</C>
                <C i="59">C10</C>
                <C i="60">C11</C>
                <C i="61">C12</C>
                <C i="62">C13</C>
                <C i="63">C14</C>
                <C i="64">C15</C>
                <C i="65">C16</C>
                <C i="66">C17</C>
                <C i="67">C18</C>
                <C i="68">C19</C>
                <C i="69">C20</C>
                <C i="70">C21</C>
                <C i="71">C22</C>
                <C i="72">C23</C>
                <C i="73">C24</C>
                <C i="74">D1</C>
                <C i="75">D2</C>
                <C i="76">D3</C>
                <C i="77">D4</C>
                <C i="78">D5</C>
                <C i="79">D6</C>
                <C i="80">D7</C>
                <C i="81">D8</C>
                <C i="82">D9</C>
                <C i="83">D10</C>
                <C i="84">D11</C>
                <C i="85">D12</C>
                <C i="86">D13</C>
                <C i="87">D14</C>
                <C i="88">D15</C>
                <C i="89">D16</C>
                <C i="90">D17</C>
                <C i="91">D18</C>
                <C i="92">D19</C>
                <C i="93">D20</C>
                <C i="94">D21</C>
                <C i="95">D22</C>
                <C i="96">D23</C>
                <C i="97">D24</C>
                <C i="98">E1</C>
                <C i="99">E2</C>
                <C i="100">E3</C>
                <C i="101">E4</C>
                <C i="102">E5</C>
                <C i="103">E6</C>
                <C i="104">E7</C>
                <C i="105">E8</C>
                <C i="106">E9</C>
                <C i="107">E10</C>
                <C i="108">E11</C>
                <C i="109">E12</C>
                <C i="110">E13</C>
                <C i="111">E14</C>
                <C i="112">E15</C>
                <C i="113">E16</C>
                <C i="114">E17</C>
                <C i="115">E18</C>
                <C i="116">E19</C>
                <C i="117">E20</C>
                <C i="118">E21</C>
                <C i="119">E22</C>
                <C i="120">E23</C>
                <C i="121">E24</C>
                <C i="122">F1</C>
                <C i="123">F2</C>
                <C i="124">F3</C>
                <C i="125">F4</C>
                <C i="126">F5</C>
                <C i="127">F6</C>
                <C i="128">F7</C>
                <C i="129">F8</C>
                <C i="130">F9</C>
                <C i="131">F10</C>
                <C i="132">F11</C>
                <C i="133">F12</C>
                <C i="134">F13</C>
                <C i="135">F14</C>
                <C i="136">F15</C>
                <C i="137">F16</C>
                <C i="138">F17</C>
                <C i="139">F18</C>
                <C i="140">F19</C>
                <C i="141">F20</C>
                <C i="142">F21</C>
                <C i="143">F22</C>
                <C i="144">F23</C>
                <C i="145">F24</C>
                <C i="146">G1</C>
                <C i="147">G2</C>
                <C i="148">G3</C>
                <C i="149">G4</C>
                <C i="150">G5</C>
                <C i="151">G6</C>
                <C i="152">G7</C>
                <C i="153">G8</C>
                <C i="154">G9</C>
                <C i="155">G10</C>
                <C i="156">G11</C>
                <C i="157">G12</C>
                <C i="158">G13</C>
                <C i="159">G14</C>
                <C i="160">G15</C>
                <C i="161">G16</C>
                <C i="162">G17</C>
                <C i="163">G18</C>
                <C i="164">G19</C>
                <C i="165">G20</C>
                <C i="166">G21</C>
                <C i="167">G22</C>
                <C i="168">G23</C>
                <C i="169">G24</C>
                <C i="170">H1</C>
                <C i="171">H2</C>
                <C i="172">H3</C>
                <C i="173">H4</C>
                <C i="174">H5</C>
                <C i="175">H6</C>
                <C i="176">H7</C>
                <C i="177">H8</C>
                <C i="178">H9</C>
                <C i="179">H10</C>
                <C i="180">H11</C>
                <C i="181">H12</C>
                <C i="182">H13</C>
                <C i="183">H14</C>
                <C i="184">H15</C>
                <C i="185">H16</C>
                <C i="186">H17</C>
                <C i="187">H18</C>
                <C i="188">H19</C>
                <C i="189">H20</C>
                <C i="190">H21</C>
                <C i="191">H22</C>
                <C i="192">H23</C>
                <C i="193">H24</C>
                <C i="194">I1</C>
                <C i="195">I2</C>
                <C i="196">I3</C>
                <C i="197">I4</C>
                <C i="198">I5</C>
                <C i="199">I6</C>
                <C i="200">I7</C>
                <C i="201">I8</C>
                <C i="202">I9</C>
                <C i="203">I10</C>
                <C i="204">I11</C>
                <C i="205">I12</C>
                <C i="206">I13</C>
                <C i="207">I14</C>
                <C i="208">I15</C>
                <C i="209">I16</C>
                <C i="210">I17</C>
                <C i="211">I18</C>
                <C i="212">I19</C>
                <C i="213">I20</C>
                <C i="214">I21</C>
                <C i="215">I22</C>
                <C i="216">I23</C>
                <C i="217">I24</C>
                <C i="218">J1</C>
                <C i="219">J2</C>
                <C i="220">J3</C>
                <C i="221">J4</C>
                <C i="222">J5</C>
                <C i="223">J6</C>
                <C i="224">J7</C>
                <C i="225">J8</C>
                <C i="226">J9</C>
                <C i="227">J10</C>
                <C i="228">J11</C>
                <C i="229">J12</C>
                <C i="230">J13</C>
                <C i="231">J14</C>
                <C i="232">J15</C>
                <C i="233">J16</C>
                <C i="234">J17</C>
                <C i="235">J18</C>
                <C i="236">J19</C>
                <C i="237">J20</C>
                <C i="238">J21</C>
                <C i="239">J22</C>
                <C i="240">J23</C>
                <C i="241">J24</C>
                <C i="242">K1</C>
                <C i="243">K2</C>
                <C i="244">K3</C>
                <C i="245">K4</C>
                <C i="246">K5</C>
                <C i="247">K6</C>
                <C i="248">K7</C>
                <C i="249">K8</C>
                <C i="250">K9</C>
                <C i="251">K10</C>
                <C i="252">K11</C>
                <C i="253">K12</C>
                <C i="254">K13</C>
                <C i="255">K14</C>
                <C i="256">K15</C>
                <C i="257">K16</C>
                <C i="258">K17</C>
                <C i="259">K18</C>
                <C i="260">K19</C>
                <C i="261">K20</C>
                <C i="262">K21</C>
                <C i="263">K22</C>
                <C i="264">K23</C>
                <C i="265">K24</C>
                <C i="266">L1</C>
                <C i="267">L2</C>
                <C i="268">L3</C>
                <C i="269">L4</C>
                <C i="270">L5</C>
                <C i="271">L6</C>
                <C i="272">L7</C>
                <C i="273">L8</C>
                <C i="274">L9</C>
                <C i="275">L10</C>
                <C i="276">L11</C>
                <C i="277">L12</C>
                <C i="278">L13</C>
                <C i="279">L14</C>
                <C i="280">L15</C>
                <C i="281">L16</C>
                <C i="282">L17</C>
                <C i="283">L18</C>
                <C i="284">L19</C>
                <C i="285">L20</C>
                <C i="286">L21</C>
                <C i="287">L22</C>
                <C i="288">L23</C>
                <C i="289">L24</C>
                <C i="290">M1</C>
                <C i="291">M2</C>
                <C i="292">M3</C>
                <C i="293">M4</C>
                <C i="294">M5</C>
                <C i="295">M6</C>
                <C i="296">M7</C>
                <C i="297">M8</C>
                <C i="298">M9</C>
                <C i="299">M10</C>
                <C i="300">M11</C>
                <C i="301">M12</C>
                <C i="302">M13</C>
                <C i="303">M14</C>
                <C i="304">M15</C>
                <C i="305">M16</C>
                <C i="306">M17</C>
                <C i="307">M18</C>
                <C i="308">M19</C>
                <C i="309">M20</C>
                <C i="310">M21</C>
                <C i="311">M22</C>
                <C i="312">M23</C>
                <C i="313">M24</C>
                <C i="314">N1</C>
                <C i="315">N2</C>
                <C i="316">N3</C>
                <C i="317">N4</C>
                <C i="318">N5</C>
                <C i="319">N6</C>
                <C i="320">N7</C>
                <C i="321">N8</C>
                <C i="322">N9</C>
                <C i="323">N10</C>
                <C i="324">N11</C>
                <C i="325">N12</C>
                <C i="326">N13</C>
                <C i="327">N14</C>
                <C i="328">N15</C>
                <C i="329">N16</C>
                <C i="330">N17</C>
                <C i="331">N18</C>
                <C i="332">N19</C>
                <C i="333">N20</C>
                <C i="334">N21</C>
                <C i="335">N22</C>
                <C i="336">N23</C>
                <C i="337">N24</C>
                <C i="338">O1</C>
                <C i="339">O2</C>
                <C i="340">O3</C>
                <C i="341">O4</C>
                <C i="342">O5</C>
                <C i="343">O6</C>
                <C i="344">O7</C>
                <C i="345">O8</C>
                <C i="346">O9</C>
                <C i="347">O10</C>
                <C i="348">O11</C>
                <C i="349">O12</C>
                <C i="350">O13</C>
                <C i="351">O14</C>
                <C i="352">O15</C>
                <C i="353">O16</C>
                <C i="354">O17</C>
                <C i="355">O18</C>
                <C i="356">O19</C>
                <C i="357">O20</C>
                <C i="358">O21</C>
                <C i="359">O22</C>
                <C i="360">O23</C>
                <C i="361">O24</C>
                <C i="362">P1</C>
                <C i="363">P2</C>
                <C i="364">P3</C>
                <C i="365">P4</C>
                <C i="366">P5</C>
                <C i="367">P6</C>
                <C i="368">P7</C>
                <C i="369">P8</C>
                <C i="370">P9</C>
                <C i="371">P10</C>
                <C i="372">P11</C>
                <C i="373">P12</C>
                <C i="374">P13</C>
                <C i="375">P14</C>
                <C i="376">P15</C>
                <C i="377">P16</C>
                <C i="378">P17</C>
                <C i="379">P18</C>
                <C i="380">P19</C>
                <C i="381">P20</C>
                <C i="382">P21</C>
                <C i="383">P22</C>
                <C i="384">P23</C>
                <C i="385">P24</C>
                <C i="386"/>
            </R>
            <R i="3">
                <C i="0"/>
                <C i="1">23.6</C>
                <C i="2">98.264</C>
                <C i="3">251.789</C>
                <C i="4">456.882</C>
                <C i="5">800.867</C>
                <C i="6">402.521</C>
                <C i="7">1125.667</C>
                <C i="8">135.531</C>
                <C i="9">144.322</C>
                <C i="10">96.925</C>
                <C i="11">94.017</C>
                <C i="12">94.072</C>
                <C i="13">91.234</C>
                <C i="14">180.945</C>
                <C i="15">183.039</C>
                <C i="16">191.258</C>
                <C i="17">182.408</C>
                <C i="18">144.162</C>
                <C i="19">143.01</C>
                <C i="20">122.132</C>
                <C i="21">121.403</C>
                <C i="22">108.347</C>
                <C i="23">109.258</C>
                <C i="24">96.023</C>
                <C i="25">88.534</C>
                <C i="26">95.073</C>
                <C i="27">0.649</C>
                <C i="28">121.934</C>
                <C i="29">0.624</C>
                <C i="30">122.02</C>
                <C i="31">0.621</C>
                <C i="32">137.248</C>
                <C i="33">0.593</C>
                <C i="34">92.619</C>
                <C i="35">0.594</C>
                <C i="36">92.794</C>
                <C i="37">0.532</C>
                <C i="38">173.682</C>
                <C i="39">0.634</C>
                <C i="40">188.073</C>
                <C i="41">0.665</C>
                <C i="42">143.844</C>
                <C i="43">0.531</C>
                <C i="44">123.746</C>
                <C i="45">0.49</C>
                <C i="46">110.686</C>
                <C i="47">1181.821</C>
                <C i="48">94.908</C>
                <C i="49">1164.705</C>
                <C i="50">167.377</C>
                <C i="51">168.763</C>
                <C i="52">62.233</C>
                <C i="53">59.716</C>
                <C i="54">71.789</C>
                <C i="55">73.824</C>
                <C i="56">132</C>
                <C i="57">128.993</C>
                <C i="58">122.594</C>
                <C i="59">121.069</C>
                <C i="60">88.343</C>
                <C i="61">87.554</C>
                <C i="62">198.365</C>
                <C i="63">197.994</C>
                <C i="64">150.214</C>
                <C i="65">148.682</C>
                <C i="66">140.835</C>
                <C i="67">138.233</C>
                <C i="68">115.757</C>
                <C i="69">120.408</C>
                <C i="70">64.649</C>
                <C i="71">61.181</C>
                <C i="72">149.933</C>
                <C i="73">147.349</C>
                <C i="74">167.112</C>
                <C i="75">0.607</C>
                <C i="76">62.167</C>
                <C i="77">0.623</C>
                <C i="78">72.51</C>
                <C i="79">0.572</C>
                <C i="80">130.413</C>
                <C i="81">0.715</C>
                <C i="82">117.306</C>
                <C i="83">0.664</C>
                <C i="84">87.132</C>
                <C i="85">0.607</C>
                <C i="86">184.891</C>
                <C i="87">0.525</C>
                <C i="88">147.11</C>
                <C i="89">0.595</C>
                <C i="90">138.467</C>
                <C i="91">0.466</C>
                <C i="92">113.852</C>
                <C i="93">0.539</C>
                <C i="94">62.061</C>
                <C i="95">577.213</C>
                <C i="96">147.381</C>
                <C i="97">590.206</C>
                <C i="98">77.255</C>
                <C i="99">79.599</C>
                <C i="100">194.109</C>
                <C i="101">192.292</C>
                <C i="102">161.254</C>
                <C i="103">161.829</C>
                <C i="104">83.873</C>
                <C i="105">81.339</C>
                <C i="106">65.148</C>
                <C i="107">67.914</C>
                <C i="108">124.41</C>
                <C i="109">113.577</C>
                <C i="110">134.341</C>
                <C i="111">136.857</C>
                <C i="112">100.75</C>
                <C i="113">101.41</C>
                <C i="114">138.315</C>
                <C i="115">129.187</C>
                <C i="116">123.967</C>
                <C i="117">120.578</C>
                <C i="118">128.607</C>
                <C i="119">123.604</C>
                <C i="120">103.337</C>
                <C i="121">101.19</C>
                <C i="122">73.96</C>
                <C i="123">0.609</C>
                <C i="124">192.454</C>
                <C i="125">0.621</C>
                <C i="126">155.221</C>
                <C i="127">0.608</C>
                <C i="128">85.79</C>
                <C i="129">0.614</C>
                <C i="130">64.73</C>
                <C i="131">0.641</C>
                <C i="132">119.848</C>
                <C i="133">0.674</C>
                <C i="134">125.276</C>
                <C i="135">0.519</C>
                <C i="136">104.841</C>
                <C i="137">0.609</C>
                <C i="138">124.135</C>
                <C i="139">0.465</C>
                <C i="140">113.366</C>
                <C i="141">0.55</C>
                <C i="142">122.447</C>
                <C i="143">289.283</C>
                <C i="144">99.958</C>
                <C i="145">271.073</C>
                <C i="146">152.114</C>
                <C i="147">148.136</C>
                <C i="148">143.53</C>
                <C i="149">137.407</C>
                <C i="150">2.659</C>
                <C i="151">2.515</C>
                <C i="152">123.114</C>
                <C i="153">118.523</C>
                <C i="154">190.988</C>
                <C i="155">191.066</C>
                <C i="156">154.226</C>
                <C i="157">148.165</C>
                <C i="158">145.032</C>
                <C i="159">146.482</C>
                <C i="160">163.162</C>
                <C i="161">156.53</C>
                <C i="162">145.554</C>
                <C i="163">145.283</C>
                <C i="164">65.665</C>
                <C i="165">62.949</C>
                <C i="166">99.253</C>
                <C i="167">91.244</C>
                <C i="168">48.438</C>
                <C i="169">45.38</C>
                <C i="170">140.031</C>
                <C i="171">0.585</C>
                <C i="172">145.424</C>
                <C i="173">0.512</C>
                <C i="174">3.787</C>
                <C i="175">0.659</C>
                <C i="176">122.603</C>
                <C i="177">0.639</C>
                <C i="178">189.912</C>
                <C i="179">0.735</C>
                <C i="180">157.703</C>
                <C i="181">0.558</C>
                <C i="182">147.808</C>
                <C i="183">0.539</C>
                <C i="184">160.831</C>
                <C i="185">0.576</C>
                <C i="186">147.555</C>
                <C i="187">0.516</C>
                <C i="188">67.191</C>
                <C i="189">0.653</C>
                <C i="190">97.93</C>
                <C i="191">130.585</C>
                <C i="192">49.309</C>
                <C i="193">158.39</C>
                <C i="194">91.622</C>
                <C i="195">93.167</C>
                <C i="196">96.578</C>
                <C i="197">91.536</C>
                <C i="198">150.295</C>
                <C i="199">144.275</C>
                <C i="200">131.378</C>
                <C i="201">125.119</C>
                <C i="202">125.056</C>
                <C i="203">122.41</C>
                <C i="204">100.353</C>
                <C i="205">94.315</C>
                <C i="206">121.948</C>
                <C i="207">117.204</C>
                <C i="208">85.205</C>
                <C i="209">79.883</C>
                <C i="210">257.075</C>
                <C i="211">246.279</C>
                <C i="212">150.535</C>
                <C i="213">144.671</C>
                <C i="214">93.615</C>
                <C i="215">93.532</C>
                <C i="216">68.383</C>
                <C i="217">67.617</C>
                <C i="218">95.29</C>
                <C i="219">0.651</C>
                <C i="220">93.102</C>
                <C i="221">0.634</C>
                <C i="222">152.096</C>
                <C i="223">0.499</C>
                <C i="224">131.012</C>
                <C i="225">0.564</C>
                <C i="226">121.009</C>
                <C i="227">0.649</C>
                <C i="228">102.785</C>
                <C i="229">0.59</C>
                <C i="230">123.703</C>
                <C i="231">0.528</C>
                <C i="232">81.6</C>
                <C i="233">0.628</C>
                <C i="234">252.208</C>
                <C i="235">0.617</C>
                <C i="236">151.216</C>
                <C i="237">0.548</C>
                <C i="238">90.711</C>
                <C i="239">69.885</C>
                <C i="240">70.239</C>
                <C i="241">71.025</C>
                <C i="242">71.646</C>
                <C i="243">71.701</C>
                <C i="244">175.094</C>
                <C i="245">174.416</C>
                <C i="246">167.246</C>
                <C i="247">168.692</C>
                <C i="248">170.327</C>
                <C i="249">168.509</C>
                <C i="250">231.151</C>
                <C i="251">219.915</C>
                <C i="252">149.652</C>
                <C i="253">139.74</C>
                <C i="254">132.163</C>
                <C i="255">131.629</C>
                <C i="256">140.055</C>
                <C i="257">134.353</C>
                <C i="258">292.647</C>
                <C i="259">290.752</C>
                <C i="260">111.424</C>
                <C i="261">109.553</C>
                <C i="262">137.33</C>
                <C i="263">129.825</C>
                <C i="264">134.908</C>
                <C i="265">130.149</C>
                <C i="266">72.542</C>
                <C i="267">0.647</C>
                <C i="268">175.624</C>
                <C i="269">0.577</C>
                <C i="270">172.031</C>
                <C i="271">0.629</C>
                <C i="272">177.21</C>
                <C i="273">0.482</C>
                <C i="274">226.702</C>
                <C i="275">0.62</C>
                <C i="276">149.755</C>
                <C i="277">0.6</C>
                <C i="278">131.32</C>
                <C i="279">0.699</C>
                <C i="280">135.922</C>
                <C i="281">0.705</C>
                <C i="282">277.712</C>
                <C i="283">0.555</C>
                <C i="284">111.465</C>
                <C i="285">0.562</C>
                <C i="286">133.361</C>
                <C i="287">32.306</C>
                <C i="288">137.097</C>
                <C i="289">29.724</C>
                <C i="290">168.188</C>
                <C i="291">162.044</C>
                <C i="292">174.282</C>
                <C i="293">173.46</C>
                <C i="294">118.667</C>
                <C i="295">121.618</C>
                <C i="296">110.104</C>
                <C i="297">105.967</C>
                <C i="298">124.337</C>
                <C i="299">126.589</C>
                <C i="300">114.919</C>
                <C i="301">115.438</C>
                <C i="302">126.04</C>
                <C i="303">125.081</C>
                <C i="304">484.342</C>
                <C i="305">481.306</C>
                <C i="306">92.588</C>
                <C i="307">87.08</C>
                <C i="308">209.826</C>
                <C i="309">202.772</C>
                <C i="310">118.595</C>
                <C i="311">116.3</C>
                <C i="312">114.16</C>
                <C i="313">110.568</C>
                <C i="314">170.885</C>
                <C i="315">0.564</C>
                <C i="316">177.115</C>
                <C i="317">0.805</C>
                <C i="318">120.573</C>
                <C i="319">0.852</C>
                <C i="320">114.131</C>
                <C i="321">0.452</C>
                <C i="322">131.849</C>
                <C i="323">0.685</C>
                <C i="324">115.961</C>
                <C i="325">0.65</C>
                <C i="326">122.13</C>
                <C i="327">0.582</C>
                <C i="328">479.514</C>
                <C i="329">0.683</C>
                <C i="330">91.153</C>
                <C i="331">0.59</C>
                <C i="332">213.814</C>
                <C i="333">0.644</C>
                <C i="334">117.526</C>
                <C i="335">18.166</C>
                <C i="336">118.224</C>
                <C i="337">23.834</C>
                <C i="338">114.21</C>
                <C i="339">120.113</C>
                <C i="340">87.466</C>
                <C i="341">87.785</C>
                <C i="342">118.164</C>
                <C i="343">117.511</C>
                <C i="344">118.692</C>
                <C i="345">118.782</C>
                <C i="346">121.788</C>
                <C i="347">120.187</C>
                <C i="348">164.791</C>
                <C i="349">164.182</C>
                <C i="350">211.596</C>
                <C i="351">212.938</C>
                <C i="352">228.976</C>
                <C i="353">228.836</C>
                <C i="354">213.659</C>
                <C i="355">198.626</C>
                <C i="356">60.412</C>
                <C i="357">58.416</C>
                <C i="358">65.667</C>
                <C i="359">61.491</C>
                <C i="360">3.274</C>
                <C i="361">3.254</C>
                <C i="362">118.792</C>
                <C i="363">0.576</C>
                <C i="364">83.707</C>
                <C i="365">0.659</C>
                <C i="366">118.586</C>
                <C i="367">0.411</C>
                <C i="368">115.641</C>
                <C i="369">0.618</C>
                <C i="370">115.018</C>
                <C i="371">0.55</C>
                <C i="372">160.197</C>
                <C i="373">0.654</C>
                <C i="374">214.499</C>
                <C i="375">0.609</C>
                <C i="376">236.077</C>
                <C i="377">0.539</C>
                <C i="378">192.757</C>
                <C i="379">0.541</C>
                <C i="380">60.444</C>
                <C i="381">0.555</C>
                <C i="382">64.835</C>
                <C i="383">1.722</C>
                <C i="384">3.501</C>
                <C i="385">1.658</C>
                <C i="386"/>
            </R>

        </Data>
    </Data>
    <Attachments>
        <Attachment Encoding="base64" Location="element" Name="labcorp.txt"/>
    </Attachments>
</Message>

1 个答案:

答案 0 :(得分:2)

我建议采用完全不同的方法对节点进行分组:

XSLT 2.0

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="R">
    <xsl:variable name="C" select="C" />
    <root>
        <xsl:for-each select="1 to 96">
            <sample>
                <group pos="{current()}">
                    <Quant1 WellID="?">
                        <xsl:value-of select="$C[@i = 2 * current()]"/>
                    </Quant1>
                    <Quant2 WellID="?">
                        <xsl:value-of select="$C[@i = 2 * current() + 1]"/>
                    </Quant2>
                    <Quant3 WellID="?">
                        <xsl:value-of select="$C[@i = 2 * current() + 24]"/>
                    </Quant3>
                </group>
            </sample>
        </xsl:for-each> 
    </root>  
</xsl:template>

</xsl:stylesheet>

应用于您的示例,结果将是:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <sample>
      <group pos="1">
         <Quant1 WellID="?">98.264</Quant1>
         <Quant2 WellID="?">251.789</Quant2>
         <Quant3 WellID="?">95.073</Quant3>
      </group>
   </sample>
   <sample>
      <group pos="2">
         <Quant1 WellID="?">456.882</Quant1>
         <Quant2 WellID="?">800.867</Quant2>
         <Quant3 WellID="?">121.934</Quant3>
      </group>
   </sample> 
   ...
   <sample>
      <group pos="96">
         <Quant1 WellID="?">49.309</Quant1>
         <Quant2 WellID="?">158.39</Quant2>
         <Quant3 WellID="?">68.383</Quant3>
      </group>
   </sample>
</root>

请注意,这与您问题中显示的输出示例不同 - 但正确的是,第二组显示来自C元素的值,其中@ i = 4,@ i = 5和@ i = 28。< / p>

我建议您发布有关我的输出中当前缺少的其他属性的单独问题。