* xmlread.pp, renamed TXMLReader to TXMLTextReader.

git-svn-id: trunk@18054 -
This commit is contained in:
sergei 2011-08-01 19:46:30 +00:00
parent da3fb5de0f
commit 65b41a6c73

View File

@ -160,13 +160,13 @@ type
TDOMEntityEx = class(TDOMEntity);
TXMLReader = class;
TXMLTextReader = class;
TXMLCharSource = class(TObject)
private
FBuf: PWideChar;
FBufEnd: PWideChar;
FReader: TXMLReader;
FReader: TXMLTextReader;
FParent: TXMLCharSource;
FEntity: TEntityDecl;
FLineNo: Integer;
@ -268,7 +268,7 @@ type
TLiteralType = (ltPlain, ltPubid, ltEntity);
TXMLReader = class
TXMLTextReader = class
private
FSource: TXMLCharSource;
FNameTable: THashTable;
@ -536,7 +536,7 @@ procedure TDOMParser.Parse(Src: TXMLInputSource; out ADoc: TXMLDocument);
var
InputSrc: TXMLCharSource;
begin
with TXMLReader.Create(Self) do
with TXMLTextReader.Create(Self) do
try
ConvertSource(Src, InputSrc); // handles 'no-input-specified' case
ProcessXML(InputSrc)
@ -551,7 +551,7 @@ var
Src: TXMLCharSource;
begin
ADoc := nil;
with TXMLReader.Create(Self) do
with TXMLTextReader.Create(Self) do
try
if ResolveResource(URI, '', '', Src) then
ProcessXML(Src)
@ -581,7 +581,7 @@ begin
if not (node.NodeType in [ELEMENT_NODE, DOCUMENT_FRAGMENT_NODE]) then
raise EDOMHierarchyRequest.Create('DOMParser.ParseWithContext');
with TXMLReader.Create(Self) do
with TXMLTextReader.Create(Self) do
try
ConvertSource(Src, InputSrc); // handles 'no-input-specified' case
Frag := Context.OwnerDocument.CreateDocumentFragment;
@ -957,9 +957,9 @@ begin
inherited Destroy;
end;
{ TXMLReader }
{ TXMLTextReader }
procedure TXMLReader.ConvertSource(SrcIn: TXMLInputSource; out SrcOut: TXMLCharSource);
procedure TXMLTextReader.ConvertSource(SrcIn: TXMLInputSource; out SrcOut: TXMLCharSource);
begin
SrcOut := nil;
if Assigned(SrcIn) then
@ -975,13 +975,13 @@ begin
DoErrorPos(esFatal, 'No input source specified', NullLocation);
end;
procedure TXMLReader.StoreLocation(out Loc: TLocation);
procedure TXMLTextReader.StoreLocation(out Loc: TLocation);
begin
Loc.Line := FSource.FLineNo;
Loc.LinePos := FSource.FBuf-FSource.LFPos;
end;
function TXMLReader.ResolveResource(const ASystemID, APublicID, ABaseURI: WideString; out Source: TXMLCharSource): Boolean;
function TXMLTextReader.ResolveResource(const ASystemID, APublicID, ABaseURI: WideString; out Source: TXMLCharSource): Boolean;
var
AbsSysID: WideString;
Filename: string;
@ -1012,7 +1012,7 @@ begin
Result := Assigned(Source);
end;
procedure TXMLReader.Initialize(ASource: TXMLCharSource);
procedure TXMLTextReader.Initialize(ASource: TXMLCharSource);
begin
ASource.FParent := FSource;
FSource := ASource;
@ -1021,29 +1021,29 @@ begin
FSource.Initialize;
end;
procedure TXMLReader.FatalError(Expected: WideChar);
procedure TXMLTextReader.FatalError(Expected: WideChar);
begin
// FIX: don't output what is found - anything may be found, including exploits...
FatalError('Expected "%1s"', [string(Expected)]);
end;
procedure TXMLReader.FatalError(const descr: String; LineOffs: Integer);
procedure TXMLTextReader.FatalError(const descr: String; LineOffs: Integer);
begin
DoError(esFatal, descr, LineOffs);
end;
procedure TXMLReader.FatalError(const descr: string; const args: array of const; LineOffs: Integer);
procedure TXMLTextReader.FatalError(const descr: string; const args: array of const; LineOffs: Integer);
begin
DoError(esFatal, Format(descr, args), LineOffs);
end;
procedure TXMLReader.ValidationError(const Msg: string; const Args: array of const; LineOffs: Integer);
procedure TXMLTextReader.ValidationError(const Msg: string; const Args: array of const; LineOffs: Integer);
begin
if FValidate then
DoError(esError, Format(Msg, Args), LineOffs);
end;
procedure TXMLReader.ValidationErrorWithName(const Msg: string; LineOffs: Integer);
procedure TXMLTextReader.ValidationErrorWithName(const Msg: string; LineOffs: Integer);
var
ws: WideString;
begin
@ -1051,7 +1051,7 @@ begin
ValidationError(Msg, [ws], LineOffs);
end;
procedure TXMLReader.DoError(Severity: TErrorSeverity; const descr: string; LineOffs: Integer);
procedure TXMLTextReader.DoError(Severity: TErrorSeverity; const descr: string; LineOffs: Integer);
var
Loc: TLocation;
begin
@ -1065,13 +1065,13 @@ begin
DoErrorPos(Severity, descr, FTokenStart);
end;
procedure TXMLReader.DoErrorPos(Severity: TErrorSeverity; const descr: string;
procedure TXMLTextReader.DoErrorPos(Severity: TErrorSeverity; const descr: string;
const args: array of const; const ErrPos: TLocation);
begin
DoErrorPos(Severity, Format(descr, args), ErrPos);
end;
procedure TXMLReader.DoErrorPos(Severity: TErrorSeverity; const descr: string; const ErrPos: TLocation);
procedure TXMLTextReader.DoErrorPos(Severity: TErrorSeverity; const descr: string; const ErrPos: TLocation);
var
E: EXMLReadError;
sysid: WideString;
@ -1095,7 +1095,7 @@ begin
E.Free;
end;
procedure TXMLReader.CheckMaxChars(ToAdd: Cardinal);
procedure TXMLTextReader.CheckMaxChars(ToAdd: Cardinal);
var
src: TXMLCharSource;
total: Cardinal;
@ -1113,7 +1113,7 @@ begin
until src = nil;
end;
procedure TXMLReader.CallErrorHandler(E: EXMLReadError);
procedure TXMLTextReader.CallErrorHandler(E: EXMLReadError);
begin
try
if Assigned(FCtrl) and Assigned(FCtrl.FOnError) then
@ -1127,7 +1127,7 @@ begin
end;
end;
function TXMLReader.SkipWhitespace(PercentAloneIsOk: Boolean): Boolean;
function TXMLTextReader.SkipWhitespace(PercentAloneIsOk: Boolean): Boolean;
begin
Result := False;
repeat
@ -1162,13 +1162,13 @@ begin
until False;
end;
procedure TXMLReader.ExpectWhitespace;
procedure TXMLTextReader.ExpectWhitespace;
begin
if not SkipWhitespace then
FatalError('Expected whitespace');
end;
function TXMLReader.SkipS(Required: Boolean): Boolean;
function TXMLTextReader.SkipS(Required: Boolean): Boolean;
var
p: PWideChar;
begin
@ -1193,7 +1193,7 @@ begin
FatalError('Expected whitespace');
end;
procedure TXMLReader.ExpectString(const s: String);
procedure TXMLTextReader.ExpectString(const s: String);
var
I: Integer;
begin
@ -1205,7 +1205,7 @@ begin
end;
end;
function TXMLReader.CheckForChar(c: WideChar): Boolean;
function TXMLTextReader.CheckForChar(c: WideChar): Boolean;
begin
Result := (FSource.FBuf^ = c);
if Result then
@ -1216,7 +1216,7 @@ begin
end;
end;
procedure TXMLReader.SkipQuote(out Delim: WideChar; required: Boolean);
procedure TXMLTextReader.SkipQuote(out Delim: WideChar; required: Boolean);
begin
Delim := #0;
if (FSource.FBuf^ = '''') or (FSource.FBuf^ = '"') then
@ -1232,7 +1232,7 @@ end;
const
PrefixDefault: array[0..4] of WideChar = ('x','m','l','n','s');
constructor TXMLReader.Create;
constructor TXMLTextReader.Create;
begin
inherited Create;
BufAllocate(FName, 128);
@ -1246,7 +1246,7 @@ begin
SetLength(FValidators, 16);
end;
constructor TXMLReader.Create(AParser: TDOMParser);
constructor TXMLTextReader.Create(AParser: TDOMParser);
begin
Create;
FCtrl := AParser;
@ -1264,7 +1264,7 @@ begin
FMaxChars := FCtrl.Options.MaxChars;
end;
destructor TXMLReader.Destroy;
destructor TXMLTextReader.Destroy;
var
i: Integer;
begin
@ -1288,7 +1288,7 @@ begin
inherited Destroy;
end;
procedure TXMLReader.XML11_BuildTables;
procedure TXMLTextReader.XML11_BuildTables;
begin
FNamePages := Xml11NamePages;
FXML11 := True;
@ -1297,7 +1297,7 @@ end;
{ Must be executed after doc has been set.
After introducing own NameTable, merge this into constructor }
procedure TXMLReader.NSPrepare;
procedure TXMLTextReader.NSPrepare;
begin
if FNamespaces then
begin
@ -1311,7 +1311,7 @@ begin
end;
end;
procedure TXMLReader.ProcessXML(ASource: TXMLCharSource);
procedure TXMLTextReader.ProcessXML(ASource: TXMLCharSource);
begin
doc := TXMLDocument.Create;
doc.documentURI := ASource.SystemID; // TODO: to be changed to URI or BaseURI
@ -1337,7 +1337,7 @@ begin
FIDMap := nil;
end;
procedure TXMLReader.ProcessFragment(ASource: TXMLCharSource; AOwner: TDOMNode);
procedure TXMLTextReader.ProcessFragment(ASource: TXMLCharSource; AOwner: TDOMNode);
var
DoctypeNode: TDOMDocumentTypeEx;
begin
@ -1368,7 +1368,7 @@ begin
ParseContent(aOwner as TDOMNode_WithChildren);
end;
function TXMLReader.CheckName(aFlags: TCheckNameFlags): Boolean;
function TXMLTextReader.CheckName(aFlags: TCheckNameFlags): Boolean;
var
p: PWideChar;
NameStartFlag: Boolean;
@ -1441,13 +1441,13 @@ begin
RaiseNameNotFound;
end;
procedure TXMLReader.CheckNCName;
procedure TXMLTextReader.CheckNCName;
begin
if FNamespaces and (FColonPos <> -1) then
FatalError('Names of entities, notations and processing instructions may not contain colons', FName.Length);
end;
procedure TXMLReader.RaiseNameNotFound;
procedure TXMLTextReader.RaiseNameNotFound;
begin
if FColonPos <> -1 then
FatalError('Bad QName syntax, local part is missing')
@ -1460,13 +1460,13 @@ begin
FatalError('Name starts with invalid character');
end;
function TXMLReader.ExpectName: WideString;
function TXMLTextReader.ExpectName: WideString;
begin
CheckName;
SetString(Result, FName.Buffer, FName.Length);
end;
function TXMLReader.ResolvePredefined: Boolean;
function TXMLTextReader.ResolvePredefined: Boolean;
var
wc: WideChar;
begin
@ -1500,7 +1500,7 @@ begin
Result := True;
end;
function TXMLReader.ParseRef(var ToFill: TWideCharBuf): Boolean; // [67]
function TXMLTextReader.ParseRef(var ToFill: TWideCharBuf): Boolean; // [67]
var
Code: Integer;
begin
@ -1560,7 +1560,7 @@ const
a node chain starting from AttrData.FNext. Node chain is built only for the
first level. If NonCDATA=True, additionally normalizes whitespace in string value. }
procedure TXMLReader.ExpectAttValue(AttrData: PNodeData; NonCDATA: Boolean);
procedure TXMLTextReader.ExpectAttValue(AttrData: PNodeData; NonCDATA: Boolean);
var
wc: WideChar;
Delim: WideChar;
@ -1641,7 +1641,7 @@ end;
const
PrefixChar: array[Boolean] of string = ('', '%');
procedure TXMLReader.EntityToSource(AEntity: TEntityDecl; out Src: TXMLCharSource);
procedure TXMLTextReader.EntityToSource(AEntity: TEntityDecl; out Src: TXMLCharSource);
begin
if AEntity.FOnStack then
FatalError('Entity ''%s%s'' recursively references itself', [PrefixChar[AEntity.FIsPE], AEntity.FName]);
@ -1670,7 +1670,7 @@ begin
Src.FEntity := AEntity;
end;
function TXMLReader.ContextPush(AEntity: TEntityDecl): Boolean;
function TXMLTextReader.ContextPush(AEntity: TEntityDecl): Boolean;
var
Src: TXMLCharSource;
begin
@ -1680,7 +1680,7 @@ begin
Initialize(Src);
end;
function TXMLReader.ContextPop(Forced: Boolean): Boolean;
function TXMLTextReader.ContextPop(Forced: Boolean): Boolean;
var
Src: TXMLCharSource;
Error: Boolean;
@ -1705,7 +1705,7 @@ begin
end;
end;
function TXMLReader.EntityCheck(NoExternals: Boolean): TEntityDecl;
function TXMLTextReader.EntityCheck(NoExternals: Boolean): TEntityDecl;
var
RefName: WideString;
cnt: Integer;
@ -1742,7 +1742,7 @@ begin
CheckMaxChars(Result.FCharCount - cnt);
end;
procedure TXMLReader.StartPE;
procedure TXMLTextReader.StartPE;
var
PEnt: TEntityDecl;
begin
@ -1770,7 +1770,7 @@ begin
FHavePERefs := True;
end;
function TXMLReader.PrefetchEntity(AEntity: TEntityDecl): Boolean;
function TXMLTextReader.PrefetchEntity(AEntity: TEntityDecl): Boolean;
begin
Result := ContextPush(AEntity);
if Result then
@ -1796,7 +1796,7 @@ const
[#0, '%', '&', '''', '"'] // ltEntity
);
function TXMLReader.ParseLiteral(var ToFill: TWideCharBuf; aType: TLiteralType;
function TXMLTextReader.ParseLiteral(var ToFill: TWideCharBuf; aType: TLiteralType;
Required: Boolean): Boolean;
var
start: TObject;
@ -1845,7 +1845,7 @@ begin
BufNormalize(ToFill, dummy);
end;
function TXMLReader.SkipUntilSeq(const Delim: TSetOfChar; c1: WideChar; c2: WideChar = #0): Boolean;
function TXMLTextReader.SkipUntilSeq(const Delim: TSetOfChar; c1: WideChar; c2: WideChar = #0): Boolean;
var
wc: WideChar;
begin
@ -1871,7 +1871,7 @@ begin
until wc = #0;
end;
procedure TXMLReader.ParseComment(discard: Boolean); // [15]
procedure TXMLTextReader.ParseComment(discard: Boolean); // [15]
var
SaveLength: Integer;
begin
@ -1892,7 +1892,7 @@ begin
FValue.Length := SaveLength;
end;
procedure TXMLReader.ParsePI; // [16]
procedure TXMLTextReader.ParsePI; // [16]
begin
FSource.NextChar; // skip '?'
CheckName;
@ -1919,7 +1919,7 @@ begin
FNameTable.FindOrAdd(FName.Buffer, FName.Length));
end;
function TXMLReader.CreatePINode: TDOMNode;
function TXMLTextReader.CreatePINode: TDOMNode;
var
NameStr, ValueStr: WideString;
begin
@ -1931,7 +1931,7 @@ end;
const
vers: array[Boolean] of TXMLVersion = (xmlVersion10, xmlVersion11);
procedure TXMLReader.ParseXmlOrTextDecl(TextDecl: Boolean);
procedure TXMLTextReader.ParseXmlOrTextDecl(TextDecl: Boolean);
var
Delim: WideChar;
buf: array[0..31] of WideChar;
@ -2012,7 +2012,7 @@ begin
FXML11 := True;
end;
procedure TXMLReader.DTDReloadHook;
procedure TXMLTextReader.DTDReloadHook;
var
p: PWideChar;
begin
@ -2031,7 +2031,7 @@ begin
FDTDStartPos := TXMLDecodingSource(FSource).FBufStart;
end;
procedure TXMLReader.ParseDoctypeDecl; // [28]
procedure TXMLTextReader.ParseDoctypeDecl; // [28]
var
Src: TXMLCharSource;
begin
@ -2092,7 +2092,7 @@ begin
FCurrNode^.FNodeType := ntDocumentType;
end;
procedure TXMLReader.ExpectEq; // [25]
procedure TXMLTextReader.ExpectEq; // [25]
begin
if FSource.FBuf^ <> '=' then
SkipS;
@ -2105,18 +2105,18 @@ end;
{ DTD stuff }
procedure TXMLReader.BadPENesting(S: TErrorSeverity);
procedure TXMLTextReader.BadPENesting(S: TErrorSeverity);
begin
if (S = esFatal) or FValidate then
DoError(S, 'Parameter entities must be properly nested');
end;
procedure TXMLReader.StandaloneError(LineOffs: Integer);
procedure TXMLTextReader.StandaloneError(LineOffs: Integer);
begin
ValidationError('Standalone constriant violation', [], LineOffs);
end;
function TXMLReader.ParseQuantity: TCPQuant;
function TXMLTextReader.ParseQuantity: TCPQuant;
begin
case FSource.FBuf^ of
'?': Result := cqZeroOrOnce;
@ -2129,7 +2129,7 @@ begin
FSource.NextChar;
end;
function TXMLReader.FindOrCreateElDef: TElementDecl;
function TXMLTextReader.FindOrCreateElDef: TElementDecl;
var
p: PHashItem;
begin
@ -2143,7 +2143,7 @@ begin
end;
end;
procedure TXMLReader.ExpectChoiceOrSeq(CP: TContentParticle; MustEndIn: TObject); // [49], [50]
procedure TXMLTextReader.ExpectChoiceOrSeq(CP: TContentParticle; MustEndIn: TObject); // [49], [50]
var
Delim: WideChar;
CurrentCP: TContentParticle;
@ -2183,7 +2183,7 @@ begin
CP.CPType := ctSeq; // '(foo)' is a sequence!
end;
procedure TXMLReader.ParseElementDecl; // [45]
procedure TXMLTextReader.ParseElementDecl; // [45]
var
ElDef: TElementDecl;
CurrentEntity: TObject;
@ -2263,7 +2263,7 @@ begin
end;
procedure TXMLReader.ParseNotationDecl; // [82]
procedure TXMLTextReader.ParseNotationDecl; // [82]
var
NameStr, SysID, PubID: WideString;
begin
@ -2290,7 +2290,7 @@ const
'NOTATION'
);
procedure TXMLReader.ParseAttlistDecl; // [52]
procedure TXMLTextReader.ParseAttlistDecl; // [52]
var
ElDef: TElementDecl;
AttDef: TAttributeDef;
@ -2423,7 +2423,7 @@ begin
end;
end;
procedure TXMLReader.ParseEntityDecl; // [70]
procedure TXMLTextReader.ParseEntityDecl; // [70]
var
IsPE, Exists: Boolean;
Entity: TEntityDecl;
@ -2500,7 +2500,7 @@ begin
end;
procedure TXMLReader.ParseMarkupDecl; // [29]
procedure TXMLTextReader.ParseMarkupDecl; // [29]
var
IncludeLevel: Integer;
IgnoreLevel: Integer;
@ -2611,7 +2611,7 @@ begin
FatalError('Illegal character in DTD');
end;
procedure TXMLReader.ProcessDTD(ASource: TXMLCharSource);
procedure TXMLTextReader.ProcessDTD(ASource: TXMLCharSource);
begin
doc := TXMLDocument.Create;
FNameTable := doc.Names;
@ -2624,9 +2624,9 @@ begin
end;
procedure TXMLReader.LoadEntity(AEntity: TEntityDecl);
procedure TXMLTextReader.LoadEntity(AEntity: TEntityDecl);
var
InnerReader: TXMLReader;
InnerReader: TXMLTextReader;
Src: TXMLCharSource;
Ent: TDOMEntityEx;
DoctypeNode: TDOMDocumentType;
@ -2637,7 +2637,7 @@ begin
Ent := TDOMEntityEx(DocTypeNode.Entities.GetNamedItem(AEntity.FName));
if Ent = nil then
Exit;
InnerReader := TXMLReader.Create(FCtrl);
InnerReader := TXMLTextReader.Create(FCtrl);
try
InnerReader.FAttrTag := FAttrTag;
InnerReader.FDocType := FDocType.Reference;
@ -2654,7 +2654,7 @@ begin
end;
end;
procedure TXMLReader.ValidateCurrentNode;
procedure TXMLTextReader.ValidateCurrentNode;
var
ElDef: TElementDecl;
AttDef: TAttributeDef;
@ -2750,7 +2750,7 @@ begin
end;
end;
procedure TXMLReader.HandleEntityStart;
procedure TXMLTextReader.HandleEntityStart;
begin
{ FNesting+1 is available due to overallocation in AllocNodeData() }
FCurrNode := @FNodeStack[FNesting+1];
@ -2760,7 +2760,7 @@ begin
FCurrNode^.FValueLength := 0;
end;
procedure TXMLReader.HandleEntityEnd;
procedure TXMLTextReader.HandleEntityEnd;
begin
ContextPop(True);
if FNesting > 0 then Dec(FNesting);
@ -2770,7 +2770,7 @@ begin
FNext := xtText;
end;
procedure TXMLReader.ResolveEntity;
procedure TXMLTextReader.ResolveEntity;
begin
if FCurrNode^.FNodeType <> ntEntityReference then
raise EInvalidOperation.Create('Wrong node type');
@ -2780,7 +2780,7 @@ begin
FNext := xtPushEntity;
end;
procedure TXMLReader.DoStartEntity;
procedure TXMLTextReader.DoStartEntity;
var
src: TXMLCharSource;
begin
@ -2798,7 +2798,7 @@ begin
FNext := xtText;
end;
function TXMLReader.DoStartElement: TDOMElement;
function TXMLTextReader.DoStartElement: TDOMElement;
var
Attr: TDOMAttr;
i: Integer;
@ -2871,7 +2871,7 @@ const
ntText
);
procedure TXMLReader.ParseContent(parent: TDOMNode_WithChildren);
procedure TXMLTextReader.ParseContent(parent: TDOMNode_WithChildren);
var
cursor: TDOMNode_WithChildren;
element: TDOMElement;
@ -2920,7 +2920,7 @@ begin
end;
end;
function TXMLReader.ReadTopLevel: Boolean;
function TXMLTextReader.ReadTopLevel: Boolean;
var
nonWs: Boolean;
wc: WideChar;
@ -3020,7 +3020,7 @@ begin
Result := tok <> xtEOF;
end;
function TXMLReader.Read: Boolean;
function TXMLTextReader.Read: Boolean;
var
nonWs: Boolean;
wc: WideChar;
@ -3199,7 +3199,7 @@ begin
Reload;
end;
procedure TXMLReader.ExpectChar(wc: WideChar);
procedure TXMLTextReader.ExpectChar(wc: WideChar);
begin
if FSource.FBuf^ = wc then
FSource.NextChar
@ -3208,7 +3208,7 @@ begin
end;
// Element name already in FNameBuffer
procedure TXMLReader.ParseStartTag; // [39] [40] [44]
procedure TXMLTextReader.ParseStartTag; // [39] [40] [44]
var
ElDef: TElementDecl;
IsEmpty: Boolean;
@ -3295,7 +3295,7 @@ begin
FNext := xtPopEmptyElement;
end;
procedure TXMLReader.ParseEndTag; // [42]
procedure TXMLTextReader.ParseEndTag; // [42]
var
ElName: PHashItem;
begin
@ -3321,7 +3321,7 @@ begin
FNext := xtPopElement;
end;
procedure TXMLReader.ParseAttribute(ElDef: TElementDecl);
procedure TXMLTextReader.ParseAttribute(ElDef: TElementDecl);
var
attrName: PHashItem;
attrData: PNodeData;
@ -3385,7 +3385,7 @@ begin
end;
end;
procedure TXMLReader.AddForwardRef(Buf: PWideChar; Length: Integer);
procedure TXMLTextReader.AddForwardRef(Buf: PWideChar; Length: Integer);
var
w: PForwardRef;
begin
@ -3395,7 +3395,7 @@ begin
FForwardRefs.Add(w);
end;
procedure TXMLReader.ClearForwardRefs;
procedure TXMLTextReader.ClearForwardRefs;
var
I: Integer;
begin
@ -3404,7 +3404,7 @@ begin
FForwardRefs.Clear;
end;
procedure TXMLReader.ValidateIdRefs;
procedure TXMLTextReader.ValidateIdRefs;
var
I: Integer;
begin
@ -3415,7 +3415,7 @@ begin
ClearForwardRefs;
end;
procedure TXMLReader.ProcessDefaultAttributes(ElDef: TElementDecl);
procedure TXMLTextReader.ProcessDefaultAttributes(ElDef: TElementDecl);
var
I: Integer;
AttDef: TAttributeDef;
@ -3460,7 +3460,7 @@ begin
end;
function TXMLReader.AddBinding(attrData: PNodeData): Boolean;
function TXMLTextReader.AddBinding(attrData: PNodeData): Boolean;
var
nsUri, Pfx: PHashItem;
begin
@ -3488,7 +3488,7 @@ begin
FNSHelper.BindPrefix(attrData^.FValueStr, Pfx);
end;
procedure TXMLReader.ProcessNamespaceAtts;
procedure TXMLTextReader.ProcessNamespaceAtts;
var
I, J: Integer;
Pfx, AttrName: PHashItem;
@ -3518,7 +3518,7 @@ begin
end;
end;
function TXMLReader.ParseExternalID(out SysID, PubID: WideString; // [75]
function TXMLTextReader.ParseExternalID(out SysID, PubID: WideString; // [75]
SysIdOptional: Boolean): Boolean;
var
I: Integer;
@ -3551,7 +3551,7 @@ begin
Result := True;
end;
function TXMLReader.ValidateAttrSyntax(AttrDef: TAttributeDef; const aValue: WideString): Boolean;
function TXMLTextReader.ValidateAttrSyntax(AttrDef: TAttributeDef; const aValue: WideString): Boolean;
begin
case AttrDef.DataType of
dtId, dtIdRef, dtEntity: Result := IsXmlName(aValue, FXML11) and
@ -3567,7 +3567,7 @@ begin
end;
end;
procedure TXMLReader.ValidateAttrValue(AttrDef: TAttributeDef; attrData: PNodeData);
procedure TXMLTextReader.ValidateAttrValue(AttrDef: TAttributeDef; attrData: PNodeData);
var
L, StartPos, EndPos: Integer;
Entity: TEntityDecl;
@ -3608,7 +3608,7 @@ begin
end;
end;
procedure TXMLReader.ValidateDTD;
procedure TXMLTextReader.ValidateDTD;
var
I: Integer;
begin
@ -3619,7 +3619,7 @@ begin
end;
function TXMLReader.DoCDSect(ch: PWideChar; Count: Integer): TDOMNode;
function TXMLTextReader.DoCDSect(ch: PWideChar; Count: Integer): TDOMNode;
var
s: WideString;
begin
@ -3629,7 +3629,7 @@ begin
result := doc.CreateCDATASection(s);
end;
procedure TXMLReader.DoNotationDecl(const aName, aPubID, aSysID: WideString);
procedure TXMLTextReader.DoNotationDecl(const aName, aPubID, aSysID: WideString);
var
Notation: TNotationDecl;
Entry: PHashItem;
@ -3647,7 +3647,7 @@ begin
ValidationError('Duplicate notation declaration: ''%s''', [aName]);
end;
function TXMLReader.AddId(aNodeData: PNodeData): Boolean;
function TXMLTextReader.AddId(aNodeData: PNodeData): Boolean;
var
e: PHashItem;
begin
@ -3659,7 +3659,7 @@ begin
aNodeData^.FIDEntry := e;
end;
function TXMLReader.AllocAttributeData: PNodeData;
function TXMLTextReader.AllocAttributeData: PNodeData;
begin
Result := AllocNodeData(FNesting + FAttrCount + 1);
Result^.FNodeType := ntAttribute;
@ -3667,7 +3667,7 @@ begin
Inc(FAttrCount);
end;
function TXMLReader.AllocNodeData(AIndex: Integer): PNodeData;
function TXMLTextReader.AllocNodeData(AIndex: Integer): PNodeData;
begin
{make sure we have an extra slot to place child text/comment/etc}
if AIndex >= Length(FNodeStack)-1 then
@ -3679,7 +3679,7 @@ begin
Result^.FIDEntry := nil;
end;
function TXMLReader.AllocAttributeValueChunk(APrev: PNodeData): PNodeData;
function TXMLTextReader.AllocAttributeValueChunk(APrev: PNodeData): PNodeData;
begin
{ when parsing DTD, don't take ownership of allocated data }
if FState = rsDTD then
@ -3705,7 +3705,7 @@ begin
APrev^.FNext := result;
end;
procedure TXMLReader.CleanupAttributes;
procedure TXMLTextReader.CleanupAttributes;
var
i: Integer;
begin
@ -3715,7 +3715,7 @@ begin
FAttrCleanupFlag := False;
end;
procedure TXMLReader.CleanupAttribute(aNode: PNodeData);
procedure TXMLTextReader.CleanupAttribute(aNode: PNodeData);
var
chunk, tmp: PNodeData;
begin
@ -3730,7 +3730,7 @@ begin
aNode^.FNext := nil;
end;
procedure TXMLReader.SetNodeInfoWithValue(typ: TXMLNodeType; AName: PHashItem = nil);
procedure TXMLTextReader.SetNodeInfoWithValue(typ: TXMLNodeType; AName: PHashItem = nil);
begin
{FNesting+1 is available due to overallocation in AllocNodeData() }
FCurrNode := @FNodeStack[FNesting+1];
@ -3740,7 +3740,7 @@ begin
FCurrNode^.FValueLength := FValue.Length;
end;
function TXMLReader.SetupFakeLF(nextstate: TXMLToken): Boolean;
function TXMLTextReader.SetupFakeLF(nextstate: TXMLToken): Boolean;
begin
FValue.Buffer[0] := #10;
FValue.Length := 1;
@ -3749,7 +3749,7 @@ begin
Result := True;
end;
procedure TXMLReader.PushVC(aElDef: TElementDecl);
procedure TXMLTextReader.PushVC(aElDef: TElementDecl);
begin
Inc(FValidatorNesting);
if FValidatorNesting >= Length(FValidators) then
@ -3770,7 +3770,7 @@ begin
end;
end;
procedure TXMLReader.PopElement;
procedure TXMLTextReader.PopElement;
begin
if FNamespaces then
FNSHelper.EndElement;
@ -3831,12 +3831,12 @@ end;
procedure ReadXMLFile(out ADoc: TXMLDocument; var f: Text);
var
Reader: TXMLReader;
Reader: TXMLTextReader;
Src: TXMLCharSource;
begin
ADoc := nil;
Src := TXMLFileInputSource.Create(f);
Reader := TXMLReader.Create;
Reader := TXMLTextReader.Create;
try
Reader.ProcessXML(Src);
finally
@ -3847,11 +3847,11 @@ end;
procedure ReadXMLFile(out ADoc: TXMLDocument; f: TStream; const ABaseURI: String);
var
Reader: TXMLReader;
Reader: TXMLTextReader;
Src: TXMLCharSource;
begin
ADoc := nil;
Reader := TXMLReader.Create;
Reader := TXMLTextReader.Create;
try
Src := TXMLStreamInputSource.Create(f, False);
Src.SystemID := ABaseURI;
@ -3882,10 +3882,10 @@ end;
procedure ReadXMLFragment(AParentNode: TDOMNode; var f: Text);
var
Reader: TXMLReader;
Reader: TXMLTextReader;
Src: TXMLCharSource;
begin
Reader := TXMLReader.Create;
Reader := TXMLTextReader.Create;
try
Src := TXMLFileInputSource.Create(f);
Reader.ProcessFragment(Src, AParentNode);
@ -3896,10 +3896,10 @@ end;
procedure ReadXMLFragment(AParentNode: TDOMNode; f: TStream; const ABaseURI: String);
var
Reader: TXMLReader;
Reader: TXMLTextReader;
Src: TXMLCharSource;
begin
Reader := TXMLReader.Create;
Reader := TXMLTextReader.Create;
try
Src := TXMLStreamInputSource.Create(f, False);
Src.SystemID := ABaseURI;
@ -3929,11 +3929,11 @@ end;
procedure ReadDTDFile(out ADoc: TXMLDocument; var f: Text);
var
Reader: TXMLReader;
Reader: TXMLTextReader;
Src: TXMLCharSource;
begin
ADoc := nil;
Reader := TXMLReader.Create;
Reader := TXMLTextReader.Create;
try
Src := TXMLFileInputSource.Create(f);
Reader.ProcessDTD(Src);
@ -3945,11 +3945,11 @@ end;
procedure ReadDTDFile(out ADoc: TXMLDocument; f: TStream; const ABaseURI: String);
var
Reader: TXMLReader;
Reader: TXMLTextReader;
Src: TXMLCharSource;
begin
ADoc := nil;
Reader := TXMLReader.Create;
Reader := TXMLTextReader.Create;
try
Src := TXMLStreamInputSource.Create(f, False);
Src.SystemID := ABaseURI;