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?
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.
Mettre cela au sommet de tout fichier fautif me convient:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE project>
C'est un autre moyen de désactiver les avertissements pour les documents XML qui intentionnellement n'ont pas de DTP ou de XSD:
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 ...
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:
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).
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.
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.
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">
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 :)
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.
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 !!
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.
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.
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.
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.
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" ...