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