2013-03-25 5 views
3

У меня есть следующее, которое проверяет строку в xml ... однако мне нужно создать еще один тест для проверки «Null» или без текста внутри переменной $validItems на 1-й ...XSLT/XPath test для 'Null'

<xsl:if test="$validItems[(Caption | CalltoAction)[string(.)]]"> 
<div class="text"> 
    <xsl:choose> 
    <xsl:when test="$horizontal"> 
     <div class="holder"> 
     <div class="frame"> 
      <div class="slides-descriptions"> 
      <xsl:apply-templates select="$validItems" mode="horizontal"/> 
      </div> 
      <div class="switcher"/> 
     </div> 
     </div> 
    </xsl:when> 
    <xsl:otherwise> 
     <div class="slides-descriptions"> 
     <xsl:apply-templates select="$validItems" mode="vertical"/> 
     </div> 
     <div class="switcher"/> 
    </xsl:otherwise> 
    </xsl:choose> 
</div> 
</xsl:if> 

Как я могу проверить переменную xsl: if test = $ validItems?

+2

Вы пытаетесь использовать 'xsl: if test =" not ($ validItems) "или читать http://www.w3.org/TR/xpath/#section-Boolean-Functions? – Istao

+1

Непонятно, что вы хотите сделать. «еще один тест для проверки« Null »или никакого текста внутри переменной $ validItems» - вы хотите проверить, есть ли у любого * элементов в '$ validItems' дочерний элемент' Caption' или 'CalltoAction', текстовое значение которого является пустой строкой? Кстати, в XSLT нет ничего такого, как «null», просто пустые строки/узловые наборы/последовательности. – LarsH

+0

Я хочу посмотреть в пределах $ validItems без текста внутри Caption | CalltoAction. Если текст не найден, мне нужно условие . Я только ищу, как фильтровать, если в строке нет текста. – MizAkita

ответ

6

Если я понимаю, что вы просите,

<xsl:if test="$validItems[(Caption | CalltoAction)[not(string(.))]]"> 

будет делать это. Другими словами, «если в наборе $ validItems есть элемент, у которого есть дочерний элемент Caption или CalltoAction, строковое значение которого пуст». Вы также можете сказать

<xsl:if test="$validItems[(Caption | CalltoAction)[. = '']]"> 
+0

Спасибо, LarsH ... вот и все! [Нет (строка (.))] – MizAkita

5

В модели данных XPath нет такой вещи, как «Нуль».

Что касается «текста в переменной $ validItems», это поможет узнать тип этой переменной. Если это один элементный узел (как может показаться из примера кода, который вы указали), и то, что вы хотите проверить, состоит в том, что у него нет дочерних элементов текстового узла, тест будет not($ValidItems/text()). Если вы хотите проверить, что у него нет потомков текстовых узлов, попробуйте not(string($validItems)) или, что то же самое, $validItems=''.

Смежные вопросы