2016-01-27 193 views
0

我有xslt的這個問題。樣式表中有一個名爲misctables的表格,它放在一個變量miscTables中。例如在節點基於元素值的xslt屬性值

<row> 
        <col id="_96PLATE">A01</col> 
        <col id="_384PLATE">A1,A2,B1</col> 
        <col id="TYPE">PATIENT</col> 
       </row> 

id =「_ 384PLATE」具有值A1,A2,B1。當我標記並將其與xml進行比較時,我保存了R [@i = 2]/C/@ i屬性的值。在這種情況下,我需要獲得價值2,3,26

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="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> 
     </Data> 
    </Data> 
    <Attachments> 
     <Attachment Encoding="base64" Location="element" Name="labcorp.txt"/> 
    </Attachments> 
</Message> 

XSLT

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet exclude-result-prefixes="t saxon" version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:t="http://softcomputer.com/SoftGene/DI" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" extension-element-prefixes="saxon"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" exclude-result-prefixes="#all"/> 
    <t:trn> 
     <misctables saName="PLATEMAP"> 
      <table name="PLATEMAP" forcesynch="false" hidden="false" deprecated="false"> 
       <header> 
        <col id="_96PLATE" caption="96 Plate" unique="false" deprecated="false" grouping="false"/> 
        <col id="_384PLATE" caption="384 Plate" unique="false" deprecated="false" grouping="false"/> 
        <col id="TYPE" caption="Sample Type" unique="false" deprecated="false" grouping="false"/> 
       </header> 
       <row> 
        <col id="_96PLATE">A01</col> 
        <col id="_384PLATE">A1,A2,B1</col> 
        <col id="TYPE">PATIENT</col> 
       </row> 
       <row> 
        <col id="_96PLATE">B01</col> 
        <col id="_384PLATE">C1,C2,D2</col> 
        <col id="TYPE">PATIENT</col> 
       </row> 
       <row> 
        <col id="_96PLATE">C01</col> 
        <col id="_384PLATE">E1,E2,F1</col> 
        <col id="TYPE">PATIENT</col> 
       </row> 
       <row> 
        <col id="_96PLATE">A11</col> 
        <col id="_384PLATE">A21,A22,B21</col> 
        <col id="TYPE">PATIENT</col> 
       </row> 
       <row> 
        <col id="_96PLATE">CRTLA</col> 
        <col id="_384PLATE">A22,A24</col> 
        <col id="TYPE">CONTROL</col> 
       </row> 
       <row> 
        <col id="_96PLATE">CRTLB</col> 
        <col id="_384PLATE">D22,D24</col> 
        <col id="TYPE">CONTROL</col> 
       </row> 
       <row> 
        <col id="_96PLATE">CRTLC</col> 
        <col id="_384PLATE">F22,F24</col> 
        <col id="TYPE">CONTROL</col> 
       </row> 
       <row> 
        <col id="_96PLATE">CRTLD</col> 
        <col id="_384PLATE">H22,H24</col> 
        <col id="TYPE">CONTROL</col> 
       </row> 
       <row> 
        <col id="_96PLATE">CRTLE</col> 
        <col id="_384PLATE">J22,J24</col> 
        <col id="TYPE">CONTROL</col> 
       </row> 
       <row> 
        <col id="_96PLATE">CRTLF</col> 
        <col id="_384PLATE">L22,L24</col> 
        <col id="TYPE">CONTROL</col> 
       </row> 
       <row> 
        <col id="_96PLATE">CRTLG</col> 
        <col id="_384PLATE">N22,N24</col> 
        <col id="TYPE">CONTROL</col> 
       </row> 
       <row> 
        <col id="_96PLATE">CRTLH</col> 
        <col id="_384PLATE">P22,P24</col> 
        <col id="TYPE">CONTROL</col> 
       </row> 
      </table> 
      <outer-class> 
       <FORMATS>FORMATS</FORMATS> 
      </outer-class> 
     </misctables> 
    </t:trn> 
    <xsl:variable name="miscTables" select="document('')//t:trn/misctables"/> 
    <xsl:variable name="PLATEMAP" select="$miscTables/table[@name = 'PLATEMAP']"/> 
    <xsl:template match="/Message"> 
     <PLATEMAP> 
      <xsl:apply-templates select="Data/Data"/> 
     </PLATEMAP> 
    </xsl:template> 
    <xsl:template match="Data"> 
     <xsl:variable name="map" select="R[@i = 2]"/> 
     <xsl:variable name="map" select="R[@i = 2]"/> 
     <xsl:for-each select="$miscTables/table/row"> 
      <sample> 
       <xsl:attribute name="input_pos" select="col[@id = '_96PLATE']"/> 
       <xsl:variable name="plate384" select="tokenize(col[@id = '_384PLATE'], ',')"/> 
       <xsl:for-each select="$plate384"> 
        <xsl:variable name="currentWell" select="."/> 
        <Rec> 
         <xsl:value-of select="$map[C = $currentWell]/@i"/> 
        </Rec> 
       </xsl:for-each> 
      </sample> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

提前非常感謝。

回答

0

的問題是,你是不是選擇在地圖上的Ç節點,因此,如果您改變這一行:

<xsl:value-of select="$map[C = $currentWell]/@i"/> 

要:

<xsl:value-of select="$map/C[. = $currentWell]/@i"/> 

你會得到預期的結果。

+0

謝謝。你是一個拯救生命的人。 – user3269443