2013-03-23 29 views
2

我寫了一個XML指出,但在XMLon第一行,我得到一個錯誤包含的標記聲明中包含或文檔類型聲明必須得到很好的形成

的標記聲明或尖由文檔類型 聲明必須合式

下面

是XML(角括號後空間是故意的)

<?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> 

第一行(<?xml version="1.0" encoding="UTF-8"?>)正在拋出錯誤。

請讓我知道爲什麼我遇到這個問題。

+1

你的問題是一個簡單的錯字:**將'apche.org'改成'apache.org' **。你不會說什麼程序會給你那個錯誤。錯誤似乎來自Xerces,如果引用的DTD無效,則確實會拋出此錯誤。在瀏覽器中鍵入該URL,你會發現你得到了一些HTML,而不是DTD,所以Xerces對此抱怨正確。修正這個錯字,你就全都設置好了。 – Abel 2016-06-19 16:43:23

回答

0

我想這是因爲<?xml之間和?>之間的額外空間。

請注意,您似乎在doctype聲明的開始和結尾處還有額外的空格。

編輯

OK,我發現了其他兩個問題與您的文件:

  1. 看來你忘了「一」在DTD URI apache.org。
  2. 提供http://struts.apache.org/dtds/struts-2.0.dtd開始的DTD與XML 聲明(<?xml version="1.0" encoding="UTF-8"?>),這是在 開頭DTD的禁止(因爲DTD是 XML文件)。

如果第一個錯誤是造成問題的那個錯誤,那麼它將很容易修復。但是,第二個錯誤是在struts開發者方面。我想大多數XML解析器都會忽略它(否則struts團隊很早以前就會修復它),但是如果你有一個XML解析器會抱怨它,恐怕你唯一的選擇是切換到另一個解析器。

+0

這是因爲我無法發佈我的XML在這裏堆棧溢出 – user1928403 2013-03-23 15:20:40

+0

只是爲了張貼我的問題在這裏我故意給了那個空間,我也提到了問題。 感謝Etienne對它進行調查 – user1928403 2013-03-23 15:21:27

+1

噢好的。我編輯了問題以刪除這些空格。您應該用四個空格開始代碼塊的每一行,以便StackOverflow知道它的代碼並正確顯示它。 – 2013-03-23 15:26:47

0

當你創建一個DTD它總是包含線

<!DOCTYPE…. [ 
... 
]> 

只需刪除第一個和最後一行聲明DTD數據,因爲這些都只是你的XML文件中具有DTD時使用。