public void PushPEBuffer(DTDParameterEntityDeclaration pe) { sourceStack.Push(source); source = new XmlParserInputSource( new StringReader(pe.ReplacementText), pe.ActualUri, true, 1, 0); }
// The reader is positioned on the first name char. private void ReadParameterEntityDecl () { DTDParameterEntityDeclaration decl = new DTDParameterEntityDeclaration (DTD); decl.BaseURI = BaseURI; decl.XmlResolver = DTD.Resolver; decl.Name = ReadName (); if (!SkipWhitespace ()) throw NotWFError ("Whitespace is required after name in DTD parameter entity declaration."); if (PeekChar () == 'S' || PeekChar () == 'P') { // read publicId/systemId ReadExternalID (); decl.PublicId = cachedPublicId; decl.SystemId = cachedSystemId; SkipWhitespace (); decl.Resolve (); ResolveExternalEntityReplacementText (decl); } else { TryExpandPERef (); int quoteChar = ReadChar (); if (quoteChar != '\'' && quoteChar != '"') throw NotWFError ("quotation char was expected."); ClearValueBuffer (); bool loop = true; while (loop) { int c = ReadChar (); switch (c) { case -1: throw NotWFError ("unexpected end of stream in entity value definition."); case '"': if (quoteChar == '"') loop = false; else AppendValueChar ('"'); break; case '\'': if (quoteChar == '\'') loop = false; else AppendValueChar ('\''); break; default: if (XmlChar.IsInvalid (c)) throw NotWFError ("Invalid character was used to define parameter entity."); AppendValueChar (c); break; } } decl.LiteralEntityValue = CreateValueString (); ClearValueBuffer (); ResolveInternalEntityReplacementText (decl); } ExpectAfterWhitespace ('>'); if (DTD.PEDecls [decl.Name] == null) { DTD.PEDecls.Add (decl.Name, decl); } }
public void PushPEBuffer (DTDParameterEntityDeclaration pe) { sourceStack.Push (source); source = new XmlParserInputSource ( new StringReader (pe.ReplacementText), pe.ActualUri, true, 1, 0); }