zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Perl: HTML parsen mit Standalone-Tags

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 21.04.2013, 12:43
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 151
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard Perl: HTML parsen mit Standalone-Tags

Hallo,
ich verwende das Modul HTML::Parser, um HTML-Code, der von Anwendern hochgeladen wird, zu überprüfen. Ein Aspekt ist, dass alle Elemente, die geöffnet werden, wieder geschlossen werden müssen.
Also folgender Code wäre ok:
HTML-Code:
<P>hallo <SPAN style="">test</SPAN><B>fett</B></P>
Folgender Code soll einen Fehler erzeugen und nicht eingebunden werden:
HTML-Code:
<P>hallo <SPAN style="">test
oder:
<P> hallo <SPAN style="">test</DIV></P>
Ich verwende aktuell diesen Code:
Code:
 my $HTML = '<P>hallo,<BR><SPAN> test</SPAN></P>';
 my $open = 0;
 sub InnerHTML_start {
  $open++;
 }
 sub InnerHTML_end {
  $open--;
 }
 my $p = HTML::Parser->new(
  api_version => 3,
  start_h => [\&InnerHTML_start,"tagname, attr, attrseq, text"],
  end_h => [\&InnerHTML_end,"tagname"],
 );
 $p->parse($HTML);
 $p->eof;
 print($open); // prints 1
Wenn genau so viele Elemente geöffnet, wie auch geschlossen werden, soll 0 ausgegeben werden (Sicher, das muss noch verfeinert werden), es wird aber 1 ausgegeben. Das liegt an dem Standalone-Tag <BR>.

Wie bekomme ich das am besten in den Griff?

Im Zweifelsfall könnte ich Anhand einer Liste alle Standalone-Tags gesondert betrachten. Aber wo finde ich eine Liste mit allen Standalone-Tags?
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 21.04.2013, 13:28
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 28.01.2005
Beiträge: 11.789
fricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz sein
Standard

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Aber wo finde ich eine Liste mit allen Standalone-Tags?
Beim W3C. Hier für HTML 4: Index of the HTML 4 Elements
"Empty elements" heißen die Elemente, für die es kein Schlusstag gibt. Außerdem gibt es auch noch Elemente, für die es optional ist. Dazu gehört z.B. das p-Element.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 21.04.2013, 13:34
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 151
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard

Auha

Das wird wohl komplizierter, als ich dachte. Naja, wenn was Sinnvolles bei raus kommt, poste ich das Ergebnis.

Ich brauche das Script aus folgenden Grund: Ich habe quasi eine serverseitige innerHTML-Funktion. Zum Beispiel hat ein Benutzer nur das Recht, Elemente zu bearbeiten, die nicht öffentlich sichtbar sind. Wenn so ein Benutzer dann das Recht hat, Element "Qxxx01" zu bearbeiten, also ein bereits von einem anderen Administrator angelegtes Element:
HTML-Code:
<DIV id="Qxxx01" style="display : none; ">
</DIV>
..., dann darf natürlich ein Inhalt, wie
HTML-Code:
<\DIV>
<DIV style="display : block; ">
Sichtbar!
nicht in dieses Element eingefügt werden

Vielen Dank.

Geändert von MitjaStachowiak (21.04.2013 um 13:40 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 21.04.2013, 15:33
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 151
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard

Hm, was bedeutet das denn, wenn bei Start-Tag ein O steht?

Heißt das, dass etwas, wie:
HTML-Code:
<HTML>
 </HEAD>
  <SPAN>text</SPAN>
 </BODY>
</HTML>
erlaubt ist??
Mit Zitat antworten
  #5 (permalink)  
Alt 21.04.2013, 15:34
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 28.01.2005
Beiträge: 11.789
fricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz sein
Standard

Die Legende steht ganz oben.
Zitat:
Legend: Optional, Forbidden, Empty, Deprecated, Loose DTD, Frameset DTD
Das body-Element kann man ganz weglassen. Lies bitte bei den einzelnen Elementen nach, da steht das alles.
edit: Wenn du wissen willst, was "korrekt" ist: Nutz den Validator.

Was du da vorhast halte ich für überaus komplex -- und es würde mich sehr wundern, wenn es sowas nicht bereits von jemandem gibt.

Geändert von fricca (21.04.2013 um 15:37 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 21.04.2013, 15:49
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 151
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard

Ja, aber zum Beispiel das SPAN-Element kann man auch ganz weglassen...
Zum Glück fallen außer TBody sowieso alle Elemente, die einen optionalen Start-Tag verwenden, aus der Liste an möglichen ELementen für innerHTML.

Wenn jemand jemand kennt, der das schon geschrieben hat, nehme ich das dankend an.

Aber ich bin definitiv kein Experte darin, fertige Quelltexte zu finden und einzubauen.
Mit Zitat antworten
  #7 (permalink)  
Alt 21.04.2013, 15:57
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 28.01.2005
Beiträge: 11.789
fricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz sein
Standard

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Ja, aber zum Beispiel das SPAN-Element kann man auch ganz weglassen...
Nein. Dann existiert es nicht.
"Optionale Elemente" wie body, head, html werden vom Browser ergänzt.
Mit Zitat antworten
  #8 (permalink)  
Alt 21.04.2013, 17:29
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 151
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard

Ahaa, das macht Sinn.
Mit Zitat antworten
  #9 (permalink)  
Alt 25.04.2013, 16:12
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 151
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard

So, für's erste:
http://www.mitjastachowiak.de/?/Proj...Lib/CheckHTML/

Wer Bugs findet, bitte melden.

**Muss meine Homepage auch dringend mal wieder überarbeiten**
Mit Zitat antworten
Sponsored Links
Antwort

Stichwörter
html-code überprüfen, html::parser, perl, standalone-tags

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mit Excel HTML Tags in *.csv Daten speichern? elTorito Offtopic 6 25.09.2009 09:39
Strings die HTML Tags enthalten erkennen? braindead Serveradministration und serverseitige Scripte 7 30.12.2008 18:54
Wie parse ich mit php Markdown syntax nach html? asdfgqw Serveradministration und serverseitige Scripte 0 03.06.2008 00:11
Word Docs in vernünftiges HTML konvertieren? Titus Offtopic 3 30.11.2006 10:46
Eigene Tags in XHTML 1.1 x-sharp (X)HTML 8 03.03.2005 20:53


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:04 Uhr.