Fix ASCII entity resolution (fixes #9)
Entity: line 1: parser error : Couldn't find end of Start Tag ref
=epub%20leseprobe&utm_campaign=m%C3%A4dchen%20mit%20den%20engelsh%C3%A4nden"
^
Change-Id: Ic57b654bbfe37bb5ea2d4307e8e8deb83fb1cf22
diff --git a/Changes b/Changes
index f5904b6..6b6d671 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,5 @@
+2.6.1 2025-04-16
+ - Fix ASCII entity resolution.
- Make KorAP-Tokenizer heap size configurable via environment
variable KORAPXMLTEI_TOKENIZER_HEAP_SIZE.
diff --git a/Readme.pod b/Readme.pod
index 35f643e..c097fd2 100644
--- a/Readme.pod
+++ b/Readme.pod
@@ -302,7 +302,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (C) 2021-2024, L<IDS Mannheim|https://www.ids-mannheim.de/>
+Copyright (C) 2021-2025, L<IDS Mannheim|https://www.ids-mannheim.de/>
Author: Peter Harders
diff --git a/lib/KorAP/XML/TEI.pm b/lib/KorAP/XML/TEI.pm
index f7768e7..8fa2aae 100644
--- a/lib/KorAP/XML/TEI.pm
+++ b/lib/KorAP/XML/TEI.pm
@@ -169,11 +169,12 @@
# Replace all entities, except %ent
sub replace_entities {
$_= shift;
- s/"/"/gi;
- s/&/&/gi;
- s/'/'/gi;
- s/</</gi;
- s/>/>/gi;
+ return ($_) if index($_,'&') < 0;
+ s/&#(?:34|x22);/"/gi;
+ s/&#(?:38|x26);/&/gi;
+ s/&#(?:39|x27);/'/gi;
+ s/&#(?:60|x3c);/</gi;
+ s/&#(?:62|x3e);/>/gi;
s/[&]#(x[0-9A-Fa-f]+);/chr(hex("0$1"))/ge;
s/[&]#(\d+);/chr($1)/ge;
s/\&(alpha|ap|bdquo|blk12|blk14|blk34|block|boxDL|boxdl|boxdr|boxDR|boxH|boxh|boxhd|boxHD|boxhu|boxHU|boxUL|boxul|boxur|boxUR|boxv|boxV|boxvh|boxVH|boxvl|boxVL|boxVR|boxvr|bull|caron|ccaron|circ|dagger|Dagger|ecaron|euro|fnof|hellip|Horbar|inodot|iota|ldquo|ldquor|lhblk|lsaquo|lsquo|lsquor|mdash|ndash|nu|oelig|OElig|omega|Omega|permil|phi|pi|piv|rcaron|rdquo|rho|rsaquo|rsquo|rsquor|scaron|Scaron|sigma|squ|squb|squf|sub|tilde|trade|uhblk|Yuml|zcaron|Zcaron);/$html_entities{$1}/ge;
diff --git a/lib/KorAP/XML/TEI/Tokenizer/KorAP.pm b/lib/KorAP/XML/TEI/Tokenizer/KorAP.pm
index ba39fc7..ac5aae8 100644
--- a/lib/KorAP/XML/TEI/Tokenizer/KorAP.pm
+++ b/lib/KorAP/XML/TEI/Tokenizer/KorAP.pm
@@ -4,7 +4,7 @@
use warnings;
use File::Share ':all';
-our $VERSION = '2.6.0';
+our $VERSION = '2.6.1';
my $MIN_JAVA_VERSION = 17;
use constant {
diff --git a/script/tei2korapxml b/script/tei2korapxml
index 7d9cfbd..3e5b335 100755
--- a/script/tei2korapxml
+++ b/script/tei2korapxml
@@ -25,7 +25,7 @@
use KorAP::XML::TEI::Header;
use KorAP::XML::TEI::Inline;
-our $VERSION = '2.6.0';
+our $VERSION = '2.6.1';
our $VERSION_MSG = "\ntei2korapxml - v$VERSION\n";
@@ -813,7 +813,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (C) 2021-2024, L<IDS Mannheim|https://www.ids-mannheim.de/>
+Copyright (C) 2021-2025, L<IDS Mannheim|https://www.ids-mannheim.de/>
Author: Peter Harders
diff --git a/t/data/wdd_sample.i5.xml b/t/data/wdd_sample.i5.xml
index 669f1e3..9935921 100644
--- a/t/data/wdd_sample.i5.xml
+++ b/t/data/wdd_sample.i5.xml
@@ -491,7 +491,12 @@
<div id="i.10317_5" type="thread" part="N" org="uniform" sample="complete" complete="y">
<head>Öffentliche Dienstleistungen, Ver-/Entsorgung</head>
<posting id="i.10317_5_1" indentLevel="0" when-iso="2017-07-09T17:53+02" who="WU00003189">
- <p part="N"> Dieser Bereich unterliegt, sofern er in öffentlicher Hand ist, dem Preisgesetz.<s> Durch eine PPP fällt die Bindung an das Preisgesetz weg, mit der Folge, dass die Kosten frei kalkuliert werden können, regelmäßige weitere Folge: Preissteigerungen!</s>
+ <p>
+ <hi rend="_9_italic">Mehr unter</hi>
+ <ref target="http://forever.ullstein.de/ebook/das-maedchen-mit-den-engelshaenden/?utm_source=sog%20des%20todes&utm_medium=ebook&utm_term=epub%20leseprobe&utm_campaign=m%C3%A4dchen%20mit%20den%20engelsh%C3%A4nden"">
+ </ref>
+ </p>
+ <p part="N"> Dieser Bereich unterliegt, sofern er in öffentlicher Hand ist, dem Preisgesetz.<s> Durch eine PPP fällt die Bindung an das Preisgesetz weg, mit der Folge, dass die Kosten frei kalkuliert werden können, regelmäßige weitere Folge: Preissteigerungen!</s>
<s>Vgl. http://www.econstor.eu/bitstream/10419/85329/1/770675158.pdf Möglicherweise wird diese "Flucht aus dem Preisrecht" (Greiffenhagen) durch die derzeit in Vorbereitung befindliche Novellierung des Preisgesetzes verhindert oder zumindest erschwert.</s>
<s>--</s>
<autoSignature type="signed">Karl 3 <timestamp>17:53, 9. Jul. 2017 (CEST)</timestamp>
diff --git a/t/tei.t b/t/tei.t
index 98b945e..f5fa39e 100644
--- a/t/tei.t
+++ b/t/tei.t
@@ -140,7 +140,11 @@
is(replace_entities('A'), 'A');
is(replace_entities('«'), replace_entities('«'));
is(replace_entities('A'), 'A');
- is(replace_entities('&<>'), '&<>')
+ is(replace_entities('&<>'), '&<>');
+ is(replace_entities('"'), '"');
+ is(replace_entities('&'), '&');
+ is(replace_entities('''), ''');
+ is(replace_entities('<'), '<');
};
done_testing;