가 나는나는 기록을 형제의 무리가있는 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에서 시작할 때 Bpathm을 얻기 위해 xpath를 사용하는 방법을 잘 모르겠습니다.
처음에는 BGM 뒤에 [1]을 사용하지 않았고 작동하지 않지만 [1]이 (가)있는 다른 게시물을 발견했습니다. –