ugrás a tartalomhoz

XUL tree RDF datasource

janoszen · 2010. Jan. 6. (Sze), 22.20
Sziasztok,

játszadozom a XUL-lal és sikerült összehozni egy JavaScriptes adatbetöltőt. Át szeretném írni ugyanezt RDF alapőra, hogy kiessen a JavaScript belőle (ha már van ilyen király fícsör). Gyártottam egy meglehetősen egyszerű RDF-et, ami a jelek szerint valid és majdnem 1:1 megfelel a mintakódnak. A tcpdump tanulsága szerint le is tölti az adatot, azonban amikor arra a fülre kattintok, ahol a tree elem van, kapok egy olyan hibát, hogy a this.view nem létezik a tree.xul-ban.

Kérdéseim:
1. Tudja-e valaki, hogy mitől lehet ez?
2. Van-e valakinek 1.9-es xulrunner alatt működő datasources mintakódja?
3. Hogyan lehet debuggolni értelmesen a xulrunnert, ha nem Firefox plugint ír az ember?

Forráskódot holnap tudok küldeni, ha a fenti nem segítene.

Köszönöm szépen
 
1

Tree

janoszen · 2010. Jan. 6. (Sze), 22.21
Persze azt nem írtam le, de implicit benne van, hogy tree elemről van szó.
2

XUL

Poetro · 2010. Jan. 7. (Cs), 00.13
A XUL fájlodat szépen meg tudod nyitni Fx-szel, és ha már ott vagy akkor Firebuggal szépen tudod debuggolni.
3

Nem elég

janoszen · 2010. Jan. 7. (Cs), 12.00
Sajnos nem elég, mert pl. A chrome.manifestben vannak létszükséges infók, ha jól néztem. Ráadásul a remote XULra érvényes a same origin policy is doksi szerint. Azért holnap még ezzel futok egy kört.

Update: valóban így volt, csináltam teszt verziót.
4

Forrás

janoszen · 2010. Jan. 7. (Cs), 14.05
Készítettem egy lecsonkított forrást. Ihun a XUL:

test.xul
  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>  
  3. <!DOCTYPE window SYSTEM "test.dtd">  
  4. <window  
  5.     id     = "test"  
  6.     title  = "Title"  
  7.     width  = "400"  
  8.     height = "300"  
  9.     xmlns  = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">  
  10.     
  11.     <tree ref="http://mydomain/conversation/all-conversations" datasources="test.rdf" id="archivelist" editable="false" height="200" width="500">  
  12.         <treecols>  
  13.             <treecol persist="width" id="hname" label="Name" flex="2" />  
  14.             <treecol persist="width" id="hlogin" label="Login" flex="1" />  
  15.             <treecol persist="width" id="hip" label="IP" flex="1" />  
  16.             <treecol persist="width" id="htimestamp" label="Timestamp" flex="1" />  
  17.             <treecol persist="width" id="hoperator" label="Operator" flex="1" />  
  18.         </treecols>  
  19.   
  20.         <template>  
  21.             <rule>  
  22.               <treechildren>  
  23.                <treeitem uri="rdf:*">  
  24.                  <treerow>  
  25.                    <treecell label="rdf:http://mydomain/conversation#name"/>  
  26.                    <treecell label="rdf:http://mydomain/conversation#username"/>  
  27.                    <treecell label="rdf:http://mydomain/conversation#ip"/>  
  28.                    <treecell label="rdf:http://mydomain/conversation#finish"/>  
  29.                    <treecell label="rdf:http://mydomain/conversation#operator"/>  
  30.                  </treerow>  
  31.                </treeitem>  
  32.               </treechildren>  
  33.             </rule>  
  34.         </template>  
  35.     </tree>  
  36. </window>  
test.rdf
  1. <?xml version="1.0" ?>  
  2. <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:conversation="http://mydomain/conversation/">  
  3.     <rdf:Description rdf:about="http://mydomain/conversation/">   
  4.         <conversation:id>1243</conversation:id>  
  5.         <conversation:name>Teszt Elek</conversation:name>  
  6.         <conversation:username></conversation:username>  
  7.         <conversation:ip>1.2.3.4</conversation:ip>  
  8.         <conversation:finish>2010-01-01 10:00:00</conversation:finish>  
  9.   
  10.         <conversation:operator>user</conversation:operator>  
  11.     </rdf:Description>  
  12.     <rdf:Seq rdf:about="http://mydomain/conversation/all-conversations">  
  13.           
  14.     </rdf:Seq>  
  15. </rdf:RDF>  
test.dtd
  1. <!ENTITY app.title   "DotRoll Ltd test">  
  2. <!ENTITY app.id      "test">  
Mit cseszek el?
5

Seq > li > Description ?

Endyl · 2010. Jan. 7. (Cs), 19.45
A Description-nek nem egy Seq-en belüli li-ben kellene lennie? Még nem használtam rdf-et, de ha jól emlékszem az olvasottakra, akkor ott kéne lennie. De ez csak így hirtelen beugrott.
6

Köszi

janoszen · 2010. Jan. 8. (P), 10.24
Köszi, holnap megnézem. Sajnos nem sok _értelmes_ leírást találtam az RDFről, csak egy halom RFC-t, azt meg ezért a projektért nem akartam végigolvasni. Végülis most úgy működik a dolog, hogy JSON-t tölt be az alkalmazás, ami majdnem ugyanolyan jó.

Íme az új RDF, ezzel sem működik:
  1. <?xml version="1.0" ?>  
  2. <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:conversation="http://mydomain/conversation/">  
  3.     <rdf:Description rdf:about="http://mydomain/conversation/1243">   
  4.         <conversation:id>1243</conversation:id>  
  5.         <conversation:name>Teszt Elek</conversation:name>  
  6.         <conversation:username></conversation:username>  
  7.         <conversation:ip>1.2.3.4</conversation:ip>  
  8.         <conversation:finish>2010-01-01 10:00:00</conversation:finish>  
  9.   
  10.         <conversation:operator>user</conversation:operator>  
  11.     </rdf:Description>  
  12.     <rdf:Seq rdf:about="http://mydomain/conversation/all-conversations">  
  13.         <rdf:li rdf:resource="http://mydomain/conversation/1243" />  
  14.     </rdf:Seq>  
  15. </rdf:RDF>  
7

Így nálam működik:

Endyl · 2010. Jan. 8. (P), 21.23
test.xul:
  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>  
  3. <window  
  4.     id     = "test"  
  5.     title  = "Title"  
  6.     width  = "400"  
  7.     height = "300"  
  8.     xmlns  = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">  
  9.       
  10.     <tree ref="http://mydomain/conversation/all-conversations"  
  11.           datasources="test.rdf"  
  12.           id="archivelist"  
  13.           editable="false"  
  14.           height="200"  
  15.           width="500"  
  16.           flags="dont-build-content">  
  17.         <treecols>  
  18.             <treecol persist="width" id="hname" label="Name" flex="2" />  
  19.             <treecol persist="width" id="hlogin" label="Login" flex="1" />  
  20.             <treecol persist="width" id="hip" label="IP" flex="1" />  
  21.             <treecol persist="width" id="htimestamp" label="Timestamp" flex="1" />  
  22.             <treecol persist="width" id="hoperator" label="Operator" flex="1" />  
  23.         </treecols>  
  24.     
  25.         <template>  
  26.             <rule>  
  27.               <treechildren>  
  28.                <treeitem uri="rdf:*">  
  29.                  <treerow>  
  30.                    <treecell label="rdf:http://mydomain/conversation/rdf#name"/>  
  31.                    <treecell label="rdf:http://mydomain/conversation/rdf#username"/>  
  32.                    <treecell label="rdf:http://mydomain/conversation/rdf#ip"/>  
  33.                    <treecell label="rdf:http://mydomain/conversation/rdf#finish"/>  
  34.                    <treecell label="rdf:http://mydomain/conversation/rdf#operator"/>  
  35.                  </treerow>  
  36.                </treeitem>  
  37.               </treechildren>  
  38.             </rule>  
  39.         </template>  
  40.     </tree>  
  41. </window>  
Változás:
-tree-hez flags="dont-build-content" hogy content builder helyett tree builder-t használjon a tartalom generálásához
-treecelleken label-ben a címzés a változtatott rdf szerint

test.rdf:
  1. <?xml version="1.0" ?>    
  2. <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  
  3.           xmlns:conversation="http://mydomain/conversation/rdf#">   
  4.     <rdf:Seq rdf:about="http://mydomain/conversation/all-conversations">  
  5.       <rdf:li>  
  6.         <rdf:Description rdf:about="http://mydomain/conversation/1243">  
  7.           <conversation:id>1243</conversation:id>  
  8.           <conversation:name>Teszt Elek</conversation:name>  
  9.           <conversation:username></conversation:username>  
  10.           <conversation:ip>1.2.3.4</conversation:ip>  
  11.           <conversation:finish>2010-01-01 10:00:00</conversation:finish>  
  12.       
  13.           <conversation:operator>user</conversation:operator>  
  14.         </rdf:Description>  
  15.       </rdf:li>  
  16.     </rdf:Seq>  
  17. </rdf:RDF>  
Változás:
-conversation namespace címzéshez; itt igazándiból a #-en van a hangsúly, lehetne "http://mydomain/conversation#" is és akkor a xul-ban meg ugye a címzés pl.: "rdf:http://mydomain/conversation#name"

Ha jól nézem ennyi volt.
Jó, hogy előjött a téma, úgyis nemsokára szükségem lesz rá :)
8

Köszönöm

janoszen · 2010. Jan. 9. (Szo), 00.50
Huh, köszönöm. Hogy a bubánatba jöttél erre rá? Mármint szóval érted. :) Az összes példában az volt, hogy a Seq elemek külön vannak.
9

Puska :)

Endyl · 2010. Jan. 9. (Szo), 14.46
Bevallom puskáztam egy kicsit :)

[szerk]Most nézem, hogy itt is lehetnek érdekes dolgok. A vége felé ír a tree-kről is.[/szerk]