none
C#: W3C HTML Validator API

    Frage

  • Hallo

    Ich möchte HTML Code in C# validieren. W3C bietet dafür eine API an. Allerdings möchte ich NICHT, dass die Datei irgendwo hochgeladen wird, sondern möchte den Code so übermitteln oder besser noch das ganze lokal überprüfen. Ähnlich wie WebMatrix es macht. Gibt es da eine Möglichkeit?

    Bitte um Lösungsansätze
    - TZDEV

    Montag, 17. März 2014 18:54

Antworten

  • Hallo,
    hier findest du eine Anleitung um den W3C Validator auch offline zu installieren. Später kannst du die gesammte Installation der Software auch in einen Skript packen. Dadurch muss sich der Benutzer nicht selbst um all das kümmern, das übernimmt das Setup für ihn.
    Viel weiter helfen kann ich dir dann aber nicht dazu. Es scheint aber so zu sein, dass man sich einen eigenen Link zum validator erstellt, der den von w3c.org ersetzt:

    Nun muss das Script nur noch einmal abgespeichert werden. Danach kann über http://validator.david.tibbe/ wie bisher über englischsprachige Seite http://validator.w3.org/ gearbeitet werden.

    Wenn du das so nicht machen möchtest, wirst du dir entweder eine andere Thirdparty Komponente suchen müssen oder selbst einen Parser schreiben. Dieser wäre aber nur in sofern aufwendig, das du alle Tag- und CSS-Namen integrieren musst. Sonst musst du nur Zeichen für Zeichen alles durch gehen und die Syntax prüfen. (Das ist wahrscheinlich viel aufwendiger als den W3C Validator offline zu installieren)


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert TZDEV Montag, 17. März 2014 19:57
    Montag, 17. März 2014 19:40

Alle Antworten

  • Hallo,

    ich nehme mal stark an, du meist konvertieren, oder? Denn validieren heißt doch so ungefährt ~Prüfen (Valid = gültig).

    Aber das wäre auch nicht sinnvoll, denn HTML in c#, wie soll das gehen.

    Bitte gibt doch den Link, den du meinst (von W3C) an.


    (C) 2014 Thomas Roskop

    Montag, 17. März 2014 19:00
  • Ich konkretisiere das ganze mal etwas. Ich habe eine HTML IDE geschrieben und möchte, dass der Code des Benutzers auf HTML5 Konformität validiert wird. Nicht konvertieren.
    Montag, 17. März 2014 19:05
  • Achso, du OK.

    Dein Programm ist in c#, und deine Benutzereingabe soll HTML sein, und danach validert werde.


    (C) 2014 Thomas Roskop

    Montag, 17. März 2014 19:12
  • Richtig.
    Montag, 17. März 2014 19:14
  • Hallo,
    hier findest du eine Anleitung um den W3C Validator auch offline zu installieren. Später kannst du die gesammte Installation der Software auch in einen Skript packen. Dadurch muss sich der Benutzer nicht selbst um all das kümmern, das übernimmt das Setup für ihn.
    Viel weiter helfen kann ich dir dann aber nicht dazu. Es scheint aber so zu sein, dass man sich einen eigenen Link zum validator erstellt, der den von w3c.org ersetzt:

    Nun muss das Script nur noch einmal abgespeichert werden. Danach kann über http://validator.david.tibbe/ wie bisher über englischsprachige Seite http://validator.w3.org/ gearbeitet werden.

    Wenn du das so nicht machen möchtest, wirst du dir entweder eine andere Thirdparty Komponente suchen müssen oder selbst einen Parser schreiben. Dieser wäre aber nur in sofern aufwendig, das du alle Tag- und CSS-Namen integrieren musst. Sonst musst du nur Zeichen für Zeichen alles durch gehen und die Syntax prüfen. (Das ist wahrscheinlich viel aufwendiger als den W3C Validator offline zu installieren)


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert TZDEV Montag, 17. März 2014 19:57
    Montag, 17. März 2014 19:40
  • Hallo,

    aber die Erstellung seines eigene Systems hätte Vorteile.

    Ich gehe mal aus, du möchtest was "ähnliches" wie VS 2013 für das Web entwickeln, da wäre dein eigener Parser sogar perfekt, der könnte dann nicht nur einmalig auf Befehl die Eingabe überrpüfen, sondern diese überrpüfung permananent durchführen und du könntest mit deiner Liste (die vor dem Programstart eingelsen werden muss), vorschläge für den Benutzer aufbereiten.

    Die Liste könntest du doch z.B. in Form von XML speichern. BSP:

    <!-- HTML - Designkonzept -->
    <HTMLTags>
     <Head>
      <Title>%STRING%<Title>
      <!-- ... -->
     </Head>
     <Body>
      <Div Style="%STYLE%" BGColor="GREEN|RED...">
       <!-- BGColor ist veraltet :) -->
      </Div>
     </Body>
     
    </HTMLTags>

    Und mit dieser Hierarchie könntest du dann auch gleich festlegen, welche Tags welchen folgend dürfen, zB. das das Body nicht im DIV sein darf, sonder  nur übergeordnet


    (C) 2014 Thomas Roskop

    Dienstag, 18. März 2014 13:34
  • Und wie genau lasse ich das ganze via Skript installieren?
    Dienstag, 18. März 2014 13:42
  • Ist aber verdammt viel Arbeit
    Dienstag, 18. März 2014 13:48
  • Hallo,
    einen genauen Plan für den Skript habe ich nicht, jedoch lässt sich alles am Compüuter automatisiert lösen.

    Zunächst solltest du dir ein Setup aussuchen, mit dem du dein Programm ausliefern möchtest. Das kann u.A. InstallShield sein. Bis zum 2010er VS gab es noch ein Microsoft eigenes Setup-System als Vorlage im VS. Im Internet gibt es aber noch viele weitere  Veröffentichungstechniken für eigene Programme.
    Beim Erstellen des Setups kannst du dann verschiedene Konfigurationen für den Ziel PC einstellen. Wie genau das geht ist von Setup zu Setup unterschiedlich.

    Da das Erstellen eines eigenen Validators wirklich extrem aufwendig ist und der von W3C bereits alles kann, sehe ich keinen Grund einen eigenen zu schreiben. Du kannst es beispielsweise wie im VS regeln. Sobald die Letzte Benutzereigabe 5 Sekunden her ist, validierst du den Code. So geht keine unnötige Computerleistung verloren und es ist wenig bis garnicht ineffektivier als ein eigener Validator.
    Das XML-basierte Schema von Thomas ist sicher ein Ansatz für einen Benutzerdefinierten Parser. Dabei zeigt sich allerdings auch, das du sehr viel Arbeit haben wirst die Datei zu erstellen und das Parsen der Datei dauert nochmals länger. Ich persönlich finde die Online-Version eigentlich recht schnell und exakt was die Meldungen betrifft (das ist natürlich englisch ;)).


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Dienstag, 18. März 2014 14:03
  • Und in wiefern muss ich die beiden benötigten Dienste "Apache" und "ActivePerl" starten bzw. wie kann ich diese aus C# aus starten? Sind das Dienste oder doch nur normale Programme?
    Dienstag, 18. März 2014 14:16
  • Ich bin kein Experte dafür, aber ich vermute mal, dass es sich um einfache Dienste handelt. Wenn nicht, dann haben die Programnme eine EXE-Datei, die du dafür starten musst.

    Programme starten kannst du in C# mit

    Process.Start("PFAD");

    Für Dienste ist es ein wenig komplizierter. Hier findest du ein Beispiel dafür.

    Wenn du den Validator auf deinem PC installiert hast, und nach einem Neustart alles ohne Probleme funktioniert (validator.david.tibbe in der Addresszeile des Browsers aufrufen kannst), dann handelt es sich wahrscheinlich um Dienste.
    Beim starten deiner Anwendung kannst du mit der ServiceController-Klasse überprüfen ob der Dienst gestartet ist und ihn ggf. selbst starten.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Dienstag, 18. März 2014 14:36
  • Ich scheitere absolut an der Installation des lokalen Validators. Undzwar fehlt die Perl-Resource "SGML::Parser::OpenSP" und ich schaffe es auch nicht dies zu installieren.

    Bitte um Hilfe

    Dienstag, 18. März 2014 16:16
  • Auf SELFHTML steht eine Liste der benögten Packages:
    • ...
    • Net-IP
    • SGML-Parser-OpenSP
    • XML-LibXML
    • ...
    Diese wiederum kannst du von hier herunter laden. Der Autor des Artikels hat diese aber auch zusammen gefasst. Hier der Originaldownloadlink. Das weitere Vorgehen ist dann auf der Seite mit erklärt.

    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Dienstag, 18. März 2014 16:55
  • Das funktioniert aber leider so nicht.
    Dienstag, 18. März 2014 17:17