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

Размер in-memory datasource

Метки: [без меток]
2007-04-02 12:09:22 [обр] Олег Свиридович[досье]

Загружаю датасорс таким образом
var url = 'http://localhost/server.php';
var memoryDS = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"]
                        .createInstance(Components.interfaces.nsIRDFDataSource);
var ios=Components.classes["@mozilla.org/network/io-service;1"]
                 .getService(Components.interfaces.nsIIOService);
baseUri=ios.newURI(url,null,null);
var parser=Components.classes["@mozilla.org/rdf/xml-parser;1"]
                    .createInstance(Components.interfaces.nsIRDFXMLParser);
parser.parseString(memoryDS,baseUri,val);
this.tree.database.AddDataSource(memoryDS);
this.tree.builder.rebuild();
this._datasource = memoryDS;

Датасорс возвращает содержимое таблицы БД преобразованное в RDF. Проблема проявляется когда возвращается более 2-х строк, причем не имеет значения каких именно. Тот же датасорс выложеныый в файл на сервере подхватывается и обрабатывается без проблем.

спустя 13 часов [обр] Владимир Палант(434/4445)[досье]

Проверяйте, какой выдается Content-Type и что с кодировкой. Для браузера нет разницы между файлом и скриптом, видны исключительно заголовки HTTP.

PS: Читаю ваши мысли, поскольку вопрос вы так и не задали.

спустя 11 часов [обр] Олег Свиридович[досье]
Увы, Content-Type и кодировка в данном случае не играют никакой роли. Приложение работает через XML-RPC, т.е. как таковые, данные я получаю из XML ответа сервера и преобразовываю их в in-memory-datasource. Данные представляют собой выборку из БД преобразованную в RDF. На каждую запись приходиться 43 колонки. Сегодня попробовал воспользоваться соответствующей функцией из rdfds - результат аналогичный. Что характерно, если я возвращаю выборку из одной-двух строк, все работает просто превосходно, т.е. нет проблем ни с template ни с правилами. Для чистоты эксперимента пробовал выбирать различные пары строк из базы. Все опять же отобразилось корректно.
Однако, стоит вернуть хотя бы три строки и все.. При уменьшении числа колонок количество записей, при которых все работает устойчиво, возрастает.
Таким образом меня интересует есть ли ограничение на объем данных которые можно загрузить в in-memory-datasource посредством распарсывания XML и есть ли альтернативные варианты решения этой проблемы.
спустя 44 минуты [обр] Владимир Палант(434/4445)[досье]
Ограничения нет.
спустя 28 минут [обр] Олег Свиридович[досье]

Хм.. сделал RDF такого вида...
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:items="http://www.xulplanet.com/rdf/example#">
<rdf:Description rdf:about="urn:items:0">
 <items:code>0</items:code>
</rdf:Description>
<rdf:Description rdf:about="urn:items:1">
 <items:code>1</items:code>
</rdf:Description>
...
<rdf:Seq rdf:about="urn:items">
 <rdf:li rdf:resource="urn:items:0"/>
 <rdf:li rdf:resource="urn:items:1"/>
...
</rdf:Seq>

</rdf:RDF>
и дерево со следующим темплейтом
       <tree id="pricelist" height="500" flex="1" datasources="rdf:null" ref="urn:items" flags="dont-build-content" context="">
        <treecols>
          <treecol label="Код" hidden="true" class="sortDirectionIndicator" sortActive="false" sortDirection="natural" flex="1" id="a1" sort = "?code" persist="width ordinal hidden sortActive sortDirection"/>
        </treecols>
        <template>
          <rule>
            <conditions>
              <content uri="?uri"/>
              <member container="?uri" child="?priceitem"/>
              <triple subject="?priceitem"
                          predicate="http://www.xulplanet.com/rdf/example#code"
                          object="?code"/>
            </conditions>
            <action>
              <treechildren flex="1">
                <treeitem uri="?priceitem">
                  <treerow>
                    <treecell label="?code"/>
                  </treerow>
                </treeitem>
              </treechildren>
            </action>
          </rule>
        </template>
      </tree>
При выборке 20 строк отображаются номера с 0 по 19
При выборке 40 строк отображаются номера с 0 по 5
Что в общем-то довольно странно...

Powered by POEM™ Engine Copyright © 2002-2005