![](/img/trans.png)
[英]Bogus Eclipse warning for web.xml: “No grammar constraints (DTD or XML schema) detected for the document.”
[英]How to fix Eclipse validation error “No grammar constraints detected for the document”?
Eclipse 3.5.2 拋出 XML 模式警告消息:
No grammar constraints (DTD or XML schema) detected for the document.
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>
我不想禁用警告。 如何讓 Eclipse 正確驗證 XML 文檔?
把它放在任何有問題的文件的頂部對我有用:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE project>
不確定您是否曾經滿意地解決了這個問題,但我今天在 Eclipse 3.6 中使用一些 Spring 配置文件時遇到了這篇文章。 無論如何,我無法在 Eclipse 的問題視圖中消除錯誤,直到我右鍵單擊問題並將其刪除。
我想如果我重新驗證它會回來並且實際上存在問題,但到目前為止還沒有。 問題是我有一個幾乎相同的 Spring 配置文件,但沒有顯示錯誤。
似乎有時東西會卡在 Eclipse 中。 不知道為什么,但在這與文件與編輯器不同步並且不得不強制刷新之間,我想我必須接受它。
這是關閉故意缺少 DTP 或 XSD 的 XML 文檔警告的另一種方法:
我不是專家,而是學習者。 我偶然發現了一個簡單而愚蠢的方法來解決這個問題。 你只需要做的是:
按ctrl + shift + F
(這是在 Eclipse 中格式化文件的快捷方式)
如果這不能解決問題,請在此特定行的開頭按TAB鍵?xml version="1.0" encoding="UTF-8"?
而不是其他任何地方(我不知道為什么,但這有效。如果這里有人知道為什么我會很高興知道)
然后按ctrl + shift + F
並保存。
警告會消失,至少對我來說,你可以自己嘗試......
如果出現此警告,則表示 XML 驗證函數(與 XML 實例編輯器不同!)不知道要應用什么 DTD 或 XSD。 這當然也意味着它實際上並沒有檢查 XML 實例是否符合任何模式。
因此,這是一個有用的警告,不應將其關閉(如果您使用“驗證”菜單功能並期望它執行某些操作)。
您可以使用首選項使您的架構為人所知:
一些公共標識符和模式位置已經包含在“插件指定的條目”中(特別是如果您安裝了 WSTP)。 對於那些命名空間,您不會收到警告(因為它使用系統提供的副本進行驗證)。
將此添加到您的 xml 文件的開頭:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE RelativeLayout>
將RelativeLayout更改為您定義的根布局,然后在左側找到 xml 文件,在布局文件夾中,右鍵單擊並選擇 Validate。
在 Eclipse 中,為了避免“檢測到文檔沒有語法約束(dtd 或 xml 架構) ” 。我用來將一個 xsd 架構文件添加到下的 xml 目錄中
“窗口\\首選項\\xml\\xml 目錄\\用戶指定的條目”。
單擊右側的“添加”按鈕。
示例:
<?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>
從這個xml我生成並保存了一個xsd:/home/my_user/xsd/my_xsd.xsd
作為位置:/home/my_user/xsd/my_xsd.xsd
作為鍵類型:命名空間名稱
作為關鍵: http : //mycompany.com/hr/schemas
關閉並重新打開 xml 文件並進行一些更改以違反架構,您應該收到通知。
回到 application.xsd 的 V1.4 時,我取得了一些成功。 如果有人能解釋為什么 JavaEE 版本不起作用,我將不勝感激。
<?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">
這對我有用。 我使用的模式沒有版本號(例如spring-beans.xsd
,而不是spring-beans-4.1.xsd
),它們可能在上游更新。 我認為問題是 Eclipse 保留了舊版本的臟緩存。
修復:
1. 轉到Window -> Preference -> Network Connection -> Cache
2. 刪除所有緩存的模式。
3. 刪除問題視圖中所有no grammar constraints
問題。
4. 重新驗證項目。
這是此問題的有效解決方案:
步驟1:右鍵單擊項目並轉到屬性
第 2 步:轉到“庫”並刪除項目的“JRE 系統庫”
第三步:點擊'Add library'-->'JRE System Library'-->選擇'Workspace default JRE'
步驟3:進入'Order and Export'並標記新添加的'JRE系統庫'
第 4 步:刷新並清理項目
尤里卡! 它的工作:)
Eclipse 的解決方案:
將<!DOCTYPE something>
添加到每個有問題的 XML 的開頭,
在 xml 標簽<?xml version="1.0" encoding="utf-8"?>
你可以為 doctype 寫任何東西,但基本上它應該是清單、活動等。據我所知
我昨晚剛遇到這個問題(使用 eclipse V.kepler)。 我對 java 和 eclipse 完全陌生,我正在嘗試自學如何制作 android 應用程序。 在我學習 developer.android.com 提供的課程時,我已將其輸入到我的 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>
這給了我與 OP 相同的錯誤。 我嘗試按照添加的建議
<!DOCTYPE project>
就在第一行下方,它解決了這個問題。
對我有用的是右鍵單擊樹中的 xml 文件(通常在 eclipse 的左側)並單擊驗證。 從那以后,警告再也沒有出現過。
我發現對我有用的是完全刪除 schemaLocation 屬性,然后在大綱視圖中右鍵單擊並轉到編輯命名空間,然后將架構位置提示添加到結果對話框中。
編輯 Spring 上下文文件,我發現明確設置 XSD 的版本會刪除警告:
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.1.9.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
上述解決方案均無效。 它適用於 Spring Boot 版本 2.1.0.RELEASE 但是當我使用 Spring Boot 版本 2.3.0.RELEASE 創建項目時,我開始得到
文檔問題中沒有引用語法約束(dtd 或 xml 架構) 。
我通過更新 Eclipse 版本來修復它,該版本也更新了 maven 版本。 就我而言,我使用的是紅帽開發人員工作室,因此,菜單->幫助->檢查更新,它將掃描並打開包含可用更新的更新窗口。 檢查與 Eclipse 版本相關的更新,然后單擊 Next->Next->Accept Terms->Finish 。
對我來說,當我剪下它(ctrl a + ctrl - X)並再次保存(ctrl-s)時,它就像一個魅力! 警告“沒有檢測到文檔的語法約束(DTD 或 XML 模式)”已經消失了!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.