Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ BuildAxisFilter()

QilNode System.Xml.Xsl.XPath.XPathBuilder.BuildAxisFilter ( QilNode qilAxis,
XPathAxis xpathAxis,
XPathNodeType nodeType,
string name,
string nsUri )
inlineprivateinherited

Definition at line 610 of file XPathBuilder.cs.

611 {
612 XmlNodeKindFlags nodeKinds = qilAxis.XmlType.NodeKinds;
613 XmlNodeKindFlags xmlNodeKindFlags = AxisTypeMask(nodeKinds, nodeType, xpathAxis);
614 if (xmlNodeKindFlags == XmlNodeKindFlags.None)
615 {
616 return _f.Sequence();
617 }
618 QilIterator expr;
620 {
621 qilAxis = _f.Filter(expr = _f.For(qilAxis), _f.IsType(expr, XmlQueryTypeFactory.NodeChoice(xmlNodeKindFlags)));
622 qilAxis.XmlType = XmlQueryTypeFactory.PrimeProduct(XmlQueryTypeFactory.NodeChoice(xmlNodeKindFlags), qilAxis.XmlType.Cardinality);
623 if (qilAxis.NodeType == QilNodeType.Filter)
624 {
626 qilLoop.Body = _f.And(qilLoop.Body, (name != null && nsUri != null) ? _f.Eq(_f.NameOf(expr), _f.QName(name, nsUri)) : ((nsUri != null) ? _f.Eq(_f.NamespaceUriOf(expr), _f.String(nsUri)) : ((name != null) ? _f.Eq(_f.LocalNameOf(expr), _f.String(name)) : _f.True())));
627 return qilLoop;
628 }
629 }
630 return _f.Filter(expr = _f.For(qilAxis), (name != null && nsUri != null) ? _f.Eq(_f.NameOf(expr), _f.QName(name, nsUri)) : ((nsUri != null) ? _f.Eq(_f.NamespaceUriOf(expr), _f.String(nsUri)) : ((name != null) ? _f.Eq(_f.LocalNameOf(expr), _f.String(name)) : _f.True())));
631 }
QilIterator For(QilNode binding)
QilNode Filter(QilIterator variable, QilNode expr)
QilNode IsType(QilNode expr, XmlQueryType t)
QilNode And(QilNode left, QilNode right)
QilName QName(string local, string uri, string prefix)
QilNode Eq(QilNode left, QilNode right)
readonly XPathQilFactory _f
static XmlNodeKindFlags AxisTypeMask(XmlNodeKindFlags inputTypeMask, XPathNodeType nodeType, XPathAxis xpathAxis)

References System.Xml.Xsl.XPath.XPathBuilder._f, System.Xml.Xsl.Qil.QilPatternFactory.And(), System.Xml.Xsl.XPath.XPathBuilder.AxisTypeMask(), System.Xml.Dictionary, System.Xml.Xsl.Qil.QilPatternFactory.Eq(), System.Xml.Xsl.Qil.QilPatternFactory.Filter(), System.Xml.Xsl.Qil.QilPatternFactory.For(), System.Xml.Xsl.Qil.QilPatternFactory.IsType(), System.Xml.Xsl.Qil.QilPatternFactory.LocalNameOf(), System.Xml.Xsl.Qil.QilPatternFactory.NameOf(), System.Xml.Xsl.Qil.QilPatternFactory.NamespaceUriOf(), System.Xml.Xsl.XmlQueryTypeFactory.NodeChoice(), System.Xml.Xsl.XmlQueryTypeFactory.PrimeProduct(), System.Xml.Xsl.Qil.QilPatternFactory.QName(), System.Xml.Xsl.Qil.QilPatternFactory.Sequence(), System.Xml.Xsl.Qil.QilPatternFactory.String(), and System.Xml.Xsl.Qil.QilPatternFactory.True().

Referenced by System.Xml.Xsl.XPath.XPathBuilder.BuildAxis().