|
@@ -371,11 +371,20 @@ begin
|
|
if Length(TokenText) > 0 then
|
|
if Length(TokenText) > 0 then
|
|
begin
|
|
begin
|
|
Attr := nil;
|
|
Attr := nil;
|
|
- if TokenText[1] = '/' then
|
|
|
|
|
|
+ if TokenText[Length(fTokenText)]='/' then // handle empty tag
|
|
|
|
+ begin
|
|
|
|
+ setlength(fTokenText,length(fTokenText)-1);
|
|
|
|
+ // Do NOT combine to a single line, as Attr is an output value!
|
|
|
|
+ TagName := SplitTagString(TokenText, Attr);
|
|
|
|
+ DoStartElement('', TagName, '', Attr);
|
|
|
|
+ DoEndElement('', TagName, '');
|
|
|
|
+ end
|
|
|
|
+ else if TokenText[1] = '/' then
|
|
begin
|
|
begin
|
|
DoEndElement('',
|
|
DoEndElement('',
|
|
SplitTagString(Copy(TokenText, 2, Length(TokenText)), Attr), '');
|
|
SplitTagString(Copy(TokenText, 2, Length(TokenText)), Attr), '');
|
|
- end else if TokenText[1] <> '!' then
|
|
|
|
|
|
+ end
|
|
|
|
+ else if TokenText[1] <> '!' then
|
|
begin
|
|
begin
|
|
// Do NOT combine to a single line, as Attr is an output value!
|
|
// Do NOT combine to a single line, as Attr is an output value!
|
|
TagName := SplitTagString(TokenText, Attr);
|
|
TagName := SplitTagString(TokenText, Attr);
|