如何使用 xslt 在 foreach 循环上应用 if-else

How to apply if-else on foreach loop using xslt

我必须根据 if else 条件使用 xslt filter/assign 数据从负载到 xml 标签。

我必须在“RIMSTS”标签上应用 if-else,我使用下面的代码 apply.But 它不是 working.It在 validation.Can 期间抛出一些无效的 xslt 有人帮助我使用正确的语法或正确的方法在 for-each 中应用 if-else。

<xsl:for-each select="message/lines">
                    <LINE_SEG>
                        <xsl:if test="not(normalize-space(costAmount)) = ''">
                        <CSTMS_CST>
                          <xsl:value-of select="normalize-space(costAmount)"/>
                        </CSTMS_CST>
                        </xsl:if>
                        <PO_CHANNEL></PO_CHANNEL>
                      <xsl:choose>
                      <xsl:when test="linestatusCd = 100">
                        <RIMSTS>OPEN</RIMSTS>
                      </xsl:when>
                      <xsl:when test="linestatusCd= 200 or 300">
                        <RIMSTS>CLOSED</RIMSTS>
                      </xsl:when>
                      </LINE_SEG>
                    </xsl:for-each>
linestatusCd= 200 or 300

看错了,你的意思可能是

linestatusCd = 200 or linestatusCd = 300

您还没有关闭 <choose> 元素。

<xsl:for-each select="message/lines">
    <LINE_SEG>
        <xsl:if test="not(normalize-space(costAmount)) = ''">
        <CSTMS_CST>
          <xsl:value-of select="normalize-space(costAmount)"/>
        </CSTMS_CST>
        </xsl:if>
        <PO_CHANNEL></PO_CHANNEL>
      <xsl:choose>
      <xsl:when test="linestatusCd = 100">
        <RIMSTS>OPEN</RIMSTS>
      </xsl:when>
      <xsl:when test="linestatusCd = 200 or linestatusCd = 300">
        <RIMSTS>CLOSED</RIMSTS>
      </xsl:when>
      </xsl:choose>
   </LINE_SEG>
</xsl:for-each>