Я пытаюсь преобразовать xml в желаемый xml, используя xslt. Но я не могу использовать для - каждый правильно, и значения возвращаются нулевые. Может ли кто-нибудь помочь с преобразованием xslt.
Вот * XSLT , который я использую
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<INB>
<SEG>
<TRN>RAN</TRN>
<VER>8.3</VER>
<WHS>699</WHS>
<xsl:for-each select="message/Lines">
<LINE>
<SENAM>LINE_SEG</SENAM>
<INVSLN>0</INVSLN>
<EXPQTY>0</EXPQTY>
<xsl:if test="not(normalize-space(message/Lines/Nbr)) = ''">
<NUM>
<xsl:value-of select="normalize-space(message/Lines/Nbr)"/>
</NUM>
</xsl:if>
<STS>A</STS>
<PRT>----</PRT>
</LINE>
</xsl:for-each>
</SEG>
</INB>
</xsl:template>
</xsl:stylesheet>
Вот ввод XML:
<message>
<PoNbr>451617926</PoNbr>
<whCode/>
<unitCode/>
<dnrbTime/>
<Lines>
<Nbr>451617926</Nbr>
</Lines>
<Lines>
<Nbr>2</Nbr>
</Lines>
</message>
Ниже приведен вывод, который он возвращает
В приведенном ниже выводе, который он возвращает, отсутствует Nbr, который отображается с помощью каждое утверждение.
Вывод:
<INB>
<SEG>
<TRN>RAN</TRN>
<VER>8.3</VER>
<WHS>699</WHS>
<LINE>
<SENAM>LINE_SEG</SENAM>
<INVSLN>0</INVSLN>
<EXPQTY>0</EXPQTY>
<NUM/>
<STS>A</STS>
<PRT>----</PRT>
</LINE>
<LINE>
<SENAM>LINE_SEG</SENAM>
<INVSLN>0</INVSLN>
<EXPQTY>0</EXPQTY>
<NUM/>
<STS>A</STS>
<PRT>----</PRT>
</LINE>
</SEG>
</INB>
Ожидаемый вывод:
<INB>
<SEG>
<TRN>RAN</TRN>
<VER>8.3</VER>
<WHS>699</WHS>
<LINE>
<SENAM>LINE_SEG</SENAM>
<INVSLN>0</INVSLN>
<EXPQTY>0</EXPQTY>
<NUM>451617926</NUM>
<STS>A</STS>
<PRT>----</PRT>
</LINE>
<LINE>
<SENAM>LINE_SEG</SENAM>
<INVSLN>0</INVSLN>
<EXPQTY>0</EXPQTY>
<NUM>2</NUM>
<STS>A</STS>
<PRT>----</PRT>
</LINE>
</SEG>
</INB>