私は

2017-10-31 28 views
1

だとき、私は私は

私のXMLを持つレコードを兄弟と私は兄弟の値を取得しようとしていますの束を持つXML文書を持っている:

<Transaction> 
    <Record Name = "SENDER" RecNum = "1"> 
     <Segment_Tag>SENDER</Segment_Tag> 
     <SENDER01>5499953664103</SENDER01> 
     <SENDER02>UTILMD</SENDER02> 
    </Record> 
    <Record Name = "BGM" RecNum = "2"> 
     <Segment_Tag>BGM</Segment_Tag> 
     <BGM01>E44</BGM01> 
     <BGM03>260</BGM03> 
     <BGM05>SIS20170802181883607</BGM05> 
     <BGM06>9</BGM06> 
     <BGM07>NA</BGM07> 
    </Record> 
    <Record Name = "DTM" RecNum = "3"> 
     <Segment_Tag>DTM</Segment_Tag> 
     <DTM01>137</DTM01> 
     <DTM02>201708021227</DTM02> 
     <DTM03>203</DTM03> 
    </Record> 
    <Record Name = "DTM" RecNum = "4"> 
     <Segment_Tag>DTM</Segment_Tag> 
     <DTM01>735</DTM01> 
     <DTM02>+0100</DTM02> 
     <DTM03>406</DTM03> 
    </Record> 
    <Record Name = "MKS" RecNum = "5"> 
     <Segment_Tag>MKS</Segment_Tag> 
     <MKS01>23</MKS01> 
    </Record> 
    <Record Name = "NAD" RecNum = "6"> 
     <Segment_Tag>NAD</Segment_Tag> 
     <NAD01>MR</NAD01> 
     <NAD02>5499953664103</NAD02> 
     <NAD04>9</NAD04> 
    </Record> 
    <Record Name = "NAD" RecNum = "7"> 
     <Segment_Tag>NAD</Segment_Tag> 
     <NAD01>MS</NAD01> 
     <NAD02>5414490000504</NAD02> 
     <NAD04>9</NAD04> 
    </Record> 
    <Record Name = "IDE" RecNum = "8"> 
     <Segment_Tag>IDE</Segment_Tag> 
     <IDE01>24</IDE01> 
     <IDE02>SIS20170802181883607</IDE02> 
     <Record Name = "IDEDTM" RecNum = "9"> 
      <Segment_Tag>IDEDTM</Segment_Tag> 
      <DTM201>97</DTM201> 
      <DTM202>201708</DTM202> 
      <DTM203>203</DTM203> 
     </Record> 
     <Record Name = "STS" RecNum = "10"> 
      <Segment_Tag>STS</Segment_Tag> 
      <STS01>7</STS01> 
      <STS02>64</STS02> 
      <STS05>BA5</STS05> 
      <STS06>BEL</STS06> 
      <STS07>260</STS07> 
     </Record> 
     <Record Name = "LOC" RecNum = "11"> 
      <Segment_Tag>LOC</Segment_Tag> 
      <LOC01>172</LOC01> 
      <LOC02>541449020703505315</LOC02> 
      <LOC04>9</LOC04> 
     </Record> 
     <Record Name = "IDERFF" RecNum = "12"> 
      <Segment_Tag>IDERFF</Segment_Tag> 
      <RFF01>TN</RFF01> 
      <RFF02>281945</RFF02> 
     </Record> 
     <Record Name = "IDENAD" RecNum = "13"> 
      <Segment_Tag>IDENAD</Segment_Tag> 
      <NAD101>DDQ</NAD101> 
      <NAD102>5425037700016</NAD102> 
      <NAD104>9</NAD104> 
     </Record> 
    </Record> 
    <Record Name = "BGM" RecNum = "14"> 
     <Segment_Tag>BGM</Segment_Tag> 
     <BGM01>414</BGM01> 
     <BGM05>ARI20170802225703376</BGM05> 
     <BGM06>9</BGM06> 
     <BGM07>NA</BGM07> 
    </Record> 
    <Record Name = "DTM" RecNum = "15"> 
     <Segment_Tag>DTM</Segment_Tag> 
     <DTM01>137</DTM01> 
     <DTM02>201708021228</DTM02> 
     <DTM03>203</DTM03> 
    </Record> 
    <Record Name = "DTM" RecNum = "16"> 
     <Segment_Tag>DTM</Segment_Tag> 
     <DTM01>735</DTM01> 
     <DTM02>+0100</DTM02> 
     <DTM03>406</DTM03> 
    </Record> 
    <Record Name = "MKS" RecNum = "17"> 
     <Segment_Tag>MKS</Segment_Tag> 
     <MKS01>23</MKS01> 
    </Record> 
    <Record Name = "NAD" RecNum = "18"> 
     <Segment_Tag>NAD</Segment_Tag> 
     <NAD01>MR</NAD01> 
     <NAD02>5499953664103</NAD02> 
     <NAD04>9</NAD04> 
    </Record> 
    <Record Name = "NAD" RecNum = "19"> 
     <Segment_Tag>NAD</Segment_Tag> 
     <NAD01>MS</NAD01> 
     <NAD02>5414490000504</NAD02> 
     <NAD04>9</NAD04> 
    </Record> 
    <Record Name = "IDE" RecNum = "20"> 
     <Segment_Tag>IDE</Segment_Tag> 
     <IDE01>24</IDE01> 
     <IDE02>ARI20170802225703376</IDE02> 
     <Record Name = "IDEDTM" RecNum = "21"> 
      <Segment_Tag>IDEDTM</Segment_Tag> 
      <DTM201>92</DTM201> 
      <DTM202>201707142300</DTM202> 
      <DTM203>203</DTM203> 
     </Record> 
     <Record Name = "STS" RecNum = "22"> 
      <Segment_Tag>STS</Segment_Tag> 
      <STS01>E01</STS01> 
      <STS03>260</STS03> 
      <STS04>39</STS04> 
      <STS05>E35</STS05> 
      <STS07>260</STS07> 
     </Record> 
     <Record Name = "LOC" RecNum = "23"> 
      <Segment_Tag>LOC</Segment_Tag> 
      <LOC01>172</LOC01> 
      <LOC02>541449060016130774</LOC02> 
      <LOC04>9</LOC04> 
     </Record> 
     <Record Name = "IDERFF" RecNum = "24"> 
      <Segment_Tag>IDERFF</Segment_Tag> 
      <RFF01>TN</RFF01> 
      <RFF02>172140000045770</RFF02> 
     </Record> 
     <Record Name = "IDECCI" RecNum = "25"> 
      <Segment_Tag>IDECCI</Segment_Tag> 
      <CCI02>E14</CCI02> 
      <CCI04>260</CCI04> 
      <Record Name = "IDECAV" RecNum = "26"> 
       <Segment_Tag>IDECAV</Segment_Tag> 
       <CAV01>B18</CAV01> 
       <CAV02>BEL</CAV02> 
       <CAV03>260</CAV03> 
      </Record> 
     </Record> 
     <Record Name = "IDENAD" RecNum = "27"> 
      <Segment_Tag>IDENAD</Segment_Tag> 
      <NAD101>IT</NAD101> 
      <NAD111>RUE JOSEPH DECOOMAN</NAD111> 
      <NAD112>89 221</NAD112> 
      <NAD115>GREZ-DOICEAU</NAD115> 
      <NAD116>1390</NAD116> 
      <NAD117>BE</NAD117> 
     </Record> 
    </Record> 
</Transaction> 

マイコード:

<xsl:for-each select="Transaction/Record[@Name='IDE']" > 
    <xsl:choose> 
     <xsl:when test="../Record[@Name='BGM']/BGM01.='414'"> 
       <xsl:call-template name="ChangeResponse"/> 
     </xsl:when> 
     <xsl:when test="../Record[@Name='BGM']/BGM01.='406'"> 
       <xsl:call-template name="DropRequest"/> 
     </xsl:when> 
    </xsl:choose> 
</xsl:for-each> 

問題は、BGMとIDEが兄弟であり、IDEが現在のノードである場合、BGMレコードに到達するために親に移動する必要があるため、最初のB GM値だけが返されることです。私はIDE値の直前にあるBGM値を取得する方法を見つけることを試みています。私は先行兄弟を使ってみましたが、前のIDEの値とその前のBGMの値を調べています。私は各IDEの現在のノード内に留まり、以前のBGMの値を評価する必要がありますが、BGMはIDEの兄弟ですので、IDEで始めるときにxpathを使ってB GMを取得する方法がわかりません。

答えて

1

xsl:for-each select="Transaction/Record[@Name='IDE']"の中には、を使用して、現在のから始まるそのような最初の兄弟を見つけることができます。したがって、Record Name = "IDE" RecNum = "8"のサンプルでは、​​Record Name = "BGM" RecNum = "2"が選択されます。

+0

最初はBGMの後に[1]を使用していませんでしたが、動作していませんでしたが、[1]を持つ別の投稿が見つかりました。 –