No grammar constraints (DTD or XML schema) detected for the document
Solution 1
I got rid of this annoying warning by specifying <!DOCTYPE xml>
after the <?xml ... >
tag instead of specifying something else (like templates
in your case).
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
Solution 2
This worked for me in Eclipse 3.7.1:
Go to the Preferences window, then XML -> XML Files -> Validation.
Then in the Validating files section of the preferences panel on the right, choose Ignore in the drop down box for the "No grammar specified" preference. You may need to close the file and then reopen it to make the warning go away.
Solution 3
Answer:
Comments on each piece of your DTD below. Refer to official spec for more info.
<!
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.
>
Simple Explanation:
An extremely basic DTD will look like the second line here:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE nameOfYourRootElement>
<nameOfYourRootElement>
</nameOfYourRootElement>
Detailed Explanation:
DTDs serve to establish agreed upon data formats and validate the receipt of such data. They define the structure of an XML document, including:
- a list of legal elements
- special characters
- character strings
- and a lot more
E.g.
<!DOCTYPE nameOfYourRootElement
[
<!ELEMENT nameOfYourRootElement (nameOfChildElement1,nameOfChildElement2)>
<!ELEMENT nameOfChildElement1 (#PCDATA)>
<!ELEMENT nameOfChildElement2 (#PCDATA)>
<!ENTITY nbsp " ">
<!ENTITY author "Your Author Name">
]>
Meaning of above lines...
Line 1) Root element defined as "nameOfYourRootElement"
Line 2) Start of element definitions
Line 3) Root element children defined as "nameOfYourRootElement1" and "nameOfYourRootElement2"
Line 4) Child element, which is defined as data type #PCDATA
Line 5) Child element, which is defined as data type #PCDATA
Line 6) Expand instances of
to  
when document is parsed by XML parser
Line 7) Expand instances of &author;
to Your Author Name
when document is parsed by XML parser
Line 8) End of definitions
Solution 4
The Real Solution:
add <!DOCTYPE something>
to the begining of each problematic XML,
after the xml tag <?xml version="1.0" encoding="utf-8"?>
you can write anything for doctype, but basically it's supposed to be manifest, activity, etc. from what I understand
Solution 5
Have you tried to add a schema to xml catalog?
in eclipse to avoid the "no grammar constraints (dtd or xml schema) detected for the document." i use to add an xsd schema file to the xml catalog under
"Window \ preferences \ xml \ xml catalog \ User specified entries".
Click "Add" button on the right.
Example:
<?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>
From this xml i have generated and saved an xsd under: /home/my_user/xsd/my_xsd.xsd
As Location: /home/my_user/xsd/my_xsd.xsd
As key type: Namespace name
As key: http://mycompany.com/hr/schemas
Close and reopen the xml file and do some changes to violate the schema, you should be notified
Related videos on Youtube
fastcodejava
I have been a Java programmer for a long time. Before Java, I had done some C/C++ and Fortran programming. I started an eclipse plugin project recently. I post my thoughts on technology/programming on my blog sometimes.
Updated on April 27, 2022Comments
-
fastcodejava about 2 years
I have this dtd : http://fast-code.sourceforge.net/template.dtd But when I include in an xml I get the warning : No grammar constraints (DTD or XML schema) detected for the document. The xml is :
<?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 : I changed the xml, I am getting this error now:
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)".
-
nav over 12 years
-
ChuongPham over 10 yearsI would NOT do this Preferences | XML | XML Files | Validation in Eclipse as this only mask/hide the error, it does not solve the error. If you only use Eclipse to build Android applications, then this "solution" is acceptable. But if you use Eclipse to build other Java projects - JSF, etc - it will break these projects if XML validation is "turned off". So be careful. The real solution is for Oracle, Google and IBM to update their softwares with updated DTDs and schemas.
-
Damon Smith almost 10 yearsI find eclipse far faster and less crash-prone if I keep one install for working on android apps and another one for doing java web development work. So I'd be happy to use the solution above just for my android ADT install of eclipse.
-
-
Sancao over 12 yearsThe parenthesis indicate that order is important. Your document has a allow-multiple-variation element after a class-pattern element, which is invalid.You really should change the question or accept an existing answer before asking a different one.
-
crowmagnumb almost 12 yearsI had to make sure that the "manual" box as well as the "build" box was checked and then do a manual validate by right-clicking on the project and selecting "Validate" for the warnings to go away. It seems that there is a bug in eclipse in which the validator gets messed up. You should be able to at least have the manual validation work even if you don't want it to happen at build time. And then you should be able to easily clear the warnings after doing the manual validation. Until then this is the solution.
-
djb almost 12 yearsThis worked for me, but with this change. I was editing a .wadl file (see w3.org/Submission/wadl ) and the examples there use . I was only able to get this to work by using just xmlns:xsi="w3.org/2001/XMLSchema-instance" xmlns:xsd="w3.org/2001/XMLSchema" xmlns="wadl.dev.java.net/2009/02" and not xsi:schemaLocation="wadl.dev.java.net/2009/02 wadl.xsd" as the examples on that Submission show. I added a catalog entry for the namespace name with wadl.dev.java.net/2009/02
-
Shashank Shekhar almost 11 yearsThe warning breaks intellisense and I spent quite a lot of time figuring what reason was. This resolved it :)
-
Stuart Leyland-Cole over 10 yearsYou can also do this on a project-by-project basis which makes the change in your .project file which you can check in source control and help your colleagues out! Instead of going to the Preferences window, right click on your project and go to Properties and follow the instructions above from there.
-
VikramV about 10 yearsI tried using your solution. But unfortunately, when I refresh and clean my project the newly added 'JRE System Library' disappears from my 'Libraries' section and also from my 'Order and Export' section. Please help.
-
silver over 9 yearsAgree. This should be the accepted answer. "Hiding" the warning is not exactly "solving" it.
-
Pup over 9 yearsIn the second line, "<!DOCTYPE xml>", "xml" should match the name of the document's root element.
-
Aaron Digulla over 7 yearsMost of this answer is unrelated to the question except for Step 4 "clean the project" which might (or might not) help.
-
Periata Breatta over 7 yearsDownvote: the question was how to get eclipse to perform validation on the dtd that the asker had, not how to eliminate the warning.
-
Periata Breatta over 7 yearsDownvote. The question asked is not how to hide the warning, but how to resolve it (i.e. make eclipse correctly validate the document)..
-
Eugene Gr. Philippov over 5 yearsWorked for me at Eclipse JEE v. 2018-12. The warning disappeared when I added two these lines to ant's build.xml
-
Mathias Zaja almost 5 yearsWorked fine for me (Eclipse Luna) Thanks
-
mike rodent almost 5 yearsDoesn't work. Eclipse 4.10, date 2019-05-31. Sometimes the warning goes away - but it comes back again when you relaunch Eclipse.
-
mike rodent almost 5 yearsDoesn't work. Eclipse 4.10, date 2019-05-31. Sometimes the warning goes away - but it comes back again when you relaunch Eclipse.
-
mvreijn almost 4 yearsTwo things: 1. your doctype declaration must match the root node name of the xml document. 2. The warning may persist until you perform explicit validation via right-click / Validate in the project explorer menu.
-
mvreijn almost 4 years@mikerodent The warning may persist until you perform explicit validation via right-click / Validate in the project explorer menu
-
mvreijn almost 4 yearsThe warning may persist until you perform explicit validation via right-click / Validate in the project explorer menu.