[Mono-list] FYI: X# - New Data/XML-oriented language projectat MS
A Rafael D Teixeira
rafaelteixeirabr@hotmail.com
Thu, 09 Jan 2003 11:24:22 -0200
I think they probably would go the route of turning XPath 2.0 one of the
legs of X#, C# being the other. That would make possible to do things like.
for a xml with this form
<RedCarpet>
<Channel name="Mandrake9.0">
<Item id="11" Name="gnome-libs.i586mdk.rpm" currentVersion="2.01.333"
.../>
<Item id="11" Name="gnome-vfs.i586mdk.rpm" currentVersion="2.01.23"
.../>
</Channel>
<Channel name="RedHat8.0">
<Item id="11" Name="gnome-libs.i386.rpm" currentVersion="2.01.334" .../>
<Item id="11" Name="gnome-vfs.i386.rpm" currentVersion="2.01.23" .../>
</Channel>
</RedCarpet>
a visual form, would have such X# code (just my guess):
class formUpgrades : System.Windows.Forms
{
Datagrid dtgUpgrades;
...
public void ShowMeUpgrades(string channel)
{
XML localList = new XML("file:///etc/redcarpet/redcarpet.xml");
XML list = new XML("http://www.ximian.com/redcarpet.xml");
Sequence seq = list.Channel[@name == channel];
Sequence seqLocal = localList.Channel[@name == channel]
if (seq.count > 0)
{
dtgUpgrades.DataSource = seq.Item[@currentVersion >
max(seqLocal.ItemLocal.currentVersion[@id == current().@id])];
}
}
}
The above example, is similar to such an SQL query with subquery, being
bound to a Datagrid:
SELECT * FROM RedCarpetItem INNER JOIN RedCarpetChannel ON
RedCarpetItem.ChannelID = RedCarpetChannel.ID WHERE
RedCarpetChannel.Name = '@channel' AND RedCarpetItem.CurrentVersion >
(SELECT MAX(CurrentVersion) FROM LocalItem INNER JOIN LocalChannel ON
LocalItem.ChannelID = LocalChannel.ID WHERE LocalChannel.Name = '@channel'
AND ID = RedCarpetItem.ID)
But RedCarpetItem and RedCarpetChannel tables, would have to be remote
tables...
Interesting possibilities...
Rafael Teixeira
Brazilian Polymath
Mono, MonoQLE Hacker
_________________________________________________________________
The new MSN 8 is here: Try it free* for 2 months
http://join.msn.com/?page=dept/dialup