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

问题描述 投票:0回答:1

我必须根据使用xslt的条件,将数据从有效负载过滤/分配给xml标签。

我必须在“ RIMSTS”标签上加上if-else,我正在使用下面的代码来应用。但是它不起作用。它在验证期间抛出了一些无效的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>
xml xslt xslt-1.0 xslt-2.0
1个回答
2
投票
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>
© www.soinside.com 2019 - 2024. All rights reserved.