Одна вещь, которая меня смутила, это выбор первого узла в наборе узлов. Например, мы использовали MSXML 3.0 (который использует XSLPattern) и имели такие запросы:
/root/book[0]
Этот запрос должен был выбрать первую книгу. Это работает с XSLPattern. Но с XPath это правильно:
/root/book[1]
Поэтому, когда я переключил нас на использование MSXML 6.0, который использует правильный XPath, все эти запросы с «[0]» перестали работать.
Обновление:
Я только что нашел эту ссылку, в которой больше говорится о XSLPattern и XPath:
Журнал MSDN: MSXML 3.0 поддерживает XPath 1.0, XSLT 1.0, XDR и SAX2
http://msdn.microsoft.com/en-us/magazine/cc302348.aspx
Обновление № 2:
Вот спецификация W3C для XSLT, которая включает шаблоны XSL:
http://www.w3.org/TR/1998/WD-xsl-19981216.html#AEN376
Обновление № 3
Вот еще один пост, описывающий то же, что я упомянул выше:
http://www.eggheadcafe.com/software/aspnet/29579789/xml-parsing.aspx