私のプロジェクトでは、以下のように最終的な出力構造 xml を取得する必要があります。しかし、私はこのコードでいくつかの問題に直面しています。
<Endorsement>
<TL>STNDBY/CHG FEE/NO RFND/</TL>
<TL>CXL BY FLT DT/</TL>
</Endorsement>
<LText TopicId="MISCELLANEOUS">
<TL>01 NVB28JUL/NVA28JUL</TL>
</LText>
ここに入力xmlファイルがあります
<InfoMsg>
<AppNum>0</AppNum>
<MsgType>2</MsgType>
<Text>LAST DATE TO PURCHASE TICKET: 06JUN13</Text>
</InfoMsg>
<InfoMsg>
<UniqueKey>0001</UniqueKey>
<Lang>0</Lang>
<Text>E-TKT REQUIRED</Text>
</InfoMsg>..............
上記の出力構造を実現するには、以下のコードを使用します
<xsl:for-each select="../InfoMsg">
<xsl:choose>
<xsl:when test="MsgType='01' or MsgType='1'">
<xsl:element name="Endorsement">
<xsl:element name="TL">
<xsl:value-of select="Text"/>
</xsl:element>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="LText">
<xsl:attribute name="TopicId">
<xsl:text>MISCELLANEOUS</xsl:text>
</xsl:attribute>
<xsl:element name="TL">
<xsl:value-of select="Text"/>
</xsl:element>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
ここでのロジックは、各 Info Msg タグについて、MSgType が 01 または 1 に等しいかどうかを確認する必要があります。そうである場合は、Endorsement タグを作成します。そうでない場合は、Ltext タグを作成する必要があります。 .
しかし、それは私に以下の出力を与えます
- <Endorsement>
<TL>STNDBY/CHG FEE/NO RFND/</TL>
</Endorsement>
- <Endorsement>
<TL>CXL BY FLT DT/</TL>
</Endorsement>
- <LText TopicId="MISCELLANEOUS">
<TL>01 NVB28JUL/NVA28JUL</TL>
</LText>
- <LText TopicId="MISCELLANEOUS">
<TL>02 NVB28JUL/NVA28JUL</TL>
</LText>
- <LText TopicId="MISCELLANEOUS">
<TL>LAST DATE TO PURCHASE TICKET: 26JUN13</TL>
</LText>
- <LText TopicId="MISCELLANEOUS">
<TL>E-TKT REQUIRED</TL>
</LText>
- <LText TopicId="MISCELLANEOUS">
<TL>ADDITIONAL TAXES, SURCHARGES, OR FEES MAY APPLY</TL>
</LText>
ここでは、承認タグが複数回来ていますが、これは必須ではありません。一度だけ来るべきです。
Pls は、それを取得するためにコードにどのような変更を加えることができるかを提案します。これを行う代替方法または方法はありますか。
ありがとうアスマ