Ivan Pedruzzi of Stylus Studio interviewed Priscilla (of “Definitive XML Schema” fame) on XQuery as part of their series on XML and XQuery interviews and articles that include interviews with Michael Kay, Jason Hunter (MarkLogic) and Mike Olson (Sleepycat) (I may comment one or the other over time :-)).
Priscilla is an outsider to the working group, which gives this interview a more objective slant than if Ivan would have interviewed a member of the working group. Thus, I am happy to see, how Priscilla focuses on some of the interesting aspects of XQuery, such as the ability to raise errors on path expressions (due to the static typing), the integration of typed and untyped data etc.
One small nitpick is that the demo'ed XQuery support in Oracle at XML 2004 was showing a prototype and not Oracle 9i (more on the XML 2004 conference hopefully later).
Since she was plugging her upcoming XQuery book, I hope that Michael Brundage will update his XQuery book, so that we will have the option of choosing among two (or more) good XQuery books in a year from now (and the XQuery from the Expert book will get a sales boost as well :-).
As I mentioned earlier, we are working on adding some requested features to Beta3. The December CTP build (981.04) already contains one of them.
Per default, if you parse an XML instance, we drop some whitespace characters unless they are guarded with an xml:space="preserve" attribute or are entitized.
For example,
select CONVERT(XML, '<a> </a>')
will return
<a/>
which means that the whitespace only content has been dropped. Note that this is not 100% XML 1.0 spec conformant but conforms to the 95% user expectation.
So,
select CONVERT(XML, '<a xml:space="preserve"> </a>')
will return
<a xml:space="preserve"> </a>
and
select CONVERT(XML, '<a>   </a>')
will return
<a> </a>
which preserves the whitespace.
However, often users cannot change their data to protect the whitespace. Therefore we have added a new convert option that will preserve the whitespace regardless. So it is my pleasure to introduce:
select CONVERT(XML, '<a> </a>', 1)
which returns
<a> </a>
Some additional things we are working on for the next CTP and Beta3 are (standard disclaimer is that this may or may not be included according to last minute decisions):
- Performance, performance and (you guessed it) performance.
- Disabling DTD and entity declaration processing during parsing by default. This is a security item to minimize the danger of “entity expansion“ overload. You will still be able to get the DTD functionality with a CONVERT style option.
- Further alignment of the implemented XQuery functionality to the July 2004 WD stage. This will be most likely the state with which we will ship RTM. So if you have any issues, please let us know (and start adding those semi-colons after the namespace declarations now! :-)).
- Adding namespace support to FOR XML PATH.
- Restricting datetime, time and date values to values with timezones and serialize them with Z (this is the result of the recent customer survey). Enabling value() method returning a Z-normalized value to datetime.
Merry Christmas, hohoho :-)
Some people have complained that since Mark and Dare decided to work on other interesting aspects, the XML Team (the team that brings to you MSXML and System.XML) has been too quiet in the blogosphere recently.
Well, I think this has changed this week. First, Arpan adds another good description and justification on the status of our XQuery and XSLT2 support in the .Net framework. Then the XML Team has now its own Blog. Mike Champion, who recently joined the XML Team has started to blog both on the team and personal weblog (and he even changed his personal blog from Java to .Net :-)). Mike by the way has become my alternate in the W3C XQuery working group and I look forward working with him. Welcome to the team, Mike!
So feel free to continue to provide us with feedback and questions!
(BTW: While I work on XML Technologies, I am not an organizational member of the XML Team. But I see myself as an honorary member or pain the ... depending on one's view point :-)).