I have written one XML, but in that XMLon very first line I am getting an error
The markup declarations contained or pointed to by the document type
declaration must be well-formed
below is that XML (space after angular brackets is intentional)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apche.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="getTutorial" class="org.koushik.javabrains.action.TutorialAction">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
first line (<?xml version="1.0" encoding="UTF-8"?>
) is throwing the error.
Please let me know why I am hitting this issue.
I guess this is because of the extra spaces between <
and ?xml
and between ?
and >
.
Note that you also seem to have extra spaces at the begin and end of the doctype declaration.
Edit
OK, I found two other issues with your file:
- It seems you forgot the “a” in apache.org in the DTD uri.
- The DTD available at http://struts.apache.org/dtds/struts-2.0.dtd starts with an XML
declaration (
<?xml version="1.0" encoding="UTF-8"?>
), which is forbidden at the
beginning of a DTD (because a DTD is not an XML file).
If the first error is the one causing the trouble, it will be easy to fix. However, the second error is on the struts developers side. I guess most XML parsers ignores it (otherwise the struts team would have fixed it a long time ago), but if you have an XML parse that do complain about it, I’m afraid your only option is to switch to another one.
When you create a dtd it always contains the lines
<!DOCTYPE…. [
...
]>
Simply remove the first and last line declaring the DTD data, since those are only to be used when having the DTD within your XML file.