web-dev-qa-db-fra.com

Comment corriger l'erreur de validation Eclipse "Aucune contrainte de grammaire détectée pour le document"?

Eclipse 3.5.2 envoie un message d’avertissement de schéma XML: 

No grammar constraints (DTD or XML schema) detected for the document.

Le fichier application.xml:

<?xml version="1.0" encoding="UTF-8"?>
<application
  xmlns="http://Java.Sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee
                      http://Java.Sun.com/xml/ns/javaee/application_5.xsd"
  version="5">

</application>

Je ne veux pas désactiver l'avertissement. Comment puis-je obtenir qu'Eclipse valide correctement le document XML?

56
cmcginty

Je ne sais pas si vous avez déjà résolu ce problème de manière satisfaisante, mais je suis tombé sur cette publication aujourd'hui alors que je travaillais avec certains fichiers de configuration Spring dans Eclipse 3.6. Je ne pouvais pas obtenir l'erreur de disparaître dans la vue Problèmes dans Eclipse, quoi qu'il arrive, jusqu'à ce que je clique sur le problème avec le bouton droit de la souris et le supprime

Je pensais que cela reviendrait si je revalidais et il y avait effectivement un problème et jusqu'à présent, ce n'est pas le cas. Le problème est que j'avais un fichier de configuration de Spring presque identique qui ne montrait pas l'erreur.

Il semblerait que parfois des choses restent coincées dans Eclipse. Je ne sais pas pourquoi mais entre cela et les fichiers qui ne sont plus synchronisés avec les éditeurs et qui doivent forcer un rafraîchissement, je suppose que je dois l'accepter.

40
Jason Kratz

Mettre cela au sommet de tout fichier fautif me convient:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE project>
57
Plenus Franckly

C'est un autre moyen de désactiver les avertissements pour les documents XML qui intentionnellement n'ont pas de DTP ou de XSD:

  1. Allez dans les préférences du menu,
  2. dans le menu de navigation, c’est-à-dire le cadre de gauche de la boîte de dialogue, choisissez: XML> Fichiers XML> Validation 
  3. dans la zone de configuration, c’est-à-dire dans le cadre de droite de la boîte de dialogue, choisissez: Validation des fichiers> Aucune grammaire spécifiée> Ignorer (paramètre par défaut)
31
knb

Je ne suis pas un expert mais un apprenant. J'ai accidentellement trouvé un moyen facile et stupide de résoudre le problème. Ce que vous devez juste faire est: 

Appuyez sur ctrl + shift + F (c'est un raccourci pour formater le fichier dans Eclipse)

Si cela ne résout pas le problème, appuyez sur la touche TAB au début de cette ligne}.
?xml version="1.0" encoding="UTF-8"? et pas ailleurs (je ne comprends pas pourquoi, mais cela fonctionne. Si quelqu'un ici sait pourquoi je serai très heureux de le savoir)

Ensuite, appuyez sur ctrl + shift + F et enregistrez. 

L'avertissement aura disparu, du moins pour moi, vous pouvez essayer vous-même ...

6
madhavi

Si cet avertissement apparaît, cela signifie que la fonction XML Validate (qui est différente de l'éditeur d'instance XML!) Ne savait pas quelle DTD ou XSD appliquer. Bien entendu, cela signifie également qu’il n’a pas réellement vérifié si l’instance XML était conforme à un schéma.

Ceci est donc un avertissement utile, il ne doit pas être désactivé (si vous utilisez la fonction de menu Valider et attendez quelque chose).

Vous pouvez utiliser les préférences pour faire connaître votre schéma:

  • Ouvrir les préférences/Catalogue XML/Entrées spécifiées par l'utilisateur
  • Cliquez sur Ajouter ...
  • Entrez le fichier XSD à utiliser dans "Emplacement"
  • Sélectionnez le type de clé "Emplacement du schéma" (si vous avez un xsi: schemaLocation)
  • Entrez l'URL (deuxième partie de l'emplacement) correspondant au contenu du fichier sous la forme "Clé"
  • Appuyer sur OK
  • Accédez à la vue Problème et supprimez l'avertissement de validation.
  • Cliquez avec le bouton droit sur le fichier XML et choisissez à nouveau "Valider"

Certains identificateurs publics et emplacements de schéma sont déjà contenus dans les "Plugin Specified Entries" (surtout si vous avez installé WSTP). Pour ces espaces de noms, vous n'obtenez pas l'avertissement (car il utilise la copie fournie par le système pour valider).

5
eckes

dans Eclipse pour éviter les "no contraintes de grammaire (schéma dtd ou xml) détectées pour le document." J'utilise un fichier de schéma xsd dans le catalogue xml sous 

"Fenêtre\préférences\xml\catalogue x\Entrées spécifiées par l'utilisateur". 

Cliquez sur le bouton "Ajouter" à droite.


Exemple:

<?xml version="1.0" encoding="UTF-8"?>
<HolidayRequest xmlns="http://mycompany.com/hr/schemas">
    <Holiday>
        <StartDate>2006-07-03</StartDate>
        <EndDate>2006-07-07</EndDate>
    </Holiday>
    <Employee>
        <Number>42</Number>
        <FirstName>Arjen</FirstName>
        <LastName>Poutsma</LastName>
    </Employee>
</HolidayRequest>

À partir de ce xml, j'ai généré et enregistré un xsd sous: /home/my_user/xsd/my_xsd.xsd

En tant qu'emplacement: /home/my_user/xsd/my_xsd.xsd

Comme type de clé: nom de l'espace de noms

Comme clé: http://mycompany.com/hr/schemas


Fermez et rouvrez le fichier XML et faites quelques modifications pour violer le schéma, vous devriez en être averti.

3
user1374968

Ajoutez ceci à votre fichier XML dès le début: 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE RelativeLayout>

Changez RelativeLayout en votre mise en page racine définie , Puis recherchez le fichier xml dans le côté gauche, dans le dossier en forme, cliquez avec le bouton droit de la souris et sélectionnez Valider.

2
resw67

J'ai eu un peu de succès avec retour à la V1.4 de application.xsd . Si quelqu'un peut expliquer pourquoi la version de JavaEE ne fonctionne pas, je l'apprécierais.

<?xml version="1.0" encoding="UTF-8"?>
<application
  xmlns="http://Java.Sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://Java.Sun.com/xml/ns/j2ee
                      http://Java.Sun.com/xml/ns/j2ee/application_1_4.xsd"
  version="1.4">
2
cmcginty

Voici la solution de travail pour ce problème:

Étape 1: Faites un clic droit sur le projet et accédez aux propriétés

Étape 2: Accédez à «bibliothèques» et supprimez la «bibliothèque système JRE» du projet.

Étape 3: Cliquez sur 'Ajouter une bibliothèque' -> 'JRE System Library' -> sélectionnez 'Workspace default JRE'.

Étape 3: Cliquez sur "Commander et exporter" et marquez la "bibliothèque système JRE" récemment ajoutée.

Étape 4: actualiser et nettoyer le projet

Eureka! Ça marche :)

1
user2372633

Voici ce qui a fonctionné pour moi. J'utilisais des schémas sans numéro de version (par exemple spring-beans.xsd et non pas spring-beans-4.1.xsd) et ils ont probablement été mis à jour en amont. Je suppose que le problème était qu’Eclipse conservait un cache sale des anciennes versions.

Réparer :
1. Allez à Window -> Preference -> Network Connection -> Cache
2. Supprimez tous les schémas mis en cache.
3. Supprimez tous les problèmes no grammar constraints dans la vue Problème.
4. Validez à nouveau le projet.

1
Mobius

pour moi, ça a fonctionné comme un charme quand je l'ai coupé (ctrl a + ctrl - X) et que je l'ai sauvegardé (ctrl-s)! l'avertissement "Aucune contrainte de grammaire (schéma DTD ou XML) détectée pour le document" a disparu pour de bon !! 

0
Sheeba Nancy

Je viens d'avoir ce problème hier soir (en utilisant Eclipse V.kepler). Je suis complètement nouveau sur Java et Eclipse et j'essaie de m'apprendre à créer une application Android. Pendant que je travaillais sur les leçons proposées par developers.Android.com, j’avais saisi cela dans mon fichier main_activity_actions.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android" >

<!--  Search should appear as an action button -->
<item Android:id="@+id/action_search"
      Android:icon="@drawable/ic_action_search"
      Android:title="@string/action_search"
      Android:showAsAction="ifRoom"/>

</menu>

Cela m'a donné la même erreur que OP. J'ai essayé de suivre la suggestion d'ajouter

<!DOCTYPE project> 

juste en dessous de la première ligne et cela a résolu le problème.

0
d3sperad0

Ce qui a fonctionné pour moi est de cliquer avec le bouton droit de la souris sur le fichier XML dans l’arborescence (généralement à gauche dans Eclipse) et de cliquer sur le bouton de validation. Depuis lors, l'avertissement n'est jamais revenu.

0
WayneEra

Ce que j'ai trouvé a fonctionné pour moi a été de supprimer complètement l'attribut schemaLocation, puis de cliquer avec le bouton droit de la souris sur la vue hiérarchique et de modifier les espaces de noms, puis d'ajouter l'indice de localisation du schéma dans la boîte de dialogue résultante.

0
Developer Z

Solution pour Eclipse:

ajoutez <!DOCTYPE something> au début de chaque XML problématique, 

après la balise XML <?xml version="1.0" encoding="utf-8"?>

vous pouvez écrire n'importe quoi pour doctype, mais au fond c'est supposé être manifeste, activité, etc.

0
Amir.F

Cela peut être dû à vos paramètres de proxy .Voir this et this . Vous pouvez essayer de joindre javadoc par URL à une bibliothèque sans celui-ci. Si votre navigateur vous convient, mais pas dans votre éditeur, c'est un problème de connexion. J'ai résolu le même problème en demandant à l'administrateur les paramètres de proxy. Bien que toutes les autres applications fonctionnent, mais pas Eclipse, je devais donc entrer manuellement dans la configuration. Il serait bien que les développeurs ajoutent un bouton "vérifier la connexion" ...

0
pkopac