Microsoft’s XML Blog reported some of the current issues they’re facing as they develop their VB 9.0 language for programming XML. Program manager Avner Aharoni brought out some of the more intriguing issues his team faces.
One of the main issues covered covered in the XML blog discusses a clarity problem with the January preview of VB 9.0. Aharoni explains how they’ve attempted to make the language less confusing and in the process, improved upon some other features as a result:
We heard from many people who tried the VB 9.0 January preview that the late-bound properties we added to XLinq objects in VB 9.0 are confusing. One reason is that it is hard to know if a certain property name refers to the underlying object property or to the elements with that name, which makes writing and reading code harder. In addition, the way we chose to disambiguate between XLinq object properties and the Xml late bound properties by calling the “Element” method was unsatisfactory, since the developer needs extra knowledge to use this feature, and needs to know which properties exist on the XLinq objects to get it right.
To fix this issue we introduced a new syntax for these late-bound properties. Angle brackets now wrap the Xml member name so it is clear that the name refers to the elements with that name. For example Person. returns the elements called Name in the above document. To unify the syntax we are also using angle brackets for the Descendants method. For example Person… returns all the descendants of the Person element with the element name “Name”. You can read more about it in Erik Meijer’s post on lambda-the-ultimate . As a very nice side affect, we do not require any more double-colon for the namespace prefix, since the Xml name is enclosed in the angle brackets. We also renamed the feature to “Xml axis members” or just “axis members” to make it clearer.
In addition to this change in the axis members’ syntax, we are planning to change the binding of the Xml attribute member “@” to XLinq’s “Attributes” method as opposed to the “Attribute” method as the compiler did in the January CTP. As a result, all of the axis members now return IEnumerable(Of XElement) or IEnumerable(Of XAttribute). This aspect is important since we have added a .Value extension property on these IEnumerables that will get the first object in the enumerable (either XElement or XAttribute) and call the underlying .Value property on that object. If the result is an empty collection, we return Nothing.
These are just some of the issues facing the team right now. Since their January preview, more and more continue to comment and that number will certainly grow. This is just one more area where Microsoft realizes the value of user and developer input.
John Stith is a staff writer for murdok covering technology and business.