It would be best to send only the information the user requests. If a user would like info on one brand only it would be a waste to send all the information about all the different brands.
Personally I also wouldn't recommend using the brand name as category because this isn't completely right and makes it harder to process easy later. Category would be better defined for example as product type (at storage level, like in the database), but since you don't have other products besides phones this isn't relevant now.
A category is just a group definition like, all phones with a price below $200 or could also simply be the brand name. The only difference is that it wouldn't be that practical to structure the data that way. Because you would also need a definition where you have xml elements for each price range.
How about this?
="1.0"="ISO-8859-1"
<productlist>
<phone>
<brand>Nokia</brand>
<name>N95 mini</name>
<price>850</price>
</phone>
<phone>
<brand>LG</brand>
<name>LG500</name>
<price>400</price>
</phone>
</productlist>
It would now be way easier to select categories in any way you want based on the product information.
Some simple xslt examples:
<pre>
<xsl:template match="/">
<xsl:for-each select="productlist/phone[price>400]">
<xsl:value-of select="brand"/>
<xsl:value-of select="name"/>
<xsl:value-of select="price"/>
</xsl:for-each>
<xsl:for-each select="productlist/phone[brand='nokia']">
<xsl:value-of select="brand"/>
<xsl:value-of select="name"/>
<xsl:value-of select="price"/>
</xsl:for-each>
</xsl:template>
</pre>
More info on xslt and xpath:
http://www.w3schools.com/xsl/default.asp[
^]
http://www.w3schools.com/XPath/default.asp[
^]
Hopefully this answer gave you some nice ideas.
Good luck!