Exemple #1
0
        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);
        }
Exemple #2
0
        /// <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));
        }
Exemple #4
0
        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);
            }
        }