public IEnumerable Select(MFQueryKind kind, object query) { switch (kind) { case MFQueryKind.All: case MFQueryKind.AllChildren: return(new MFNodeByKindFilter(children, MFNodeKind.Text)); case MFQueryKind.AllAttributes: case MFQueryKind.AttributeByQName: return(MFEmptySequence.Instance); case MFQueryKind.ChildrenByQName: return(MFEmptySequence.Instance); case MFQueryKind.SelfByQName: if (localName == ((System.Xml.XmlQualifiedName)query).Name && namespaceURI == ((System.Xml.XmlQualifiedName)query).Namespace) { return(new MFSingletonSequence(this)); } else { return(MFEmptySequence.Instance); } default: throw new InvalidOperationException("Unsupported query type."); } }
public IEnumerable Select(MFQueryKind kind, object query) { switch (kind) { case MFQueryKind.All: case MFQueryKind.AllChildren: return(new MFNodeByKindFilter(children, MFNodeKind.Text)); case MFQueryKind.AttributeByQName: return(MFEmptySequence.Instance); case MFQueryKind.ChildrenByQName: return(MFEmptySequence.Instance); case MFQueryKind.SelfByQName: return(MFEmptySequence.Instance); default: throw new InvalidOperationException("Unsupported query type."); } }
public IEnumerable Select(MFQueryKind kind, object query) { switch (kind) { case MFQueryKind.All: case MFQueryKind.AllChildren: case MFQueryKind.ChildrenByQName: case MFQueryKind.SelfByQName: return(MFEmptySequence.Instance); case MFQueryKind.AttributeByQName: if (dictionary.ContainsKey(((System.Xml.XmlQualifiedName)query).Name)) { return(new MFSingletonSequence(dictionary[((System.Xml.XmlQualifiedName)query).Name])); } return(MFEmptySequence.Instance); default: throw new InvalidOperationException("Unsupported query type."); } }
public IEnumerable Select(MFQueryKind kind, object query) { switch (kind) { case MFQueryKind.All: switch (node.NodeType) { case XmlNodeType.Element: return(new SequenceJoin(new DOMChildrenAsMFNodeSequenceAdapter(node), new DOMAttributesAsMFNodeSequenceAdapter(node))); case XmlNodeType.Document: return(new DOMChildrenAsMFNodeSequenceAdapter(node)); case XmlNodeType.Attribute: return(new MFSingletonSequence(node.Value)); case XmlNodeType.Text: case XmlNodeType.SignificantWhitespace: case XmlNodeType.CDATA: return(new MFSingletonSequence(node.Value)); default: return(MFEmptySequence.Instance); } case MFQueryKind.AllChildren: switch (node.NodeType) { case XmlNodeType.Element: case XmlNodeType.Document: return(new DOMChildrenAsMFNodeSequenceAdapter(node)); case XmlNodeType.Attribute: return(new MFSingletonSequence(node.Value)); case XmlNodeType.Text: case XmlNodeType.SignificantWhitespace: case XmlNodeType.CDATA: return(new MFSingletonSequence(node.Value)); default: return(MFEmptySequence.Instance); } case MFQueryKind.AllAttributes: switch (node.NodeType) { case XmlNodeType.Element: case XmlNodeType.Document: return(new DOMAttributesAsMFNodeSequenceAdapter(node)); default: return(MFEmptySequence.Instance); } case MFQueryKind.ChildrenByQName: switch (node.NodeType) { case XmlNodeType.Element: case XmlNodeType.Document: return(new MFNodeByKindAndQNameFilter(new DOMChildrenAsMFNodeSequenceAdapter(node), MFNodeKind.Children, ((XmlQualifiedName)query).Name, ((XmlQualifiedName)query).Namespace)); default: return(MFEmptySequence.Instance); } case MFQueryKind.SelfByQName: switch (node.NodeType) { case XmlNodeType.Element: case XmlNodeType.Attribute: if (node.LocalName == ((XmlQualifiedName)query).Name && node.NamespaceURI == ((XmlQualifiedName)query).Namespace) { return(new MFSingletonSequence(this)); } else { return(MFEmptySequence.Instance); } default: return(MFEmptySequence.Instance); } case MFQueryKind.AttributeByQName: switch (node.NodeType) { case XmlNodeType.Element: { XmlAttribute att = node.Attributes[((XmlQualifiedName)query).Name, ((XmlQualifiedName)query).Namespace]; if (att != null) { return(new MFSingletonSequence(new DOMNodeAsMFNodeAdapter(att))); } else { return(MFEmptySequence.Instance); } } default: return(MFEmptySequence.Instance); } default: throw new InvalidOperationException("Unsupported query type."); } }
public IEnumerable Select(MFQueryKind kind, object query) { throw new InvalidOperationException("Unsupported selection."); }