/// <summary>
/// Evaluates a simple multiple valued path access from the given context
/// node to the named grandchild elements.
/// </summary>
/// <param name="contexts">The context <see cref="XmlElement"/>.</param>
/// <param name="name1">The name of the required child.</param>
/// <param name="name2">The name of the required grandchild.</param>
/// <returns>A possibly empty <see cref="XmlNodeList"/> of matching
/// child elements.</returns>
public static XmlNodeList Paths(XmlNodeList contexts, string name1, string name2)
{
MutableNodeList list = new MutableNodeList();
foreach (XmlElement context in contexts)
{
list.AddAll(Paths(Paths(context, name1), name2));
}
return(list);
}