2017-02-15 16 views
0

Выбирать утверждение является положительным при тестировании = "./ Категория", даже если/Категория пуста.XSL Выберите неработающий

Значения значений категории <! [CDATA []]> если пусто и <! [CDATA [some_code]]> если заполнено.

Кажется, что CDATA оставляет «» значение или что-то в этом роде.

 <xsl:when test="./Category"> 
      <ref type="category"><xsl:value-of select="./Category" /></ref> 
    </xsl:when> 
    <xsl:otherwise> 
     <id_category_default>2</id_category_default> 
    </xsl:otherwise> 

</xsl:choose> 

ответ

3

Тест test="./Category" просто тестирования для существующего элемента с именем Category в вашем XML, и не принимает в дочерние узлы этого элемента.

тест вы хотите, вероятно, это (Обратите внимание, что ./ не нужен здесь)

<xsl:when test="Category[normalize-space()]"> 

Это будет игнорировать текст, состоящий из ничего, кроме белого пространства. Если вы считаете наличие белого пространства «непустым», попробуйте это вместо этого ...

<xsl:when test="Category[. != '']">