xsl: значение не работает - PullRequest
2 голосов
/ 28 декабря 2010

У меня небольшая проблема с этим фрагментом кода в моем Xsl.

<xsl:if test="ShippingName != ''">
                <tr>
                    <td colspan="6" style="border:none;" align="right">
                        <strong>Shipping Via</strong>
                    </td>
                    <td align="right">
                        <xsl:value-of select="ShippingName" />
                    </td>
                </tr>
              </xsl:if>

Он проходит тестовое условие (ShippingName! = '') И назначает стиль 'td', но в тот момент, когда я отображаю значение, которое содержит этот элемент (), он ничего не отображает.

Любые идеи, почему это может происходить. Спасибо.

1 Ответ

2 голосов
/ 28 декабря 2010

Одной из возможных причин такого поведения является то, что строковое значение ShippingName состоит только из пробельных символов.

Решение

Либо использовать :

<xsl:strip-space elements="ShippingName"/>

или замените :

<xsl:if test="ShippingName != ''"> 

с

<xsl:if test="normalize-space(ShippingName)"> 

Стандартная функция XPath normalize-space создает новую строку из своего аргумента someString, в которой все начальные и конечные пробелы отбрасываются, а любые промежуточные пробелы заменяются одиночный пробел. В случае, если someString состоит только из пробельных символов, все они отбрасываются, и тест для пустого укуса равен false(), потому что по определению boolean('') равен false().

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