protected void AssignFrom(AxisNodeIterator src) { context = src.context; typeTest = src.typeTest; nameTest = src.nameTest; matchSelf = src.matchSelf; iter = src.iter.Clone(); }
public SequenceType(XmlTypeCode typeCode, XmlQualifiedNameTest nameTest, XmlSchemaType schemaType, bool isNillable = false) { TypeCode = typeCode; Cardinality = XmlTypeCardinality.One; NameTest = nameTest; SchemaType = schemaType; Nillable = isNillable; IsNode = TypeCodeIsNodeType(TypeCode); ItemType = TypeCodeToItemType(TypeCode, SchemaType); }
public NodeTest(object test) { if (test is XmlQualifiedNameTest qualifiedNameTest) { NameTest = qualifiedNameTest; } else if (test is SequenceType type && !Equals(type, SequenceType.Node)) { TypeTest = type; } }
public NodeTest(object test) { if (test is XmlQualifiedNameTest) { nameTest = (XmlQualifiedNameTest)test; } else if (test is SequenceType && test != SequenceType.Node) { typeTest = (SequenceType)test; } }
public SequenceType(XmlTypeCode typeCode, XmlQualifiedNameTest nameTest) { TypeCode = typeCode; Cardinality = XmlTypeCardinality.One; NameTest = nameTest; IsNode = TypeCodeIsNodeType(TypeCode); if (TypeCode != XmlTypeCode.Item && !IsNode) { SchemaType = XmlSchemaType.GetBuiltInSimpleType(TypeCode); } ItemType = TypeCodeToItemType(TypeCode, SchemaType); }
public AxisNodeIterator(XPath2Context context, object nodeTest, bool matchSelf, XPath2NodeIterator iter) { this.context = context; if (nodeTest is XmlQualifiedNameTest) { nameTest = (XmlQualifiedNameTest)nodeTest; } else if (nodeTest is SequenceType && nodeTest != SequenceType.Node) { typeTest = (SequenceType)nodeTest; } this.matchSelf = matchSelf; this.iter = iter; }
private bool TestItem(XPathNavigator nav, NodeTest nodeTest) { XmlQualifiedNameTest nameTest = nodeTest.nameTest; SequenceType typeTest = nodeTest.typeTest; if (nameTest != null) { return((nav.NodeType == XPathNodeType.Element || nav.NodeType == XPathNodeType.Attribute) && (nameTest.IsNamespaceWildcard || nameTest.Namespace == nav.NamespaceURI) && (nameTest.IsNameWildcard || nameTest.Name == nav.LocalName)); } else if (typeTest != null) { return(typeTest.Match(nav, context)); } return(true); }
/// <summary> /// Create an XmlQueryType that represents the type of "item". /// </summary> private XmlQueryType CreateXmlType(XPathItem item) { if (item.IsNode) { // Rtf RtfNavigator rtf = item as RtfNavigator; if (rtf != null) { return(XmlQueryTypeFactory.Node); } // Node XPathNavigator nav = (XPathNavigator)item; switch (nav.NodeType) { case XPathNodeType.Root: case XPathNodeType.Element: if (nav.XmlType == null) { return(XmlQueryTypeFactory.Type(nav.NodeType, XmlQualifiedNameTest.New(nav.LocalName, nav.NamespaceURI), XmlSchemaComplexType.UntypedAnyType, false)); } return(XmlQueryTypeFactory.Type(nav.NodeType, XmlQualifiedNameTest.New(nav.LocalName, nav.NamespaceURI), nav.XmlType, nav.SchemaInfo.SchemaElement.IsNillable)); case XPathNodeType.Attribute: if (nav.XmlType == null) { return(XmlQueryTypeFactory.Type(nav.NodeType, XmlQualifiedNameTest.New(nav.LocalName, nav.NamespaceURI), DatatypeImplementation.UntypedAtomicType, false)); } return(XmlQueryTypeFactory.Type(nav.NodeType, XmlQualifiedNameTest.New(nav.LocalName, nav.NamespaceURI), nav.XmlType, false)); } return(XmlQueryTypeFactory.Type(nav.NodeType, XmlQualifiedNameTest.Wildcard, XmlSchemaComplexType.AnyType, false)); } // Atomic value return(XmlQueryTypeFactory.Type((XmlSchemaSimpleType)item.XmlType, true)); }
public SequenceType(XmlTypeCode typeCode, XmlQualifiedNameTest nameTest, XmlSchemaType schemaType) : this(typeCode, nameTest, schemaType, false) { }
public bool TestNode(XmlQualifiedNameTest nameTest, XQuerySequenceType typeTest) { if (nameTest != null) { return (NodeType == XPathNodeType.Element || NodeType == XPathNodeType.Attribute) && (nameTest.IsNamespaceWildcard || nameTest.Namespace == NamespaceURI) && (nameTest.IsNameWildcard || nameTest.Name == LocalName); } else if (typeTest != null) return typeTest.Match(this); return true; }