Как применить if-else на foreach l oop, используя xslt - PullRequest
0 голосов
/ 13 марта 2020

Мне нужно отфильтровать / присвоить данные из полезной нагрузки тегам xml на основе условия if else с использованием xslt.

Мне нужно применить if-else для тега " RIMSTS " Я использую приведенный ниже код для применения. Но он не работает. Он выбрасывает недопустимый xslt во время проверки. Может ли кто-нибудь помочь мне с правильным синтаксисом или правильным способом применения if-else в for-each.

<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>

1 Ответ

2 голосов
/ 13 марта 2020
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>
...