Почему «xsl: if test» не работает на плагине Barcode4j - PullRequest
0 голосов
/ 17 января 2019

Добрый день всем участникам! У меня проблема с проверкой значения штрих-кода. Сначала я покажу вам xsl и xml-код, а затем объясню проблему. XSL код:

<fo:table-cell  font-size="7" padding="0.5mm" border-width="0.2mm" border-style="transparent">
                                    <fo:block>
                                        <xsl:if test="gsmsg/barcode">
                                            <fo:block>
                                              <fo:instream-foreign-object>
                                              <xsl:variable name="Barcod">
                                              <xsl:value-of select="gsmsg/barcode"/>
                                              </xsl:variable>
                                                        <barcode:barcode xmlns:barcode="http://barcode4j.krysalis.org/ns"
                                                         message="{$Barcod}" orientation="0">
                                                        <barcode:code128>
                                                    <barcode:height>8mm</barcode:height>
                                                </barcode:code128>
                                            </barcode:barcode>
                                              </fo:instream-foreign-object>
                                            </fo:block>
                                        </xsl:if>
                                    </fo:block>
                                </fo:table-cell>

Исходный код XML:

<gsmsg xmlns="">
    <IdentificativoSdI>169077607</IdentificativoSdI>
    <NomeFile>IT01942890995.xml</NomeFile>
    <Formato>FPR12</Formato>
    <MessageId>1185389295</MessageId>
    <TentativiInvio>1</TentativiInvio>
    <Lotto>405</Lotto>
    <attpass>P</attpass>
    <Versione>0.7</Versione>
    <TipoMsg>DO</TipoMsg>
    <barcode/>
    <note/>
</gsmsg>

Значение штрих-кода пусто. С точки зрения теории <xsl:if test="gsmsg/barcode"> необходимо проверить, есть ли значение, а если нет, то fop не читает плагин Barcode4j. В моем случае <xsl:if test="gsmsg/barcode"> не работает, потому что продолжает читать плагин Barcode4j, и печать падает из-за того, что параметр "message" штрих-кода не может быть пустым. Почему XSL: если не работает в моем дело? Пожалуйста, помогите мне,

С уважением, Marco

1 Ответ

0 голосов
/ 17 января 2019

С точки зрения теории,

<xsl:if test="gsmsg/barcode">

проверка на наличие элемента barcode.

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

<xsl:if test="string(gsmsg/barcode)">

или

<xsl:if test="gsmsg/barcode/text()">
...