private static XPointerSchema.SchemaType GetSchema(XPointerLexer lexer, IList <PointerPart> parts) { string schemaNsuri; if (lexer.Prefix != string.Empty) { schemaNsuri = null; //resolve prefix for (int i = parts.Count - 1; i >= 0; i--) { PointerPart part = parts[i]; if (part is XmlnsSchemaPointerPart xmlnsPart && xmlnsPart.Prefix == lexer.Prefix) { schemaNsuri = xmlnsPart.Uri; break; } } if (schemaNsuri == null) //No binding for the prefix - ignore pointer part { return(XPointerSchema.SchemaType.Unknown); } } else { schemaNsuri = string.Empty; } string schemaQName = schemaNsuri + ':' + lexer.NcName; return(schemas.ContainsKey(schemaQName) ? schemas[schemaQName] : XPointerSchema.SchemaType.Unknown); }
/// <summary> /// Evaluates <see cref="XPointer"/> pointer and returns /// iterator over pointed nodes. /// </summary> /// <param name="nav">XPathNavigator to evaluate the /// <see cref="XPointer"/> on.</param> /// <returns><see cref="XPathNodeIterator"/> over pointed nodes</returns> public override XPathNodeIterator Evaluate(XPathNavigator nav) { XPathNodeIterator result; XmlNamespaceManager nm = new XmlNamespaceManager(nav.NameTable); for (int i = 0; i < _parts.Count; i++) { PointerPart part = _parts[i]; result = part.Evaluate(nav, nm); if (result != null && result.MoveNext()) { return(result); } } throw new NoSubresourcesIdentifiedException(String.Format(CultureInfo.CurrentCulture, Monobjc.Tools.Sdp.Properties.Resources.NoSubresourcesIdentifiedException, _xpointer)); }
/// <summary> /// Evaluates <see cref="XPointer"/> pointer and returns /// iterator over pointed nodes. /// </summary> /// <param name="nav">XPathNavigator to evaluate the /// <see cref="XPointer"/> on.</param> /// <returns><see cref="XPathNodeIterator"/> over pointed nodes</returns> public override XPathNodeIterator Evaluate(XPathNavigator nav) { XPathNodeIterator result; XmlNamespaceManager nm = new XmlNamespaceManager(nav.NameTable); for (int i = 0; i < _parts.Count; i++) { PointerPart part = (PointerPart)_parts[i]; result = part.Evaluate(nav, nm); if (result != null && result.MoveNext()) { return(result); } } throw new NoSubresourcesIdentifiedException(SR.GetString("NoSubresourcesIdentifiedException", _xpointer)); }
private static XPointerSchema.SchemaType GetSchema(XPointerLexer lexer, ArrayList parts) { string schemaNSURI; if (lexer.Prefix != String.Empty) { schemaNSURI = null; //resolve prefix for (int i = parts.Count - 1; i >= 0; i--) { PointerPart part = (PointerPart)parts[i]; if (part is XmlnsSchemaPointerPart) { XmlnsSchemaPointerPart xmlnsPart = (XmlnsSchemaPointerPart)part; if (xmlnsPart.Prefix == lexer.Prefix) { schemaNSURI = xmlnsPart.Uri; break; } } } if (schemaNSURI == null) { //No binding for the prefix - ignore pointer part return(XPointerSchema.SchemaType.Unknown); } } else { schemaNSURI = String.Empty; } object o = _schemas[schemaNSURI + ':' + lexer.NCName]; if (o == null) { return(XPointerSchema.SchemaType.Unknown); } else { return((XPointerSchema.SchemaType)o); } }