mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-06 07:13:32 +02:00
* fcl-xml: dropped using 'hack classes', which cause runtime errors if compiled with -CR. Resolves #27447.
git-svn-id: trunk@29761 -
This commit is contained in:
parent
7350dae037
commit
124592899f
@ -223,7 +223,6 @@ type
|
||||
procedure SetPrefix(const Value: DOMString); virtual;
|
||||
function GetOwnerDocument: TDOMDocument; virtual;
|
||||
function GetBaseURI: DOMString;
|
||||
procedure SetReadOnly(Value: Boolean);
|
||||
procedure Changing;
|
||||
public
|
||||
constructor Create(AOwner: TDOMDocument);
|
||||
@ -270,6 +269,7 @@ type
|
||||
function CloneNode(deep: Boolean; ACloneOwner: TDOMDocument): TDOMNode; overload; virtual;
|
||||
function FindNode(const ANodeName: DOMString): TDOMNode; virtual;
|
||||
function CompareName(const name: DOMString): Integer; virtual;
|
||||
procedure SetReadOnly(Value: Boolean);
|
||||
property Flags: TNodeFlags read FFlags;
|
||||
end;
|
||||
|
||||
@ -312,6 +312,8 @@ type
|
||||
public
|
||||
property InputEncoding: DOMString read FInputEncoding;
|
||||
property XMLEncoding: DOMString read FXMLEncoding;
|
||||
// extension
|
||||
procedure SetHeaderData(aXmlVersion: TXMLVersion; const aXmlEncoding: DOMString);
|
||||
end;
|
||||
|
||||
// -------------------------------------------------------
|
||||
@ -695,6 +697,8 @@ type
|
||||
property PublicID: DOMString read GetPublicID;
|
||||
property SystemID: DOMString read GetSystemID;
|
||||
property InternalSubset: DOMString read GetInternalSubset;
|
||||
// extension
|
||||
property Model: TDTDModel read FModel;
|
||||
end;
|
||||
|
||||
|
||||
@ -2114,6 +2118,13 @@ begin
|
||||
Result := xmlVersionStr[FXMLVersion];
|
||||
end;
|
||||
|
||||
procedure TDOMNode_TopLevel.SetHeaderData(aXmlVersion: TXMLVersion; const aXmlEncoding: DOMString);
|
||||
begin
|
||||
if aXmlVersion <> xmlVersionUnknown then
|
||||
FXMLVersion := aXmlVersion;
|
||||
FXMLEncoding := aXmlEncoding;
|
||||
end;
|
||||
|
||||
// -------------------------------------------------------
|
||||
// DOMImplementation
|
||||
// -------------------------------------------------------
|
||||
|
@ -91,11 +91,6 @@ uses
|
||||
UriParser, dtdmodel;
|
||||
|
||||
type
|
||||
TDOMDocumentTypeEx = class(TDOMDocumentType);
|
||||
TXMLDocumentEx = class(TXMLDocument);
|
||||
|
||||
TDOMEntityEx = class(TDOMEntity);
|
||||
|
||||
TLoader = object
|
||||
doc: TDOMDocument;
|
||||
reader: TXMLTextReader;
|
||||
@ -237,23 +232,23 @@ end;
|
||||
|
||||
procedure TLoader.ProcessFragment(AOwner: TDOMNode; AReader: TXMLTextReader);
|
||||
var
|
||||
DoctypeNode: TDOMDocumentTypeEx;
|
||||
DoctypeNode: TDOMDocumentType;
|
||||
begin
|
||||
doc := AOwner.OwnerDocument;
|
||||
reader := AReader;
|
||||
reader.OnEntity := @ProcessEntity;
|
||||
reader.FragmentMode := True;
|
||||
reader.XML11 := doc.XMLVersion = '1.1';
|
||||
DoctypeNode := TDOMDocumentTypeEx(doc.DocType);
|
||||
DoctypeNode := doc.DocType;
|
||||
if Assigned(DoctypeNode) then
|
||||
reader.DtdSchemaInfo := DocTypeNode.FModel.Reference;
|
||||
reader.DtdSchemaInfo := DocTypeNode.Model.Reference;
|
||||
ParseContent(aOwner as TDOMNode_WithChildren);
|
||||
end;
|
||||
|
||||
procedure TLoader.ProcessEntity(Sender: TXMLTextReader; AEntity: TEntityDecl);
|
||||
var
|
||||
DoctypeNode: TDOMDocumentType;
|
||||
Ent: TDOMEntityEx;
|
||||
Ent: TDOMEntity;
|
||||
src: TXMLCharSource;
|
||||
InnerReader: TXMLTextReader;
|
||||
InnerLoader: TLoader;
|
||||
@ -261,7 +256,7 @@ begin
|
||||
DoctypeNode := TDOMDocument(doc).DocType;
|
||||
if DoctypeNode = nil then
|
||||
Exit;
|
||||
Ent := TDOMEntityEx(DocTypeNode.Entities.GetNamedItem(AEntity.FName));
|
||||
Ent := TDOMEntity(DocTypeNode.Entities.GetNamedItem(AEntity.FName));
|
||||
if Ent = nil then
|
||||
Exit;
|
||||
Sender.EntityToSource(AEntity, Src);
|
||||
@ -291,18 +286,8 @@ begin
|
||||
if not reader.Read then
|
||||
Exit;
|
||||
case cursor.NodeType of
|
||||
DOCUMENT_NODE:
|
||||
begin
|
||||
if reader.XMLVersion <> xmlVersionUnknown then
|
||||
TXMLDocumentEx(cursor).FXMLVersion := reader.XMLVersion;
|
||||
TXMLDocumentEx(cursor).FXMLEncoding := reader.XMLEncoding;
|
||||
end;
|
||||
ENTITY_NODE:
|
||||
begin
|
||||
if reader.XMLVersion <> xmlVersionUnknown then
|
||||
TDOMEntityEx(cursor).FXMLVersion := reader.XMLVersion;
|
||||
TDOMEntityEx(cursor).FXMLEncoding := reader.XMLEncoding;
|
||||
end;
|
||||
DOCUMENT_NODE, ENTITY_NODE:
|
||||
(cursor as TDOMNode_TopLevel).SetHeaderData(reader.XMLVersion,reader.XMLEncoding);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user