public static XmlnsSchemaPointerPart ParseSchemaData(XPointerLexer lexer) { //[1] XmlnsSchemeData ::= NCName S? '=' S? EscapedNamespaceName //[2] EscapedNamespaceName ::= EscapedData* //Read prefix as NCName lexer.NextLexeme(); if (lexer.Kind != XPointerLexer.LexKind.NCName) { Debug.WriteLine(Monobjc.Tools.Sdp.Properties.Resources.InvalidTokenInXmlnsSchemeWhileNCNameExpected); return null; } string prefix = lexer.NCName; lexer.SkipWhiteSpace(); lexer.NextLexeme(); if (lexer.Kind != XPointerLexer.LexKind.Eq) { Debug.WriteLine(Monobjc.Tools.Sdp.Properties.Resources.InvalidTokenInXmlnsSchemeWhileEqualsSignExpected); return null; } lexer.SkipWhiteSpace(); string nsURI; try { nsURI = lexer.ParseEscapedData(); } catch (Exception e) { throw new XPointerSyntaxException(String.Format(CultureInfo.CurrentCulture, Monobjc.Tools.Sdp.Properties.Resources.SyntaxErrorInXmlnsSchemeData, e.Message)); } return new XmlnsSchemaPointerPart(prefix, nsURI); }
public static XPointerSchemaPointerPart ParseSchemaData(XPointerLexer lexer) { try { return new XPointerSchemaPointerPart(lexer.ParseEscapedData()); } catch (Exception e) { throw new XPointerSyntaxException(SR.GetString("SyntaxErrorInXPointerSchemeData", e.Message)); } }
public static XPointerSchemaPointerPart ParseSchemaData(XPointerLexer lexer) { try { return(new XPointerSchemaPointerPart(lexer.ParseEscapedData())); } catch (Exception e) { throw new XPointerSyntaxException(string.Format(CultureInfo.CurrentCulture, Properties.Resources.SyntaxErrorInXPointerSchemeData, e.Message)); } }
public static XPointerSchemaPointerPart ParseSchemaData(XPointerLexer lexer) { try { return new XPointerSchemaPointerPart(lexer.ParseEscapedData()); } catch (Exception e) { throw new XPointerSyntaxException(String.Format(CultureInfo.CurrentCulture, Properties.Resources.SyntaxErrorInXPointerSchemeData, e.Message)); } }
public static XPointerSchemaPointerPart ParseSchemaData(XPointerLexer lexer) { XPointerSchemaPointerPart part = new XPointerSchemaPointerPart(); try { part.XPath = lexer.ParseEscapedData(); } catch (Exception e) { throw new XPointerSyntaxException(SR.GetString("SyntaxErrorInXPointerSchemeData", e.Message)); } return part; }
public static XPointerSchemaPointerPart ParseSchemaData(XPointerLexer lexer) { XPointerSchemaPointerPart part = new XPointerSchemaPointerPart(); try { part.XPath = lexer.ParseEscapedData(); } catch (Exception e) { throw new XPointerSyntaxException(SR.GetString("SyntaxErrorInXPointerSchemeData", e.Message)); } return(part); }
public static XPath1SchemaPointerPart ParseSchemaData(XPointerLexer lexer) { XPath1SchemaPointerPart part = new XPath1SchemaPointerPart(); try { part._xpath = lexer.ParseEscapedData(); } catch (Exception e) { throw new XPointerSyntaxException(String.Format( CultureInfo.CurrentCulture, Monobjc.Tools.Sdp.Properties.Resources.SyntaxErrorInXPath1SchemeData, e.Message)); } return part; }
public static XPath1SchemaPointerPart ParseSchemaData(XPointerLexer lexer) { XPath1SchemaPointerPart part = new XPath1SchemaPointerPart(); try { part._xpath = lexer.ParseEscapedData(); } catch (Exception e) { throw new XPointerSyntaxException(String.Format( CultureInfo.CurrentCulture, Properties.Resources.SyntaxErrorInXPath1SchemeData, e.Message)); } return(part); }
public static XmlnsSchemaPointerPart ParseSchemaData(XPointerLexer lexer) { //[1] XmlnsSchemeData ::= NCName S? '=' S? EscapedNamespaceName //[2] EscapedNamespaceName ::= EscapedData* //Read prefix as NCName lexer.NextLexeme(); if (lexer.Kind != XPointerLexer.LexKind.NCName) { Debug.WriteLine(SR.InvalidTokenInXmlnsSchemeWhileNCNameExpected); return null; } string prefix = lexer.NCName; lexer.SkipWhiteSpace(); lexer.NextLexeme(); if (lexer.Kind != XPointerLexer.LexKind.Eq) { Debug.WriteLine(SR.InvalidTokenInXmlnsSchemeWhileEqualsSignExpected); return null; } lexer.SkipWhiteSpace(); string nsURI; try { nsURI = lexer.ParseEscapedData(); } catch (Exception e) { throw new XPointerSyntaxException(SR.GetString("SyntaxErrorInXmlnsSchemeData", e.Message)); } return new XmlnsSchemaPointerPart(prefix, nsURI); }
public static Pointer ParseXPointer(string xpointer) { var lexer = new XPointerLexer(xpointer); lexer.NextLexeme(); if (lexer.Kind == XPointerLexer.LexKind.NcName && !lexer.CanBeSchemaName) { //Shorthand pointer Pointer ptr = new ShorthandPointer(lexer.NcName); lexer.NextLexeme(); if (lexer.Kind != XPointerLexer.LexKind.Eof) { throw new XPointerSyntaxException(Properties.Resources.InvalidTokenAfterShorthandPointer); } return(ptr); } //SchemaBased pointer IList <PointerPart> parts = new List <PointerPart>(); while (lexer.Kind != XPointerLexer.LexKind.Eof) { if ((lexer.Kind == XPointerLexer.LexKind.NcName || lexer.Kind == XPointerLexer.LexKind.QName) && lexer.CanBeSchemaName) { XPointerSchema.SchemaType schemaType = GetSchema(lexer, parts); //Move to '(' lexer.NextLexeme(); switch (schemaType) { case XPointerSchema.SchemaType.Element: ElementSchemaPointerPart elemPart = ElementSchemaPointerPart.ParseSchemaData(lexer); if (elemPart != null) { parts.Add(elemPart); } break; case XPointerSchema.SchemaType.Xmlns: XmlnsSchemaPointerPart xmlnsPart = XmlnsSchemaPointerPart.ParseSchemaData(lexer); if (xmlnsPart != null) { parts.Add(xmlnsPart); } break; case XPointerSchema.SchemaType.XPath1: XPath1SchemaPointerPart xpath1Part = XPath1SchemaPointerPart.ParseSchemaData(lexer); if (xpath1Part != null) { parts.Add(xpath1Part); } break; case XPointerSchema.SchemaType.XPointer: XPointerSchemaPointerPart xpointerPart = XPointerSchemaPointerPart.ParseSchemaData(lexer); if (xpointerPart != null) { parts.Add(xpointerPart); } break; default: //Unknown scheme lexer.ParseEscapedData(); break; } //Skip ')' lexer.NextLexeme(); //Skip possible whitespace if (lexer.Kind == XPointerLexer.LexKind.Space) { lexer.NextLexeme(); } } else { throw new XPointerSyntaxException(Properties.Resources.InvalidToken); } } return(new SchemaBasedPointer(parts, xpointer)); }
public static Pointer ParseXPointer(string xpointer) { IList<PointerPart> parts; XPointerLexer lexer; lexer = new XPointerLexer(xpointer); lexer.NextLexeme(); if (lexer.Kind == XPointerLexer.LexKind.NCName && !lexer.CanBeSchemaName) { //Shorthand pointer Pointer ptr = new ShorthandPointer(lexer.NCName); lexer.NextLexeme(); if (lexer.Kind != XPointerLexer.LexKind.Eof) throw new XPointerSyntaxException(SR.InvalidTokenAfterShorthandPointer); return ptr; } else { //SchemaBased pointer parts = new List<PointerPart>(); while (lexer.Kind != XPointerLexer.LexKind.Eof) { if ((lexer.Kind == XPointerLexer.LexKind.NCName || lexer.Kind == XPointerLexer.LexKind.QName) && lexer.CanBeSchemaName) { XPointerSchema.SchemaType schemaType = GetSchema(lexer, parts); //Move to '(' lexer.NextLexeme(); switch (schemaType) { case XPointerSchema.SchemaType.Element: ElementSchemaPointerPart elemPart = ElementSchemaPointerPart.ParseSchemaData(lexer); if (elemPart != null) parts.Add(elemPart); break; case XPointerSchema.SchemaType.Xmlns: XmlnsSchemaPointerPart xmlnsPart = XmlnsSchemaPointerPart.ParseSchemaData(lexer); if (xmlnsPart != null) parts.Add(xmlnsPart); break; case XPointerSchema.SchemaType.XPath1: XPath1SchemaPointerPart xpath1Part = XPath1SchemaPointerPart.ParseSchemaData(lexer); if (xpath1Part != null) parts.Add(xpath1Part); break; case XPointerSchema.SchemaType.XPointer: XPointerSchemaPointerPart xpointerPart = XPointerSchemaPointerPart.ParseSchemaData(lexer); if (xpointerPart != null) parts.Add(xpointerPart); break; default: //Unknown scheme lexer.ParseEscapedData(); break; } //Skip ')' lexer.NextLexeme(); //Skip possible whitespace if (lexer.Kind == XPointerLexer.LexKind.Space) lexer.NextLexeme(); } else throw new XPointerSyntaxException(SR.InvalidToken); } return new SchemaBasedPointer(parts, xpointer); } }