<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title><![CDATA[Content with Style - Comments on Database-driven tree structures with XML and XSLT]]></title>
    <link>http://www.contentwithstyle.co.uk/feeds/rss/comments/32</link>
    <description><![CDATA[]]></description>
    <pubDate>Sat, 13 Mar 2010 13:34:51 +0000</pubDate>
    <generator>Zend_Feed</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <item>
      <title><![CDATA[Content with Style - Comment #1 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-136</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-136</guid>
      <description><![CDATA[Great article, Pascal. I have read somewhere that you might run into trouble if you modify the tree very often, as you have to lock the whole tree when updating it.<br />
In the parent-child approach you only add, and you only read out the parent-id.<br />
But you could on the other hand prevent this by forming some sort of message queue in a background process, or simply repeat the command until it&#8217;s successful. One might be quite some work, the other one seems a bit of a dirty solution (although, how do YOU make sure your data is actually written?), but all I want to say is that there&#8217;s always a way to use the desired approach, as much as there&#8217;s always a way to misuse it.]]></description>
      <content:encoded><![CDATA[Great article, Pascal. I have read somewhere that you might run into trouble if you modify the tree very often, as you have to lock the whole tree when updating it.<br />
In the parent-child approach you only add, and you only read out the parent-id.<br />
But you could on the other hand prevent this by forming some sort of message queue in a background process, or simply repeat the command until it&#8217;s successful. One might be quite some work, the other one seems a bit of a dirty solution (although, how do YOU make sure your data is actually written?), but all I want to say is that there&#8217;s always a way to use the desired approach, as much as there&#8217;s always a way to misuse it.]]></content:encoded>
      <pubDate>Mon, 13 Jun 2005 20:08:57 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #2 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-138</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-138</guid>
      <description><![CDATA[If thing get really bad my fix would probably be to store the parentID as well but still do the tree-thing by left and right &#8230;<br />
<br />
If things are corrupted you could rebuild the left and right values by using parentID, in a cron script for example &#8230;]]></description>
      <content:encoded><![CDATA[If thing get really bad my fix would probably be to store the parentID as well but still do the tree-thing by left and right &#8230;<br />
<br />
If things are corrupted you could rebuild the left and right values by using parentID, in a cron script for example &#8230;]]></content:encoded>
      <pubDate>Tue, 14 Jun 2005 09:56:36 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #3 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-217</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-217</guid>
      <description><![CDATA[I just ran into an interesting thought about this:<br />
<br />
Let&#8217;s say I use this for a navigation, how do I get ONLY the direct children for my page, like a 1st level subnav?<br />
Right now I&#8217;m thinking I should combine the parent_id approach with the preordered tree traversal, but I didn&#8217;t see this question as a drawback anywhere, so I wonder if I missed that somehow&#8230;]]></description>
      <content:encoded><![CDATA[I just ran into an interesting thought about this:<br />
<br />
Let&#8217;s say I use this for a navigation, how do I get ONLY the direct children for my page, like a 1st level subnav?<br />
Right now I&#8217;m thinking I should combine the parent_id approach with the preordered tree traversal, but I didn&#8217;t see this question as a drawback anywhere, so I wonder if I missed that somehow&#8230;]]></content:encoded>
      <pubDate>Mon, 08 Aug 2005 12:43:58 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #4 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-218</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-218</guid>
      <description><![CDATA[I&#8217;d say just do that in the XSL, with an xpath command. For exapmple the depth value of the node that I&#8217;ve put into an attribute helps to do so, but there&#8217;s other ways.<br />
<br />
Like that you can, with the XML beeing a whole tree, reuse it for all kind of navigations, you need on your page.<br />
<br />
Take a close look in <a href="http://www.contentwithstyle.co.uk/Articles/8/find-your-node-advanced-xpath-commands">Find your node: Advanced XPATH commands</a> again and you&#8217;ll see what I mean.]]></description>
      <content:encoded><![CDATA[I&#8217;d say just do that in the XSL, with an xpath command. For exapmple the depth value of the node that I&#8217;ve put into an attribute helps to do so, but there&#8217;s other ways.<br />
<br />
Like that you can, with the XML beeing a whole tree, reuse it for all kind of navigations, you need on your page.<br />
<br />
Take a close look in <a href="http://www.contentwithstyle.co.uk/Articles/8/find-your-node-advanced-xpath-commands">Find your node: Advanced XPATH commands</a> again and you&#8217;ll see what I mean.]]></content:encoded>
      <pubDate>Tue, 09 Aug 2005 09:56:19 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #5 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-344</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-344</guid>
      <description><![CDATA[The primary argument against using a parent-id relationship to define the hierarchy seems to be the number of database requests required. However, it is possible to write SQL, with either recursion or loops, to return the structure in one command. You could also pass in a starting node id to only return child nodes. <br />
<br />
I&#8217;m not saying preorder algorithms are bad but they&#8217;re not amazingly better as this article suggests.]]></description>
      <content:encoded><![CDATA[The primary argument against using a parent-id relationship to define the hierarchy seems to be the number of database requests required. However, it is possible to write SQL, with either recursion or loops, to return the structure in one command. You could also pass in a starting node id to only return child nodes. <br />
<br />
I&#8217;m not saying preorder algorithms are bad but they&#8217;re not amazingly better as this article suggests.]]></content:encoded>
      <pubDate>Tue, 29 Nov 2005 11:05:02 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #6 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-369</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-369</guid>
      <description><![CDATA[Ben,<br />
While this is definetely true for big RDBMS, and possibly even for MySQL 4.1 upwards, they are sadly not always available. Without Subselects, I wonder if you could give an example sql for the problem stated above.<br />
Actually, I&#8217;d be happy to see any recursive SQL in here, I don&#8217;t think that everybody reading this article is aware of this possibility.]]></description>
      <content:encoded><![CDATA[Ben,<br />
While this is definetely true for big RDBMS, and possibly even for MySQL 4.1 upwards, they are sadly not always available. Without Subselects, I wonder if you could give an example sql for the problem stated above.<br />
Actually, I&#8217;d be happy to see any recursive SQL in here, I don&#8217;t think that everybody reading this article is aware of this possibility.]]></content:encoded>
      <pubDate>Thu, 12 Jan 2006 04:05:12 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #7 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-371</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-371</guid>
      <description><![CDATA[We use the same tree skeleton as a model but added &#8220;SortLevel&#8221; and &#8220;ChildCount&#8221; to each row. At insertion/update time we calculate these, which is cheaper than having to do them on-the-fly (more SQL requests). This seems to offer better performance for  us, but your mileage may very.<br />
<br />
SortLevel = depth of node, basically<br />
ChildCount = self-explanatory]]></description>
      <content:encoded><![CDATA[We use the same tree skeleton as a model but added &#8220;SortLevel&#8221; and &#8220;ChildCount&#8221; to each row. At insertion/update time we calculate these, which is cheaper than having to do them on-the-fly (more SQL requests). This seems to offer better performance for  us, but your mileage may very.<br />
<br />
SortLevel = depth of node, basically<br />
ChildCount = self-explanatory]]></content:encoded>
      <pubDate>Fri, 13 Jan 2006 12:13:35 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #8 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-374</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-374</guid>
      <description><![CDATA[@cody:<br />
This is a very good idea indeed. Even though when you do the traversal at least for the depth level it&#8217;s kind of obsolete, since depth can be triggered with just a counter.<br />
<br />
@Ben:<br />
I&#8217;d be curious to see an example of this as well. In fact I wonder how the performance of a recursive statement would be like. Subselects for example will make the query execution slower, and I guess the same goes for any recursive statement.<br />
Has anyone got any benchmark or something on hand?]]></description>
      <content:encoded><![CDATA[@cody:<br />
This is a very good idea indeed. Even though when you do the traversal at least for the depth level it&#8217;s kind of obsolete, since depth can be triggered with just a counter.<br />
<br />
@Ben:<br />
I&#8217;d be curious to see an example of this as well. In fact I wonder how the performance of a recursive statement would be like. Subselects for example will make the query execution slower, and I guess the same goes for any recursive statement.<br />
Has anyone got any benchmark or something on hand?]]></content:encoded>
      <pubDate>Wed, 18 Jan 2006 05:40:58 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #9 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-477</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-477</guid>
      <description><![CDATA[There is also a couple of other problems with left and right value approach (Modified Preorder Tree Traversal).<br />
<br />
How do you order the results alphabetically if you used order by lft?<br />
<br />
How do you move nodes with children to an other node without recreating all the left and right numbers which could be exhausting with 100 000 entries or more? (recursive function)<br />
<br />
Geza]]></description>
      <content:encoded><![CDATA[There is also a couple of other problems with left and right value approach (Modified Preorder Tree Traversal).<br />
<br />
How do you order the results alphabetically if you used order by lft?<br />
<br />
How do you move nodes with children to an other node without recreating all the left and right numbers which could be exhausting with 100 000 entries or more? (recursive function)<br />
<br />
Geza]]></content:encoded>
      <pubDate>Wed, 08 Mar 2006 08:29:37 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #10 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-478</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-478</guid>
      <description><![CDATA[Geza, I don&#8217;t see where the problem is?<br />
If you order by alphabet, you loose the structure of the tree anyway, right? So therefore you don&#8217;t need to sort by lft anymore I guess &#8230;<br />
<br />
The update is by no means a recursion, instead it is just a couple of simple SQL statements, that should even be fast with big amounts of data, pretty similar to the one below:<br />
<br />
<code> UPDATE table SET lft = (lft + offset), rgt = (rgt + offset) WHERE lft &gt; startpoint AND rgt &lt; endpoint; </code><br />
<br />
Hope that makes sense to you?]]></description>
      <content:encoded><![CDATA[Geza, I don&#8217;t see where the problem is?<br />
If you order by alphabet, you loose the structure of the tree anyway, right? So therefore you don&#8217;t need to sort by lft anymore I guess &#8230;<br />
<br />
The update is by no means a recursion, instead it is just a couple of simple SQL statements, that should even be fast with big amounts of data, pretty similar to the one below:<br />
<br />
<code> UPDATE table SET lft = (lft + offset), rgt = (rgt + offset) WHERE lft &gt; startpoint AND rgt &lt; endpoint; </code><br />
<br />
Hope that makes sense to you?]]></content:encoded>
      <pubDate>Sun, 14 Dec 2008 16:52:56 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #11 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1021</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1021</guid>
      <description><![CDATA[HI Pascal,<br />
      I tried getting my 2000 member list to show up in the above example.  I was looking in your previous article that uses adodb but can&#8217;t find anything to get your function getPageTreeXML to work.  Or did I miss out anything.  Appreciate if you could tell me which module to use for the above function.  Thanks.]]></description>
      <content:encoded><![CDATA[HI Pascal,<br />
      I tried getting my 2000 member list to show up in the above example.  I was looking in your previous article that uses adodb but can&#8217;t find anything to get your function getPageTreeXML to work.  Or did I miss out anything.  Appreciate if you could tell me which module to use for the above function.  Thanks.]]></content:encoded>
      <pubDate>Wed, 12 Jul 2006 05:39:37 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #12 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1030</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1030</guid>
      <description><![CDATA[Sebbie, in fact the above example doesn&#8217;t use ADODB. It uses some kind of not specified DB class. The article you&#8217;ve been lookin into doesn&#8217;t &#8220;use&#8221; ADODB either. Instead it mentions ADODB as possibility of abstraction.<br />
<br />
For the example above I used one of my own classes:<br />

<pre><code>
&lt;
/**
* general database connection class
*/
class DB {
  /**
  * Basic contructor
  */
  function DB() {
       $this->host = "myhost";
       $this->db = "mydb";
       $this->user = "myuser";
       $this->pass = 'mypassword';
  }
  
  /**
  * Opens connection
  */
  function open() {
       $this->connection = mysql_connect($this->host, $this->user, $this->pass);
       $this->dbselect = mysql_select_db($this->db);
       register_shutdown_function(array(&amp;$this, 'close'));
   }
   
  /**
  * Executes query, returns resultset
  *
  * @param  string  String containing the SQL-Statement
  * @access  public
  * @return  ressource
  */
   function query($query) {
     $result = mysql_query($query, $this->connection) or die(mysql_error());
       return $result;
   }
   
  /**
  * closes connection
  */
   function close() {
       mysql_close($this->connection);
   }
}
?&gt;
</code></pre>]]></description>
      <content:encoded><![CDATA[Sebbie, in fact the above example doesn&#8217;t use ADODB. It uses some kind of not specified DB class. The article you&#8217;ve been lookin into doesn&#8217;t &#8220;use&#8221; ADODB either. Instead it mentions ADODB as possibility of abstraction.<br />
<br />
For the example above I used one of my own classes:<br />

<pre><code>
&lt;
/**
* general database connection class
*/
class DB {
  /**
  * Basic contructor
  */
  function DB() {
       $this->host = "myhost";
       $this->db = "mydb";
       $this->user = "myuser";
       $this->pass = 'mypassword';
  }
  
  /**
  * Opens connection
  */
  function open() {
       $this->connection = mysql_connect($this->host, $this->user, $this->pass);
       $this->dbselect = mysql_select_db($this->db);
       register_shutdown_function(array(&amp;$this, 'close'));
   }
   
  /**
  * Executes query, returns resultset
  *
  * @param  string  String containing the SQL-Statement
  * @access  public
  * @return  ressource
  */
   function query($query) {
     $result = mysql_query($query, $this->connection) or die(mysql_error());
       return $result;
   }
   
  /**
  * closes connection
  */
   function close() {
       mysql_close($this->connection);
   }
}
?&gt;
</code></pre>]]></content:encoded>
      <pubDate>Sun, 14 Dec 2008 16:54:15 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #13 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1395</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1395</guid>
      <description><![CDATA[Hi Pascal, what does mysqlDecodeText do ?  Could you email me what it is ? Even better, if you have a complete working example in a zip file that would be nice.  Thanks.<br />
<br />
Sebbie]]></description>
      <content:encoded><![CDATA[Hi Pascal, what does mysqlDecodeText do ?  Could you email me what it is ? Even better, if you have a complete working example in a zip file that would be nice.  Thanks.<br />
<br />
Sebbie]]></content:encoded>
      <pubDate>Mon, 14 Aug 2006 04:42:40 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #14 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1412</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1412</guid>
      <description><![CDATA[It&#8217;s just a wrapper for undoing whatever you do before you put it in the database &#8230; like add slashes and so on.<br />
<br />
It&#8217;s not critical for the app though.]]></description>
      <content:encoded><![CDATA[It&#8217;s just a wrapper for undoing whatever you do before you put it in the database &#8230; like add slashes and so on.<br />
<br />
It&#8217;s not critical for the app though.]]></content:encoded>
      <pubDate>Tue, 15 Aug 2006 09:47:18 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #15 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1919</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1919</guid>
      <description><![CDATA[You should also check up my blog entry about &#8220;<a href="http://www.frostinnovation.com/Blog.aspx?blogId=1b82e4b8-47fe-453a-a9c3-f11efe8083d8 ">Genetic Trees</a>&#8221; which has another approach called Genetic Trees or &#8220;Materialized Path&#8221; that makes subselection of childne and grandchildrens etc an O(1) operation!!]]></description>
      <content:encoded><![CDATA[You should also check up my blog entry about &#8220;<a href="http://www.frostinnovation.com/Blog.aspx?blogId=1b82e4b8-47fe-453a-a9c3-f11efe8083d8 ">Genetic Trees</a>&#8221; which has another approach called Genetic Trees or &#8220;Materialized Path&#8221; that makes subselection of childne and grandchildrens etc an O(1) operation!!]]></content:encoded>
      <pubDate>Thu, 18 Jan 2007 12:42:27 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #16 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1942</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1942</guid>
      <description><![CDATA[Hi Pascal, congratulations for the article. And what if I increase the complexity a little bit? Let&#8217;s assume that, in your example, we would like to store different menu trees in the table, one for administrators and another for ordinary users. Both trees should share some nodes (both should see page 1.2.1, for example), and wouldn&#8217;t like to have repeated records for those nodes in the table. How could we do this using the preordered tree traversal method?]]></description>
      <content:encoded><![CDATA[Hi Pascal, congratulations for the article. And what if I increase the complexity a little bit? Let&#8217;s assume that, in your example, we would like to store different menu trees in the table, one for administrators and another for ordinary users. Both trees should share some nodes (both should see page 1.2.1, for example), and wouldn&#8217;t like to have repeated records for those nodes in the table. How could we do this using the preordered tree traversal method?]]></content:encoded>
      <pubDate>Wed, 24 Jan 2007 11:13:11 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #17 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1943</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1943</guid>
      <description><![CDATA[Hi Ernani,
<br />
<br />
Quick shot: How about you store the node-data itself in a separate table and join node-guid against data-guid via a join table?
<br />
In addition you add a user-id to the tree table.
<br />
<br />
This would give you the opportunity to store trees for each user and join them against several data nodes without redundancy.
<br />
Does that make sense?

]]></description>
      <content:encoded><![CDATA[Hi Ernani,
<br />
<br />
Quick shot: How about you store the node-data itself in a separate table and join node-guid against data-guid via a join table?
<br />
In addition you add a user-id to the tree table.
<br />
<br />
This would give you the opportunity to store trees for each user and join them against several data nodes without redundancy.
<br />
Does that make sense?

]]></content:encoded>
      <pubDate>Wed, 24 Jan 2007 11:46:59 +0000</pubDate>
    </item>
    <item>
      <title><![CDATA[Content with Style - Comment #18 on Database-driven tree structures with XML and XSLT]]></title>
      <link>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1947</link>
      <guid>http://www.contentwithstyle.co.uk/content/database-driven-tree-structures-with-xml-and-xslt/#comment-1947</guid>
      <description><![CDATA[(Reply for item #17): Yes, that&#8217;s a solution. However, when I make changes in a node (including a new child, for example), I&#8217;ll have to search for all trees that has the modified node, and update them. It seems to be expensive, but we must think of what is more likely: MODIFY a node or SELECT a node. If SELECT&#8217;s are more frequent, then I think your suggestion will be the best solution.]]></description>
      <content:encoded><![CDATA[(Reply for item #17): Yes, that&#8217;s a solution. However, when I make changes in a node (including a new child, for example), I&#8217;ll have to search for all trees that has the modified node, and update them. It seems to be expensive, but we must think of what is more likely: MODIFY a node or SELECT a node. If SELECT&#8217;s are more frequent, then I think your suggestion will be the best solution.]]></content:encoded>
      <pubDate>Thu, 25 Jan 2007 11:21:35 +0000</pubDate>
    </item>
  </channel>
</rss>
