Tidak ada batasan tata bahasa (skema DTD atau XML) yang terdeteksi untuk dokumen


202

Saya memiliki dtd ini: http://fast-code.sourceforge.net/template.dtd Tetapi ketika saya memasukkan dalam xml saya mendapatkan peringatan: Tidak ada kendala tata bahasa (skema DTD atau XML) terdeteksi untuk dokumen. Xml adalah:

<?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 : Saya mengubah xml, saya mendapatkan kesalahan ini sekarang:

Konten tipe elemen "template" harus cocok "(deskripsi, variasi?, Bidang-variasi?, Boleh-multi-variasi?, Pola-kelas?, Pengambil-setter?, Ekstensi file-diizinkan?, Jumlah-diperlukan- kelas?, templat-tubuh) ".


@ John - Ya ini gerhana.
fastcodejava


8
Saya TIDAK akan melakukan Preferensi ini | XML | File XML | Validasi di Eclipse karena ini hanya menutupi / menyembunyikan kesalahan, itu tidak menyelesaikan kesalahan. Jika Anda hanya menggunakan Eclipse untuk membangun aplikasi Android, maka "solusi" ini dapat diterima. Tetapi jika Anda menggunakan Eclipse untuk membangun proyek Java lainnya - JSF, dll - itu akan merusak proyek-proyek ini jika validasi XML "dimatikan". Jadi berhati-hatilah. Solusi sebenarnya adalah untuk Oracle, Google dan IBM untuk memperbarui perangkat lunak mereka dengan DTD dan skema yang diperbarui.
ChuongPham

Saya menemukan gerhana jauh lebih cepat dan lebih tidak mudah crash jika saya terus memasang satu untuk bekerja pada aplikasi android dan satu lagi untuk melakukan pekerjaan pengembangan web java. Jadi saya akan senang menggunakan solusi di atas hanya untuk menginstal gerhana ADT android saya.
Damon Smith

Jawaban:


409

Dalam kasus saya, saya telah memecahkan peringatan yang mengganggu ini dengan hanya menambahkan tanda <!DOCTYPE xml>setelah <?xml ... >tag.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>

10
Setuju. Ini harus menjadi jawaban yang diterima. "Menyembunyikan" peringatan itu bukan berarti "memecahkannya".
perak

31
Di baris kedua, "<! DOCTYPE xml>", "xml" harus cocok dengan nama elemen root dokumen .
Pup

Downvote: pertanyaannya adalah bagaimana mendapatkan gerhana untuk melakukan validasi pada dtd yang dimiliki si penanya, bukan bagaimana menghilangkan peringatan itu.
Periata Breatta

Tidak bekerja Eclipse 4.10, tanggal 2019-05-31. Terkadang peringatan hilang - tetapi kembali lagi ketika Anda meluncurkan kembali Eclipse.
mike rodent

Dua hal: 1. Deklarasi doctype Anda harus cocok dengan nama simpul akar dari dokumen xml. 2. Peringatan dapat tetap ada sampai Anda melakukan validasi eksplisit melalui klik kanan / Validasi di menu explorer proyek.
mvreijn

162

Ini bekerja untuk saya di Eclipse 3.7.1: Pergi ke jendela Preferensi, lalu XML -> File XML -> Validasi. Kemudian di bagian Memvalidasi file pada panel preferensi di sebelah kanan, pilih Abaikan di kotak tarik turun untuk preferensi "Tidak ditentukan tata bahasa". Anda mungkin perlu menutup file dan kemudian membukanya kembali untuk membuat peringatan hilang.

(Saya tahu pertanyaan ini sudah lama tetapi itu adalah pertanyaan pertama yang saya temukan saat mencari peringatan, jadi saya memposting jawabannya di sini untuk pencari lainnya.)


1
Saya harus memastikan bahwa kotak "manual" dan juga kotak "build" telah dicentang dan kemudian melakukan manual validasi dengan mengklik kanan pada proyek dan memilih "Validasi" untuk peringatan untuk pergi. Tampaknya ada bug dalam gerhana di mana validator akan kacau. Anda harus dapat setidaknya memiliki validasi manual berfungsi bahkan jika Anda tidak ingin itu terjadi saat membangun. Dan kemudian Anda harus dapat dengan mudah menghapus peringatan setelah melakukan validasi manual. Sampai saat ini solusinya.
crowmagnumb

1
Peringatan itu memecah intellisense dan saya menghabiskan banyak waktu untuk mencari tahu alasannya. Ini mengatasinya :)
Shekhar

Anda juga dapat melakukan ini berdasarkan proyek per proyek yang membuat perubahan pada file proyek Anda. Anda dapat memeriksa kontrol sumber dan membantu kolega Anda keluar! Alih-alih pergi ke jendela Preferensi, klik kanan pada proyek Anda dan pergi ke Properties dan ikuti instruksi di atas dari sana.
Stuart Leyland-Cole

2
Downvote. Pertanyaan yang diajukan bukanlah bagaimana menyembunyikan peringatan itu, tetapi bagaimana mengatasinya (yaitu membuat gerhana memvalidasi dokumen dengan benar) ..
Periata Breatta

34

Menjawab:

Komentar pada setiap bagian DTD Anda di bawah ini. Lihat spesifikasi resmi untuk info lebih lanjut.

  <!
  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.
  >

Penjelasan Sederhana:

DTD yang sangat mendasar akan terlihat seperti baris kedua di sini:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE nameOfYourRootElement>
<nameOfYourRootElement>
</nameOfYourRootElement>

Penjelasan detail:

DTD berfungsi untuk menetapkan format data yang disepakati dan memvalidasi penerimaan data tersebut. Mereka menentukan struktur dokumen XML, termasuk:

Misalnya

<!DOCTYPE nameOfYourRootElement
[
<!ELEMENT nameOfYourRootElement (nameOfChildElement1,nameOfChildElement2)>
<!ELEMENT nameOfChildElement1 (#PCDATA)>
<!ELEMENT nameOfChildElement2 (#PCDATA)>
<!ENTITY nbsp "&#xA0;"> 
<!ENTITY author "Your Author Name">
]>

Arti dari baris-baris di atas ...
Baris 1) Elemen root didefinisikan sebagai "nameOfYourRootElement"
Baris 2) Mulai definisi elemen
Baris 3) Elemen root anak-anak didefinisikan sebagai "nameOfYourRootElement1" dan "nameOfYourRootElement2"
Baris 4) Elemen anak, yang didefinisikan sebagai data Tipe#PCDATA
Jalur 5) elemen anak, yang didefinisikan sebagai tipe data #PCDATA
Line 6) Bentangkan contoh &nbsp;untuk &#xA0;saat dokumen-parsing oleh XML parser
Jalur 7) Bentangkan contoh &author;untuk Your Author Namesaat dokumen-parsing oleh XML parser
Jalur 8) Akhir definisi


21

Solusi Nyata:

Menambahkan <!DOCTYPE something> awal dari setiap XML yang bermasalah,

setelah tag xml <?xml version="1.0" encoding="utf-8"?>

Anda dapat menulis apa saja untuk DOCTYPE, tetapi pada dasarnya itu harus nyata, aktivitas, dll dari apa yang saya mengerti


Tidak bekerja Eclipse 4.10, tanggal 2019-05-31. Terkadang peringatan hilang - tetapi kembali lagi ketika Anda meluncurkan kembali Eclipse.
mike rodent

@mikerodent Peringatan dapat tetap ada sampai Anda melakukan validasi eksplisit melalui klik kanan / Validasi di menu proyek explorer
mvreijn

11

Sudahkah Anda mencoba menambahkan skema ke katalog xml?

dalam gerhana untuk menghindari "tidak ada kendala tata bahasa (skema dtd atau xml) terdeteksi untuk dokumen." saya gunakan untuk menambahkan file skema xsd ke katalog xml di bawah

"Jendela \ preferensi \ xml \ xml katalog \ Entri yang ditentukan pengguna".

Klik tombol "Tambah" di sebelah kanan.


Contoh:

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

Dari xml ini saya telah membuat dan menyimpan xsd di bawah: /home/my_user/xsd/my_xsd.xsd

Lokasi Sebagai: /home/my_user/xsd/my_xsd.xsd

Sebagai jenis kunci: Nama namespace

Sebagai kunci: http://mycompany.com/hr/schemas


Tutup dan buka kembali file xml dan lakukan beberapa perubahan untuk melanggar skema, Anda harus diberi tahu


Ini bekerja untuk saya, tetapi dengan perubahan ini. Saya mengedit file .wadl (lihat w3.org/Submission/wadl ) dan contoh yang digunakan. Saya hanya bisa menjalankan ini hanya dengan menggunakan xmlns: xsi = " w3.org/2001/XMLSchema-instance " xmlns: xsd = " w3.org/2001/XMLSchema " xmlns = " wadl.dev.java.net / 2009/02 "dan bukan xsi: schemaLocation =" wadl.dev.java.net/2009/02 wadl.xsd "sebagai contoh pada acara Pengiriman itu. Saya menambahkan entri katalog untuk nama namespace dengan wadl.dev.java.net/2009/02
djb

10

Tambahkan tag DOCTYPE ...

Pada kasus ini:

<!DOCTYPE xml>

Tambahkan setelah:

<?xml version="1.0" encoding="UTF-8"?>

Begitu:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>

Bekerja untuk saya di Eclipse JEE v. 2018-12. Peringatan itu hilang ketika saya menambahkan dua baris ini ke build.xml semut
Eugene Gr. Philippov

7

Cara bersih baru mungkin dengan menulis xml Anda seperti:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE rootElement>

<rootElement>
 ....
</rootElement>

Di atas berfungsi di Eclipse Juno +


Peringatan dapat tetap ada sampai Anda melakukan validasi eksplisit melalui klik kanan / Validasi di menu proyek explorer.
mvreijn

6

Bagi saya itu adalah masalah dengan pengkodean karakter dan unem filemode menjalankan gerhana di Windows:

Hanya menandai kode yang lengkap, memotong dan menempelkannya kembali (singkatnya: CtrlA-CtrlX-CtrlV ) dan semuanya baik-baik saja - tidak ada lagi peringatan "Tidak ada kendala tata bahasa ..."


6

Coba pahami saran yang diberikan dalam pesan peringatan, ini kadang membantu.

Saya juga memiliki masalah yang sama, setelah melakukan penelitian saya menemukan solusinya dan memperbaiki dengan menambahkan garis di bawah ini di awal

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>

yang mengarah ke beberapa masalah lain dalam kasus saya. Yang saya selesaikan dengan membaca saran, yang lagi-lagi berubah menjadi masalah lain, yang telah dipecahkan dengan memahami penyebab asli, bahwa tautan pertama terputus (tidak ditemukan). Di bawah ini adalah gambar langkah demi langkah yang menjelaskan apa yang telah dilakukan untuk menyelesaikan masalah sepenuhnya.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini


3

Saya tidak bisa mengatakan mengapa Anda mendapat peringatan "Tidak ada kendala tata bahasa ...", tapi saya bisa memprovokasi di Eclipse dengan sepenuhnya menghapus deklarasi DOCTYPE. Ketika saya mengembalikan deklarasi dan memvalidasi lagi, saya mendapatkan pesan kesalahan ini:

Konten tipe elemen "template" harus cocok "(deskripsi +, variasi?, Bidang-variasi?, Boleh-multi-variasi?, Pola-kelas?, Pengambil-setter?, Ekstensi file yang diizinkan?, Kerangka-badan +) .

Dan itu benar, saya percaya (elemen "nomor wajib kelas" tidak diperbolehkan).


Tanda kurung menunjukkan bahwa urutan itu penting. Dokumen Anda memiliki elemen boleh-gandakan-variasi setelah elemen pola-kelas, yang tidak valid. Anda benar-benar harus mengubah pertanyaan atau menerima jawaban yang ada sebelum mengajukan yang lain.
nitind

3

saya tahu ini sudah tua tapi saya melewati masalah yang sama dan menemukan solusi dalam dokumentasi pegas, konfigurasi xml berikut telah memecahkan masalah bagi saya.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx 

<!-- THIS IS THE LINE THAT SOLVE MY PROBLEM -->
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 

http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

sebelum saya meletakkan baris di atas sebagai saran dalam topik forum ini, saya memiliki pesan peringatan yang sama, dan menempatkan ini ...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>

dan itu memberi saya pesan peringatan berikut ...

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)".

jadi coba saja gunakan baris sugested dari konfigurasi xml saya.


2

Ini mungkin karena mematikan validasi dalam gerhana.


1

Memecahkan masalah ini di Eclipse 3.5.2. Dua tata letak yang benar-benar identik dengan yang satu memiliki peringatan. Tutup semua tab dan saat membuka kembali peringatan telah menghilang.


1
  1. salin seluruh kode Anda di notepad.
  2. sementara simpan file dengan nama apa pun [sambil menyimpan file gunakan "encoding" = UTF-8 (atau lebih tinggi tetapi UTF)].
  3. tutup file.
  4. buka lagi.
  5. salin tempel kembali pada kode Anda.

kesalahan harus hilang.


1

Saya menggunakan path relatif di xsi: noNamespaceSchemaLocation untuk menyediakan file xsd lokal (karena saya tidak bisa menggunakan namespace di xml contoh).

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="../project/schema.xsd">
</root>

Validasi berfungsi dan peringatan diperbaiki (tidak diabaikan).

https://www.w3schools.com/xml/schema_example.asp


1

Saya juga punya masalah yang sama dalam gerhana menggunakan file web.xml
itu menunjukkan kepada saya ini "tidak ada batasan tata bahasa yang direferensikan dalam dokumen"

tetapi dapat diatasi dengan menambahkan tag
setelah tag xml yaitu<?xml version = "1.0" encoding = "UTF-8"?>


Bekerja dengan baik untuk saya (Eclipse Luna) Terima kasih
Mathias Zaja

0

Inilah solusi untuk masalah ini:


Langkah 1: Klik kanan pada proyek dan pergi ke properti

Langkah 2: Buka 'perpustakaan' dan hapus 'perpustakaan sistem JRE' proyek

Langkah 3: Klik pada 'Tambah perpustakaan' -> 'JRE System Library' -> pilih 'WorkREace default JRE'

Langkah 3: Pergi ke 'Pesan dan Ekspor' dan tandai 'perpustakaan sistem JRE' yang baru ditambahkan

Langkah 4: Refresh dan Bersihkan proyek

Eureka! Bekerja :)


Saya mencoba menggunakan solusi Anda. Namun sayangnya, ketika saya menyegarkan dan membersihkan proyek saya, 'Perpustakaan Sistem JRE' yang baru ditambahkan menghilang dari bagian 'Perpustakaan' saya dan juga dari bagian 'Pesanan dan Ekspor' saya. Tolong bantu.
VikramV

Sebagian besar jawaban ini tidak terkait dengan pertanyaan kecuali untuk Langkah 4 "membersihkan proyek" yang mungkin (atau mungkin tidak) membantu.
Aaron Digulla

0

Apa yang saya temukan sebagai solusinya adalah sesuatu yang sangat sangat sederhana yang saya pikir Anda harus coba sebelum mengutak-atik preferensi. Dalam kasus saya, saya memiliki masalah ini dalam file string yang memiliki tag "sumber daya" dasar ... semua yang saya lakukan adalah menghapus tag dari atas dan bawah, membersihkan proyek, menyimpan file dan memasukkan kembali tag. Masalahnya telah hilang dan tidak pernah memberi saya peringatan. Mungkin terdengar sederhana untuk menjadi kenyataan tetapi hei, kadang-kadang hal paling sederhana yang memecahkan masalah. Bersulang


-1

Saya menghapus peringatan di tampilan masalah. Itu tidak kembali sampai sekarang.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.