in reply to Re^2: Finding parentheses that won't match
in thread Finding parentheses that won't match
First: To work with XML::LibXML::Reader, your XML document has to be valid. Your example has a bad entity (as has been already pointed out by LanX), also the named entities are not declared.
Without any attempt to make it pretty, here's a hack with your (corrected) example text. It shows a minimal context around each parenthesis found and indents according to level.
This example has no non-matching parentheses, the output reads:use 5.032; use warnings; use XML::LibXML::Reader qw( :types ); use open ':std', OUT => ':encoding(UTF-8)'; my $data = \*DATA; my $reader = XML::LibXML::Reader->new( IO => $data ); my $paren_level = 0; while ($reader->read) { next unless $reader->nodeType == XML_READER_TYPE_TEXT; my $text = $reader->value; while ($text =~ /([^() ]*\s*)([()])(\s*[^() ]*)/g) { if ($2 eq '(') { say " " x ($paren_level++ * 4), "opening: '$&'"; } else { if ($paren_level < 1) { say "non-matching: '$&'"; } else { say " " x (--$paren_level * 4), "closing: '$&'"; } } } } if ($paren_level) { say "At the end, $paren_level parentheses were left unclosed."; } __DATA__ <?xml version="1.0"?> <!DOCTYPE rn [ <!ENTITY auml "ä"> <!ENTITY Auml "Ä"> <!ENTITY ouml "ö"> <!ENTITY Ouml "Ö"> <!ENTITY uuml "ü"> <!ENTITY Uuml "Ü"> <!ENTITY sect "§"> <!ENTITY emsp14 " "> <!ENTITY ldquor "„"> <!ENTITY rdquor "”"> ]> <rn> <rnnum>52</rnnum> <p>In Anlehnung an den Ansatz von Tokio 2013 <emph>definiert</emph> &s +ect; 1 II XXX die nachhaltige Bewirtschaftung als eine +Bewirtschaftung, die die sozialen und wirtschaftlichen Ansprüche + an den Boden mit seinen ökologischen Funktionen in Einklang bri +ngt. Es soll eine gleichberechtigte Berücksichtigung von ökologi +schen, ökonomischen und sozialen Aspekten („Bedarfstripel +”<fn id="xxx"> <p>Mayer, JJV 2022, 28, 29.</p> </fn>) für die Nutzung angestrebt werden. Ziel ist ein Ausgleich +der drei „Säulen”, die prinzipiell gleichwertig si +nd. <fn id="yyy"> <p>Reiter, in: BoGB, Öffentliche Regeln, § 4 Rn.&emsp +14;6 f.; Mayer, NatBl. 1996, 1082, 1083.</p> </fn> Dabei muss allerdings der Grundgedanke der Stärkung der &ou +ml;kologischen Funktionen im Sinne der Ressourcenschonung berück +sichtigt werden. Die ökologischen Funktionen müssen mit den + wirtschaftlichen und sozialen Interessen in Einklang gebracht werden +.<fn id="zzz"> <p>So auch in seiner Einleitung der Beschluss der 72. ROK vom 27.&emsp +14;06. 2017, der in („Leitbilder und Handlungsstrategien f&uum +l;r die Bodennutzung (in ländlichen Gebieten)”) sehr gut +die aktuellen Herausforderungen beschreibt, die unterschiedlichen Asp +ekte nach dem Topziel der Nachhaltigkeit strukturiert und sie mit bei +spielhaften Handlungsansätzen versieht.</p> </fn> Wenn die Ökologie von vornherein gegenüber den wirtsch +aftlichen und sozialen Ansprüchen zurücktritt, verliert die + Nachhaltigkeit ihre Orientierungsfunktion, und die Begrifflichkeit w +ird ad absurdum geführt.</p> </rn>
opening: 'Aspekten („Bedarfstripel”' closing: ') für' opening: 'in („Leitbilder' opening: 'Bodennutzung (in' closing: 'Gebieten)”' closing: ') sehr'
|
---|