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)
{
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;
string schemaQName = schemaNSURI + ':' + lexer.NCName;
return _schemas.ContainsKey(schemaQName) ? _schemas[schemaQName] : XPointerSchema.SchemaType.Unknown;
}