40 votes

Connaissez-vous un validateur HTML-Snippet ?

Je suis à la recherche d'un outil qui me permettrait de vérifier si un certain extrait de HTML est valide dans son contexte.

Je saisirais quelque chose comme

<dd>
    my definition 
    <div>
        div inside &lt;dd&gt; is allowed
    </div>
</dd>

au lieu de l'ensemble du document. Un validateur ordinaire se plaindra de l'absence de la balise dl, mais la plupart du temps, je veux juste savoir si un certain élément est valide à l'intérieur d'un autre ou non.


Je vais essayer de l'expliquer plus en détail. Considérons l'extrait suivant :

<form>
    <label>Name: <input /></label>
</form>

Ce serait valable, mais pour le vérifier, j'ai deux options :

  1. Valider l'ensemble du document : La plupart du temps, c'est suffisant, mais parfois, lorsque je travaille sur des extraits HTML partiels ou sur du HTML intégré, cela pose quelques problèmes. Je dois alors copier l'ensemble du document dans un nouveau document HTML et le valider.
  2. Il suffit de copier l'extrait et de le valider avec le validateur W3C et d'ignorer certaines des erreurs.

En gros, je voudrais vérifier si un élément ne contient que les éléments qu'il est autorisé à contenir.

0 votes

Cet extrait est invalide uniquement et précisément à cause de l'absence de <dl> tags. C'est bien d'avoir une <div> dans un <dd> .

0 votes

Je ne suis pas sûr mais vous pouvez essayer l'IDE Netbeans, coller le snippet html dans l'éditeur Netbeans mettra en évidence les erreurs et les avertissements dans votre snippet html.

0 votes

Pour les utilisateurs d'emacs : emacswiki.org/emacs/HtmlCheckFrag vérifie les paires correspondantes de balises html non vides. Les erreurs sont mises en évidence. S'il y a des erreurs dans le document, cela est indiqué dans la ligne de mode. S-Mouse-1 sur l'indicateur de la ligne de mode recherche dans le document l'erreur suivante. Cela fonctionne également pour les extraits HTML. Il n'y a pas encore de vérification pour de telles choses si <td></td> est à l'intérieur <table></table> et ainsi de suite.

46voto

extols Points 1097

Vous pouvez en fait utiliser le validateur W3C pour vérifier un extrait.

Choisissez l'onglet "Validation par saisie directe" et sélectionnez Autres options. Vous y trouverez un bouton radio pour "Valider le fragment HTML". http://validator.w3.org/#validate_by_input+avec_options

Il va envelopper votre page dans du html valide, de sorte que les erreurs que vous voyez sont uniquement dues à votre extrait.

3 votes

La fonction "Valider avec un fragment HTML" n'est pas active actuellement.

0voto

EML Points 1877

Le W3C dispose actuellement (mai 2020) d'un validateur de fragments, mais il semble qu'il n'existe plus (pas de HTML5, du moins). Voici quelques scripts simples qui attachent un en-tête et un pied de page à votre fragment, et exécutent le résultat à travers une copie locale de l'outil de validation de fragment du W3C. Vérificateur de nu . Le fragment peut être tout ce qui est valide au niveau supérieur d'un <body> modifiez l'en-tête et le pied de page si vous avez besoin d'autre chose.

validate1.sh prend un seul argument de nom de fichier et le vérifie, alors que validate2.sh parcourt tous les fichiers HTML dans un répertoire. Il possède un mécanisme simple de liste d'exclusion que vous devrez modifier. Vous devrez modifier les deux pour qu'ils pointent vers votre copie de vnu.jar .

validate1.sh :

#!/bin/bash
#
# validate1.sh
#
# Run the nu validator on the HTML fragment in the supplied filename.
# This script adds a header and trailer around the fragment, and supplies
# the result to 'vnu.jar'. You'll need to modify it to correctly locate
# vnu.jar.

if test "$#" -ne 1; then
    echo "Usage: '$0 fname', where 'fname' is the HTML file to be linted"
    exit 1
fi

var="<!doctype html>
     <html lang=\"en\">
     <head>
     <title>foo</title>
     </head>
     <body>
     $(< "$1")
     </body>
     </html>"
echo "Checking '$1'... subtract 6 from any reported line numbers"
echo "$var" | java -jar vnu.jar -

validate2.sh :

#!/bin/bash
#
# validate2.sh
#
# Run the nu validator on the HTML fragments in the supplied directory.  This
# script adds a header and footer around each fragment in the directory, and
# supplies the result to 'vnu.jar'. You'll need to modify it to correctly
# locate vnu.jar.

if test "$#" -ne 1; then
    echo "Usage: '$0 fname', where 'fname' is the HTML directory to be linted"
    exit 1
fi

for filename in $1/*.html; do
    case $filename in
        # simple exclusion list example:
        "$1/root.html" | "$1/sitedown.html")
            echo "Skipping '$filename'"
            continue
            ;;
        *)
            ;;
    esac

    var="<!doctype html>
         <html lang=\"en\">
         <head>
         <title>foo</title>
         </head>
         <body>
         $(< "$filename")
         </body>
         </html>"
    echo "Checking '$filename'... subtract 6 from any reported line numbers"
    echo "$var" | java -jar vnu.jar -
done

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X