System.Xml.Xsl.Qil.QilTypeChecker.CheckFilter C# (CSharp) Method

CheckFilter() public method

public CheckFilter ( QilLoop node ) : XmlQueryType
node QilLoop
return XmlQueryType
        public XmlQueryType CheckFilter(QilLoop node) {
            CheckClass(node[0], typeof(QilIterator));
            Check(node.Variable.NodeType == QilNodeType.For || node.Variable.NodeType == QilNodeType.Let, node, "Filter variable must be a For or Let iterator");
            CheckXmlType(node.Body, XmlQueryTypeFactory.BooleanX);

            // Attempt to restrict filter's type by checking condition
            XmlQueryType filterType = FindFilterType(node.Variable, node.Body);
            if (filterType != null)
                return filterType;

            return XmlQueryTypeFactory.AtMost(node.Variable.Binding.XmlType, node.Variable.Binding.XmlType.Cardinality);
        }
        

Usage Example

Exemplo n.º 1
0
        public QilLoop Filter(QilNode variable, QilNode body)
        {
            QilLoop n = new QilLoop(QilNodeType.Filter, variable, body);

            n.XmlType = _typeCheck.CheckFilter(n);
            TraceNode(n);
            return(n);
        }
QilTypeChecker