Xpoint
   [напомнить пароль]

динамическое дерево в XBL

Метки: [без меток]
2007-03-27 12:17:46 [обр] Олег Свиридович[досье]
Не получается реализовать генерацию дерева из удаленного RDF с помощью template.
Вот собственно сам RDF файл:
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:tree="http://www.xulplanet.com/rdf/example#">
<RDF:Description about="urn:tree:2"><tree:name>Category2</tree:name></RDF:Description>
<RDF:Description about="urn:tree:1"><tree:name>Category1</tree:name></RDF:Description>
<RDF:Description about="urn:tree:3"><tree:name>Category3</tree:name></RDF:Description>
<RDF:Seq about="urn:tree">
 <RDF:li>
  <RDF:Seq about="urn:tree:1">
   <RDF:li>
    <RDF:Seq about="urn:tree:2"/>
   </RDF:li>
  </RDF:Seq>
 </RDF:li>
 <RDF:li resource="urn:tree:3"/>
</RDF:Seq>
</RDF:RDF>
Динамическое дерево под него:
<tree id="categoriesTree" flags="dont-build-content" datasources="new.rdf" flex="1" ref="urn:tree">
  <treecols><treecol id="name" label="test" primary="true" flex="1"/></treecols>
   <template>
     <rule>
      <treechildren>
       <treeitem uri="rdf:*">
        <treerow>
         <treecell label="rdf:http://www.xulplanet.com/rdf/example#name"/>
        </treerow>
       </treeitem>
      </treechildren>
     </rule>
   </template>
</tree>
XBL вариант:
<?xml version="1.0" encoding="Windows-1251"?>
<bindings xmlns="http://www.mozilla.org/xbl"
          xmlns:xbl="http://www.mozilla.org/xbl"
          xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="test">
 <content>
  <xul:tree datasources="new.rdf" ref="urn:tree">
   <xul:treecols><xul:treecol id="name" label="Name" primary="true" flex="1"/></xul:treecols>
    <xul:template>
     <xul:rule>
      <xul:treechildren>
        <xul:treeitem uri="rdf:*">
         <xul:treerow>
          <xul:treecell label="rdf:http://www.xulplanet.com/rdf/example#name"/>
         </xul:treerow>
        </xul:treeitem>
       </xul:treechildren>
      </xul:rule>
     </xul:template>
   </xul:tree>
 </content>
</binding>
</bindings>
и соответсвующий кусок из css:
test{
   -moz-binding: url('new.xml#test');
   width:100%;
}
При переводе всего этого счастья под xbl я столкнулся с тем что данные загружаются в дерево, над ними можно проводить операции выбора и т.д, но непосредственно сами данные не отображаются. Методичный зачес интернета, на предмет похожих ситуаций или примеров решения, положительных результатов не дал. Точнее существующие решения из Creating Mozilla Application и xulfr.org приводят к тому же самому результату. Пробовалось под mozilla 1.7.12 и xulrunner 1.9a1 Сталкивался ли кто-нибудь с подобным вопросом?
спустя 4 часа 9 минут [обр] Владимир Палант(434/4445)[досье]
А флаг dont-build-content почему вы в XBL опустили? Или это уже результат экспериментов? Вообще работать должно, в самом Firefox есть несколько аналогичных деревьев в XBL. Надо будет поэкспериментировать.
спустя 38 минут [обр] Олег Свиридович[досье]
Флаг dont-build-content увы ничего не дает...
Нашел довольно интересный вариант решения проблемы http://xulfr.org/wiki/RessourcesLibs/xbl_autosuggest и сейчас экспериментирую с ним
спустя 2 часа 1 минуту [обр] Олег Свиридович[досье]

В итоге получился такой вариант:
<?xml version="1.0" encoding="UTF-8"?>
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:tree="urn:tree:rdf#">
<RDF:Description RDF:about="urn:tree:0"><tree:name>0</tree:name></RDF:Description>
<RDF:Description RDF:about="urn:tree:1"><tree:name>1</tree:name></RDF:Description>
<RDF:Description RDF:about="urn:tree:2"><tree:name>2</tree:name></RDF:Description>
<RDF:Seq RDF:about="urn:tree">
 <RDF:li>
  <RDF:Seq RDF:about="urn:tree:0">
   <RDF:li>
    <RDF:Seq RDF:about="urn:tree:1"/>
   </RDF:li>
  </RDF:Seq>
 </RDF:li>
 <RDF:li RDF:resource="urn:tree:2"/>
</RDF:Seq>
</RDF:RDF>
//--------------
<?xml version="1.0" encoding="utf-8"?>
<bindings xmlns="http://www.mozilla.org/xbl"
          xmlns:xbl="http://www.mozilla.org/xbl"
          xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="test">
 <content>
 <xul:tree height="200" flex="1" datasources="sample.rdf" ref="urn:tree"flags="dont-build-content" hidecolumnpicker="true">
    <xul:treecols>
      <xul:treecol flex="1" hideheader="true"/>
    </xul:treecols>
    <xul:template>
      <xul:treechildren>
       <xul:treeitem uri="rdf:*">
         <xul:treerow>
          <xul:treecell label="rdf:urn:tree:rdf#name"/>
         </xul:treerow>
       </xul:treeitem>
      </xul:treechildren>
    </xul:template>
  </xul:tree>
 </content>
</binding>
</bindings>

Уже неплохо, что данные отображаются, но возникла еще одна проблема, дерево не отображает иерархию. Пробовал различные варианты, но сдвигов пока не видно.

Powered by POEM™ Engine Copyright © 2002-2005