簡體   English   中英

如何修復 Eclipse 驗證錯誤“未檢測到文檔的語法約束”?

[英]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 文檔警告的另一種方法:

  1. 轉到菜單首選項,
  2. 在導航菜單中,即對話框的左框架中,選擇:XML > XML Files > Validation
  3. 在配置區域,即對話框的右側框架中,選擇:驗證文件 > 未指定語法 > 忽略(這是一個選擇框)默認設置為警告)

我不是專家,而是學習者。 我偶然發現了一個簡單而愚蠢的方法來解決這個問題。 你只需要做的是:

ctrl + shift + F (這是在 Eclipse 中格式化文件的快捷方式)

如果這不能解決問題,請在此特定行開頭TAB
?xml version="1.0" encoding="UTF-8"? 不是其他任何地方(我不知道為什么,但這有效。如果這里有人知道為什么我會很高興知道)

然后按ctrl + shift + F並保存。

警告會消失,至少對我來說,你可以自己嘗試......

如果出現此警告,則表示 XML 驗證函數(與 XML 實例編輯器不同!)不知道要應用什么 DTD 或 XSD。 這當然也意味着它實際上並沒有檢查 XML 實例是否符合任何模式。

因此,這是一個有用的警告,不應將其關閉(如果您使用“驗證”菜單功能並期望它執行某些操作)。

您可以使用首選項使您的架構為人所知:

  • 打開首選項/XML 目錄/用戶指定的條目
  • 點擊添加...
  • 輸入要在“位置”中使用的 XSD 文件
  • 選擇鍵類型“架構位置”(如果您有 xsi:schemaLocation)
  • 輸入與文件內容匹配的 URL(位置的第二部分)作為“密鑰”
  • 按確定
  • 轉到問題視圖並刪除驗證警告
  • 右鍵單擊 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

這可能是因為您的代理設置。 看到這個這個 您可以嘗試通過 URL 將 javadoc 附加到沒有它的庫。 如果在您的瀏覽器中可以,但在編輯器中不行,則是連接問題。 我通過向管理員詢問代理設置解決了同樣的問題。 盡管所有其他應用程序都可以工作,但 eclipse 沒有,所以我必須“手動”輸入配置。 如果開發人員添加一個按鈕“檢查連接”,那就太好了......

對我來說,當我剪下它(ctrl a + ctrl - X)並再次保存(ctrl-s)時,它就像一個魅力! 警告“沒有檢測到文檔的語法約束(DTD 或 XML 模式)”已經消失了!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM