Aucune contrainte grammaticale (DTD ou schéma XML) n'a été détectée pour le document.

j'ai cette dtd: http://fast-code.sourceforge.net/template.dtd Mais quand j'inclus dans un xml je reçois l'avertissement : Aucune contrainte grammaticale (DTD ou schéma XML) n'a été décelée pour le document. Le xml est:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE templates PUBLIC "//UNKNOWN/" "http://fast-code.sourceforge.net/template.dtd">

<templates>
<template type="INSTANCE_OF_CLASS">
    <description>Used to Create instance of class</description>
    <variation>asasa</variation>
    <variation-field>asasa</variation-field>
    <class-pattern>asasa</class-pattern>
    <getter-setter>setter</getter-setter>
    <allowed-file-extensions>java</allowed-file-extensions>
    <number-required-classes>1</number-required-classes>
    <allow-multiple-variation>false</allow-multiple-variation>
    <template-body>
        <![CDATA[
            // Creating new instance of ${class_name}
            final ${class_name} ${instance} = new ${class_name}();
            #foreach ($field in ${fields})
                ${instance}.${field.setter}(${field.value});
            #end
        ]]>
    </template-body>
</template>
</templates>

EDIT : j'ai changé le xml, je reçois cette erreur maintenant:

le contenu du type d'élément "template" doit correspondre "(description de la variation?la variation de champ?,permettre- de multiples-de la variation?,de la classe de modèle?,méthode getter / setter?,a permis de fichier extensions?le nombre requis- les classes?le modèle du corps)".

173
demandé sur bluish 2010-12-29 08:47:47

18 réponses

dans mon cas, j'ai résolu ce fâcheux avertissement en ajoutant simplement le <!DOCTYPE xml> après la balise <?xml ... > .

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
327
répondu Sabuj Hassan 2017-06-17 10:08:06

cela a fonctionné pour moi dans Eclipse 3.7.1: allez dans la fenêtre des Préférences, puis XML -> fichiers XML -> Validation. Ensuite, dans la section Validation des fichiers du panneau préférences sur la droite, choisissez Ignorer dans la boîte déroulante pour la préférence "aucune grammaire spécifiée". Vous devrez peut-être fermer le dossier et le rouvrir pour faire disparaître l'avertissement.

(je sais que cette question Est ancienne mais c'était la première que j'ai trouvé en cherchant sur l'avertissement, donc je poste la réponse ici pour d'autres chercheurs.)

158
répondu Marc Bernstein 2011-10-10 20:31:36

réponse:

commente chaque morceau de votre DTD ci-dessous. Se référer à spécification officielle pour plus d'informations.

  <!
  DOCTYPE ----------------------------------------- correct
  templates --------------------------------------- correct  Name matches root element.
  PUBLIC ------------------------------------------ correct  Accessing external subset via URL.
  "//UNKNOWN/" ------------------------------------ invalid? Seems useless, wrong, out-of-place.
                                                             Safely replaceable by DTD URL in next line.
  "http://fast-code.sourceforge.net/template.dtd" - invalid  URL is currently broken.
  >

Explication Simple:

une DTD extrêmement basique ressemblera à la deuxième ligne ici:

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

Explication Détaillée:

Les DTD

servent à établir des formats de données convenus et à valider la réception de telles données. Ils définissent la structure D'un document XML, y compris:

  • une liste d'éléments juridiques
  • caractères spéciaux
  • chaînes de caractères
  • et beaucoup plus

Par exemple:

<!DOCTYPE nameOfYourRootElement
[
<!ELEMENT nameOfYourRootElement (nameOfChildElement1,nameOfChildElement2)>
<!ELEMENT nameOfChildElement1 (#PCDATA)>
<!ELEMENT nameOfChildElement2 (#PCDATA)>
<!ENTITY nbsp "&#xA0;"> 
<!ENTITY author "Your Author Name">
]>

signification des lignes ci-dessus...

Ligne 1) élément racine défini comme "nameOfYourRootElement "

Ligne 2) Début des définitions des éléments

Ligne 3) élément racine enfants définis comme "nom de votre rootelement1 "et" nom de votre rootelement2 "

Ligne 4) élément enfant, défini comme le type de données #PCDATA

Ligne 5) élément enfant, qui est défini comme le type de données #PCDATA

Ligne 6) étendre les instances de &nbsp; à &#xA0; lorsque le document est analysé par XML parser

Ligne 7) étendre les instances de &author; à Your Author Name lorsque le document est analysé par L'analyseur XML

Ligne 8) fin des définitions

30
répondu Pup 2015-01-03 01:05:35

La Vraie Solution:

ajouter <!DOCTYPE something> au début de chaque problème XML,

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

vous pouvez écrire n'importe quoi pour doctype, mais fondamentalement, il est censé être manifeste, activité, etc. d'après ce que j'ai compris

20
répondu Amir.F 2013-10-10 12:47:10

Avez-vous essayé d'ajouter un schéma xml catalogue?

dans eclipse pour éviter les " Aucune contrainte grammaticale (DTD ou schéma xml) détectée pour le document."j'utilise pour ajouter un fichier de schéma xsd au catalogue xml sous

de la Fenêtre "\ préférences \ xml \ xml catalog \ spécifié par l'Utilisateur entrées".

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 sauvegardé un xsd sous: /home/my_user/xsd/my_xsd.xsd

, Comme l'Emplacement suivant: /home/my_user/xsd/my_xsd.xsd

comme type de clé: Namespace name

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


fermer et rouvrir le fichier xml et faire quelques changements pour violer le schéma, vous devriez être avisé

11
répondu user1374968 2012-05-31 14:09:42

une nouvelle façon propre pourrait être d'écrire votre xml comme ceci:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE rootElement>

<rootElement>
 ....
</rootElement>

Les travaux ci-dessus dans Eclipse Juno+

6
répondu Damilola 2014-08-15 11:33:29

ajouter étiquette DOCTYPE ...

dans ce cas:

<!DOCTYPE xml>

ajouter après:

<?xml version="1.0" encoding="UTF-8"?>

:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
6
répondu Jorge Bastida Cano 2017-07-14 09:00:06

pour moi, C'était un problème avec codage de caractères et unix filemode exécution eclipse sur Windows:

vient de marquer le code complet, découpé et collé en arrière (en bref: CtrlA-CtrlX-CtrlV ) et tout était bien - plus " aucune contrainte grammaticale..."mises en garde

5
répondu user3022856 2013-11-22 18:24:53

Je ne peux pas vraiment dire pourquoi vous obtenez le" pas de contraintes grammaticales..."attention, mais je peux le provoquer dans Eclipse en supprimant complètement la déclaration DOCTYPE. Quand je remets la déclaration et la valide à nouveau, je reçois ce message d'erreur:

modèle du contenu du type d'élément"" doit correspondre à "(description+,de la variation?la variation de champ?,laissez-multiples-de la variation?,de la classe de modèle?,méthode getter / setter?,a permis de fichier extensions?le modèle du corps+).

et c'est exact, je crois (l'élément" nombre-classes requises " n'est pas permis).

3
répondu mzjn 2010-12-29 19:07:03

je sais que c'est ancien, mais je suis en train de passer sur le même problème et j'ai trouvé la solution dans la documentation du printemps, la configuration xml suivante a été résolue pour moi.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx 

<!-- THIS IS THE LINE THAT SOLVE MY PROBLEM -->
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 

http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

avant que je mette la ligne ci-dessus comme suggéré dans ce thème de forum , j'ai le même message d'avertissement, et le placer...

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

et il me donne le message d'avertissement suivant...

The content of element type "template" must match "
(description,variation?,variation-field?,allow- multiple-variation?,class-
pattern?,getter-setter?,allowed-file-extensions?,number-required- 
classes?,template-body)".

alors essayez de utilisez les lignes suggérées de ma configuration xml.

3
répondu Wesley Silva 2017-07-26 18:55:28

cela peut être dû à l'arrêt de la validation dans eclipse.

2
répondu Chotka 2010-12-31 10:22:10

a résolu ce problème dans Eclipse 3.5.2. Deux totalement identique dispositions dont l'une avait l'avertissement. Fermé tous les onglets et lors de la réouverture de l'avertissement avait disparu.

1
répondu delformo 2011-10-17 19:43:09
  1. copiez votre code entier dans Bloc-notes.
  2. sauvegardez temporairement le fichier avec n'importe quel nom [tout en sauvegardant le fichier utilisez "encoding" = UTF-8 (ou plus élevé mais UTF)].
  3. fermez le fichier.
  4. ouvrez-le à nouveau.
  5. Copiez-le collez-le sur votre code.

l'erreur doit avoir disparu.

1
répondu masoom nazir sanadi 2016-01-15 14:26:51

Voici la solution de travail pour ce problème:


Étape 1: cliquez Droit sur le projet et allez dans les propriétés

Étape 2: Allez à "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: Allez à "commander et exporter" et marquez la nouvelle "bibliothèque système JRE "

Étape 4: rafraîchir et nettoyer le projet

Eureka! Ça fonctionne :)

0
répondu user2372633 2013-05-11 11:07:04

ce que j'ai trouvé être la solution était quelque chose de très très simple que je pense que vous devriez essayer avant de bricoler avec les préférences. Dans mon cas, j'ai eu ce problème dans un fichier strings qui avait comme étiquette de base "resources" ...tout ce que j'ai fait, c'est supprimer la balise du haut et du bas, nettoyer le projet, sauvegarder le fichier et réinsérer la balise. Le problème a disparu depuis et ne m'a jamais donné d'Avertissements. Ça peut sembler simple d'être vrai, mais parfois, c'est la chose la plus simple à résoudre. problème. Cheers

0
répondu Francesco D.M. 2014-12-10 13:51:02

j'ai utilisé un chemin relatif dans le xsi:noNamespaceSchemaLocation pour fournir le fichier XSD local (parce que je ne pouvais pas utiliser d'espace de noms dans l'instance xml).

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="../project/schema.xsd">
</root>
La Validation

fonctionne et l'avertissement est corrigé (Non ignoré).

https://www.w3schools.com/xml/schema_example.asp

0
répondu Max Hohenegger 2018-01-26 14:49:24

j'ai supprimé l'avertissement dans la vue de problèmes. Il n'est pas revenu jusqu'à maintenant.

0
répondu jantje 2018-05-18 21:23:15

moi aussi j'ai eu le même problème dans eclipse en utilisant web.fichier xml il m'a montré ce "pas de grammaire contraintes référencées dans le document"

mais il peut être résolu en ajoutant l'étiquette après la balise xml c'est à dire ""

0
répondu Syed Peera Saheb 2018-06-22 13:35:47