xsl: choose - жестко закодированные 0 добавляются в конец строки XSLT - PullRequest
0 голосов
/ 22 октября 2019

У меня проблема, которую я не могу выяснить в XLST, где есть жестко закодированные 0, добавляемые в конец строки, к которой я не обращаюсь. Я использую элемент выбора для подсказки размещения строки или для выбора трех нулей.

Может кто-нибудь сказать в моем коде, что я делаю неправильно? См. Ниже:

<xsl:for-each select="Export/Record">
        <xsl:if test="DebitAmount!=0 and DebitAmount!=''">
            <xsl:value-of select="ChargedCorpLedgerCode" /><xsl:text>,</xsl:text>
            <xsl:value-of select="DepartmentLedgerCode" /><xsl:text>,</xsl:text>
            <xsl:value-of select="CategoryJournalNumber" /><xsl:text>,</xsl:text>
            <xsl:value-of select="PFAM" /><xsl:text>&#0009;0000,</xsl:text>
            <xsl:value-of select="LOC" /><xsl:text>&#0009;0000,</xsl:text>
            <xsl:value-of select="ACTV" /><xsl:text>&#0009;0000,</xsl:text>
            <xsl:value-of select="CLIENT"/><xsl:text>&#0009;0000000,</xsl:text>
         <xsl:choose>
          <xsl:when test="ProjectLedgerCode=null">
           <xsl:value-of select="ProjectLedgerCode" /><xsl:text>,</xsl:text>
          </xsl:when>
           <xsl:otherwise>
            <xsl:value-of select="ProjectLedgerCode" /><xsl:text>&#0009;000,</xsl:text>
           </xsl:otherwise>
         </xsl:choose>
            <xsl:value-of select="DebitAmount" /><xsl:text>,</xsl:text>
            <xsl:value-of select="''" /><xsl:text>,</xsl:text>
            <xsl:value-of select="CategoryDesc" /><xsl:text>,</xsl:text>
            <xsl:text>&#xD;&#xA;</xsl:text>
        </xsl:if>

мой результат выглядит следующим образом, где 000 добавляются правильно, когда столбец пустой, но когда это не так, он добавляет ProjectLedgerCode + 000

enter image description here

1 Ответ

0 голосов
/ 22 октября 2019

Этот тест:

<xsl:when test="ProjectLedgerCode=null">

вернет true, если строковое значение ProjectLedgerCode равно строковому значению элемента-родителя null.

Если вы хотите проверить на ProjectLedgerCode отсутствие строкового значения, используйте:

<xsl:when test="ProjectLedgerCode=''">

или:

<xsl:when test="not(string(ProjectLedgerCode))">

Кроме того,Я считаю, что ваши результаты перепутаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...