2013-11-27 2 views
0

Я получаю сообщение об ошибке работает следующий код:Что вызывает ошибку я XFORM код

<xf:output value="if(contains(instance('foldedNodes')/nodelist, ./@id), '+', '-')"/> 

В этом разделе: К сожалению, произошла ошибка ...

xforms-compute-exception expected "then", found "<eof>" 

Как исправить if заявление? создать источник меню из дерева. Пожалуйста, дайте нам знать, если у вас есть какой-либо другой источник, увидеть меню дерева будет

<html 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:xf="http://www.w3.org/2002/xforms" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:ev="http://www.w3.org/2001/xml-events"> 
    <head> 
     <title>Folding Menus</title> 
     <xf:model id="modelID" ev:event="" functions="" schema=""> 
     <xf:instance id="instanceData" xmlns=""> 
      <group id="mainGroup"> 
       <group id="group1" fold="0" category="Category One"> 
        <item id="item1">Enter Data</item> 
        <item id="item2">Enter Data</item> 
        <item id="item3">Enter Data</item> 
        <group id="group2" fold="0" category="Category Two"> 
        <item id="item4">Enter Data</item> 
        <item id="item5">Enter Data</item> 
        <group id="group3" fold="0" category="Category Three"> 
         <item id="item6">Enter Data</item> 
         <item id="item7">Enter Data</item> 
         <item id="item8">Enter Data</item> 
        </group> 
        <item id="item9">Enter Data</item> 
        </group> 
       </group> 
      </group> 
     </xf:instance> 
     <xf:instance id="foldedNodes" xmlns=""> 
      <foldednodes> 
       <nodelist /> 
      </foldednodes> 
     </xf:instance> 

     <xf:bind nodeset="descendant::*" 
      relevant="not(contains(instance('foldedNodes')/nodelist, current()/parent::*/@id))" 
      /> 
     </xf:model> 

     <style type="text/css"> 
     @namespace xhtml url("http://www.w3.org/1999/xhtml"); 
     @namespace xf url("http://www.w3.org/2002/xforms"); 
     xf|*:disabled { 
     display: none; 
     } 
     </style> 

    </head> 

    <body> 

     <div class="header">Folding Test</div> 

     <xf:group id="mainGroup"> 
     <xf:output ref="instance('foldedNodes')/nodelist"> 
      <xf:label>ID List</xf:label> 
     </xf:output> 
     <xf:repeat nodeset="instance('instanceData')/descendant::group" id="repeatGroup"> 
      <xf:output class="outputInline" 
       value="concat(substring('&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;',1,3 * count(current()/ancestor::*)), '&#160;&#160;&#160;&#160;&#160;')" /> 
      <xf:trigger> 
       <xf:label> 
        <xf:output 
        value="if(contains(instance('foldedNodes')/nodelist, ./@id), '+', '-')" 
        /> 
       </xf:label> 
       <xf:action ev:event="DOMActivate"> 
        <xf:setvalue ref="instance('foldedNodes')/nodelist" 
        value="if(contains(instance('foldedNodes')/nodelist, instance('instanceData')/descendant::group[position()=index('repeatGroup')]/@id), concat(substring-before(instance('foldedNodes')/nodelist, instance('instanceData')/descendant::group[position()=index('repeatGroup')]/@id), substring-after(instance('foldedNodes')/nodelist, instance('instanceData')/descendant::group[position()=index('repeatGroup')]/@id)), concat(instance('foldedNodes')/nodelist, instance('instanceData')/descendant::group[position()=index('repeatGroup')]/@id))" 
        /> 
       </xf:action> 
      </xf:trigger> 
      <xf:output class="outputInline" ref="./@category" /> 
      <xf:repeat nodeset="./item" id="repeatItem"> 
       <xf:output class="outputInline" 
        value="concat(substring('&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;',1,3 * count(current()/ancestor::*)), '&#160;&#160;&#160;&#160;&#160;')" /> 
       <xf:output class="outputInline" ref="./@id"> 
        <xf:label>id: </xf:label> 
       </xf:output> 
       <xf:input class="inputInline" ref=".[name() = 'item' or name() = 'file']"> 
        <xf:label>data: </xf:label> 
       </xf:input> 
      </xf:repeat> 
     </xf:repeat> 
     </xf:group> 

    </body> 
</html> 

ответ

0

Из-за XPath 2.0, «если» как функцию устарели. Вместо этого вы должны попробовать «выбрать».

-Alain

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